Struts2学习笔记(三):Action名称的搜索顺序和默认值

假设我们的访问地址为:http://localhost:8080/struts2/test/helloworld,那么改成 http://localhost:8080/structs2/test/sdf/sfs/aaa/helloworld 还能访问到吗?

答案是YES

很奇怪,为什么呢?

让我们来看一下Action名称的搜索顺序

1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action

 

2.首先寻找namespace为/path1/path2/path3的package,如果不存在这个package则执行步骤3;如果存在这个package,则在这个package中寻找名字为test的action,当在该package下寻找不到action 时就会直接跑到默认namaspace的package里面去寻找action(默认的命名空间为空字符串“” ) ,如果在默认namaspace的package里面还寻找不到该action,页面提示找不到action

 

3.寻找namespace为/path1/path2的package,如果不存在这个package,则转至步骤4;如果存在这个package,则在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action

 

4.寻找namespace为/path1的package,如果不存在这个package则执行步骤5;如果存在这个package,则在这个package中寻找名字为test的action,当在该package中寻找不到action 时就会直接跑到默认namaspace的package里面去找名字为test的action ,在默认namaspace的package里面还寻找不到该action,页面提示找不到action

 

5.寻找namespace为/的package,如果存在这个package,则在这个package中寻找名字为test的action,当在package中寻找不到action或者不存在这个package时,都会去默认namaspace的package里面寻找action,如果还是找不到,页面提示找不到action

 

 

 我们再来看下action中的各项默认值:
        <action name="helloworld" class="com.jim.action.HelloWorldAction" method="execute" >
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>

1>如果没有为action指定class,默认是ActionSupport。

2>如果没有为action指定method,默认执行action中的execute() 方法。

3>如果没有指定result的name属性,默认值为success。

 所以如果我们写成:
        <action name="test">
<result>/WEB-INF/page/hello.jsp</result>
</action>
当我们访问test这个action时会自动跳转到下面那个jsp页面
posted @ 2011-12-08 22:34  一直在等  阅读(1049)  评论(1编辑  收藏  举报