一、Action名称的搜索顺序
1、获得请求的URI,例如ul是:http://server/struts2/path1/path2/path3/test.action
2、首先寻找namespace为/path1/path2/path3的package,如果不存在这个package则执行步骤3;如果存在这个package,则在这个package中寻找名字为test的action,当在该package下寻找不到action时就会跑到默认namespace的package里面寻找action(默认的命名空间为空字符串),如果在默认namespace的package里面还寻找不到该action,页面提示找不到action
3、寻找namespace为/path1/path2的package,如果不存在这个package,则转到步骤4;如果存在这个package,则在这个package中寻找为test的action,当在该package下寻找不到action时就会跑到默认namespace的package里面寻找action(默认的命名空间为空字符串),如果在默认namespace的package里面还寻找不到该action,页面提示找不到action。
4、寻找namespace为/path1的package,如果不存在这个package则执行步骤5,如果存在这个package,则在这个package中寻找为test的action,当在该package下寻找不到action时就会跑到默认namespace的package里面寻找action(默认的命名空间为空字符串),如果在默认namespace的package里面还寻找不到该action,页面提示找不到action。
5、寻找namespace为/的package,如果存在这个package,则在这个package中寻找名字为test的action,当在package中寻找不到action或者不存在该package时,都会去默认的namespace的package里面寻找action,如果还找不到,页面提示找不到action。
二、Action配置中的各项默认值
<package name="itcast" namespace="/test" extends="struts-default">
<action name="helloworld" class="cn.itcast.action.HelloWorldAction" method="execute">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
1、如果配置中没有为action指定class,默认是ActionSupport
2、如果没有为Action指定method,默认执行Action中的execute方法
3、如果没有指定result的name属性,默认值为success