Sturts2中Action的搜索顺序

时间:2023-03-09 19:20:41
Sturts2中Action的搜索顺序

http://localhost:8080/ProjectName/path1/path2/path3/XX.action

首先会判断以/path1/paht2/path3为namespace的package是否存在,

1.若存在,则检查该package下是否有name为XX的action,若有则执行,否则报错。

2.若不存在,判断其父路径即以/path1/path2为namespace的package是否存在,重复1或2步骤

直到在某package下找到name为XX的action。若namespace为" / "时仍未找到则报错

例如,struts.xml文件中配置的一个package如下:

<package name="testStruts" extends="struts-default" namespace="/aaa">
<action name="login" class="pkg.LoginAction">
<result name="success">/loginSuccess.jsp</result>
<result name="fail">/loginFail.jsp</result>
</action>
</package>

此时启动tomcat访问不同链接的响应如下:

Sturts2中Action的搜索顺序

Sturts2中Action的搜索顺序

Sturts2中Action的搜索顺序

Sturts2中Action的搜索顺序

此时没有namespace为/bbb/aaa和/bbb的package,所以会报错

修改namespace(默认为" / "):

<package name="testStruts" extends="struts-default">
<action name="login" class="pkg.LoginAction">
<result name="success">/loginSuccess.jsp</result>
<result name="fail">/loginFail.jsp</result>
</action>
</package>

Sturts2中Action的搜索顺序

Sturts2中Action的搜索顺序

Sturts2中Action的搜索顺序