struts2 namespace的搜索顺序

来源:互联网 发布:2016双十一大数据 编辑:程序博客网 时间:2024/05/29 04:17

(原创)访问路径:http://localhost:8080/项目名/namespace/动作名称(action的name);

1.只要访问路径中有了namespace,就要搜索struts.xml中的package标签里的namespace,看是否匹配(一层一层减少匹配)。

如果没有没有匹配的(每一段都不匹配),去默认的package(namespace = “”或 不写)中匹配,还没有就报错。

2.如果匹配到了namespace,进入package标签,在当前包中寻找动作名称。有就运行,没有就去默认的名称空间(namespace = "" 或 不写)找动作名称,默认的里面有就运行,没有就报错。

3.默认package的namespace是空字符串或不写这个属性。默认package可以自己定义,如果不定义,父类struts-defult.xml中有,但是父类的里面肯定没有相应的action。

—————————————————————————————————————————————————————————————————————————————


(转)假设访问的路径为http://localhost:8089/struts2/path1/path2/path3/test.action,访问过程如下:

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

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

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

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

可以理解为从里往外去找。


原创粉丝点击