- 簡單的介紹下Struts2中的幾個簡單的問題(namespace、action、以及path問題)
-
namespace(命名空間)
Namespace決定了action的訪問路徑,默認為“”,意味着可以訪問所有目錄下的/ass/sss/ss/index;囊括了所有package處理不了的action;
namespace可以寫成/,或是/xx、/xx/yy,對應action訪問路徑為/index.action,/xx/index.action或是/xx/yy/index.action
Package和namespace一般都是模塊名命名(package為了區分相同名字的action)
<constant name="struts.devMode" value="true" />
<!-- 聲明包 -->
<package name = "user" extends = "struts-default" namespace=”/user”>
<!-- 定義action -->
<action name="login01" class="ab.LoginAction01">
<result name="success">/success.jsp</result>
</action>
</package>
-
action的使用:(具體的action的實現可以是一個普通的java類,最常使用的是從ActionSupport繼承,好處就是直接使用Struts2封裝好的方法);
-
Class是實現action的java類的包名.類名;
<action name="login01" class="ab.LoginAction01">
-
public class LoginAction01 extends ActionSupport {
Public Sting execute(){
Return SUCCESS;
}
}
(xwork中的源碼ActionSupport)
-
過程圖:
3.path問題
Index.jsp中:<a href=”path/path.action”></a>
所以namespace=”/path”
注意:Struts2中的路徑問題是根據action的路徑而不是jsp路徑來確定,所以盡量不要使用相對路徑。
解決方法:就是統一使用絕對路徑 建議不要用redirect方法
指定basePath 默認加上項目的跟路徑
<%
String path=request.getContextPath();
String basePath=request.getScheme()+"://"+request.getServerNam()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath %>"> 在返回首頁的時候
-