首页 > 代码库 > Struts2——namespace、action、以及path问题
Struts2——namespace、action、以及path问题
- 简单的介绍下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=http://www.mamicode.com/"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=http://www.mamicode.com/”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=http://www.mamicode.com/"<%=basePath %>"> 在返回首页的时候
-
Struts2——namespace、action、以及path问题