Struts2 通过配置struts.xml中的actio标签name属性值来与请求路径映射
默认情况下Struts2 通过配置struts.xml中的package标签 namespace属性
值来与请求路径映射的。
通过以下几步就可以修改这个默认设定
1 在dafult.properties (struts-core.jar)
中找到[struts.enable.SlashesInActionNames = false]后,在class 目录下新建
struts.properties文件,并修改:[ struts.enable.SlashesInActionNames = true]
2设定struts.xml
<package name="xuxl1" extends="struts-default">
<action name="test1/test1" class="xuxl.struts.action.Test1">
<result name="success">/test1.jsp</result>
</action>
</package>
<package name="xuxl2" extends="struts-default" namespace="/test2">
<action name="test2" class="xuxl.struts.action.Test2">
<result name="success">/test2.jsp</result>
</action>
</package>
注意:action标签 name属性["test1/test1"]不能以[/]开头
package标签 namespace属性["/test2 "]要 [/]开头。(参照root namespace文档)
原因 struts [package标签 namespace属性值]+[/] +[ackage标签 namespace属性值]和 请求路径匹配后,来调用对应action
假设请求路径如下
String path = request.getContextPath();
<a href="<%=path%>/test1/test11/test1.action">test1</a><br>
那么struts.xml进行如下设置 便可以匹配到请求
<package name="xuxl1" extends="struts-default" namespace="/test1">
<action name="test11/test1" class="xuxl.struts.action.Test1">
<result name="success">/test1.jsp</result>
</action>
</package>