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>