struts2学习:配置篇之namespace
来源:互联网 发布:什么是淘宝托管公司 编辑:程序博客网 时间:2024/05/04 04:05
把namespace单独拉出来讲一方面是因为它实际上不是一个element,而只是一个attribute,前面已经说了,它是package的一个attribute;另外一方面是因为这个属性是我接触Struts2的时候第一个研究的,印象很深,鉴于这两个原因我决定单独说一下它。
在struts1中是没有命名空间这个概念的,通过命名空间我们可以将所有的action配置划分为一个个逻辑单元,每个单元都有它自己的标识前缀。命名控件可以避免action命名的冲突。每个命名空间下有可以有一个叫做”help”的action,并且有着各自不同的实现,当然在同一个命名空间下最好是不要出现两个名字一样的action。当命名空间的前缀出现在浏览器的URI中时,标签会意识到命名空间,因此我们不必将命名空间嵌套在表单和链接中。
默认的命名空间是空字符串””,也就是不设置namespace属性时候的命名空间。我们在匹配一个action的时候,先到它指定的命名空间中去找,如果没有再到这个默认的命名空间中去找。Struts2还支持根命名空间(“/”),当一个request直接请求context path下面的资源时,struts2会首先到跟命名空间下去寻找匹配的action,例如请求是http://server/myapp/bar.action,那么我们首先会去”/”命名空间下去寻找这个action,下面给给出了一个namespace的样本:
<package name="default">
<action name="foo" class="mypackage.simpleAction>
<result name="success" type="dispatcher">greeting.jsp</result>
</action>
<action name="bar" class="mypackage.simpleAction">
<result name="success" type="dispatcher">bar1.jsp</result>
</action>
</package>
<package name="mypackage1" namespace="/">
<action name="moo" class="mypackage.simpleAction">
<result name="success" type="dispatcher">moo.jsp</result>
</action>
</package>
<package name="mypackage2" namespace="/barspace">
<action name="bar" class="mypackage.simpleAction">
<result name="success" type="dispatcher">bar2.jsp</result>
</action>
</package>
关于如何从URI映射到一个action中我做了一些测试,发现可以遵循如下的一条规则:
1.获得请求路径的URI,例如url是:http://server/myapp/path1/path2/path3/test.action
2.首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在
这个package中寻找名字为test的action,若找到则执行,否则报错;如果不存在这
个package则转步骤3;
3.寻找namespace为/path1/path2的package,如果存在这个package,则在这个package
中寻找名字为test的action,若找到则执行,否则报错;如果不存在这个package
则转步骤4;
4.寻找namespace为/path1的package,如果存在这个package,则在这个package中寻
找名字为test的action,若找到则执行,否则报错;如果仍然不存在这个package,
就去namaspace为空字符串的package下面去找名字为test的action,如果还是找不
到,页面提示找不到action。
这里有几点特殊的情况要说明一下,如下所示:
1.如果匹配到了多个package,比如上述流程中有多个namespace为/path1/path2/path3
的package,此时按照package出现的顺序从后向前的顺序查找action,直至找完为止。
2.如果在一个package中有多个name属性相同的action,那么执行追有一个action。比如上述流程中,有一个namespace为/path1/path2/path3的package,它里面含有多个名字为test的action,那么选择最后一个执行。
上面这几点是我通过多次测试总结出来的,不知道是否概括到了所有可能的情况,纰漏之处,还请指正。
- struts2学习:配置篇之namespace
- struts2学习:配置篇之namespace
- Struts2注解配置之@Namespace(四)
- Struts2注解配置之@Namespace(四)
- Struts2注解配置之@Namespace(四)
- Struts2注解配置之@Namespace(四)
- struts2(namespace配置)理解
- struts2之namespace
- Struts2学习笔记之package元素中的namespace搜索规则
- Struts2 学习笔记02 Namespace
- struts2 命名空间 namespace 学习
- Struts2学习:配置篇之配置文件
- Struts2学习:配置篇之静态内容
- Struts2学习:配置篇之异常映射
- struts2学习:配置篇之通配符映射
- struts2学习:配置篇之通配符映射
- struts2学习:配置篇之通配符映射
- Struts2学习:配置篇之配置文件
- 北大青鸟asp.net视频教程的下载地址
- windows 2000系统下安装PPPOE协议,使用adsl拔号上网
- Linux中的哲学思想
- 用windows media player打开mp3文件时提示,找不到指定模块;并且鼠标指向音乐文件时不能显示详细的文件信息,如位速等
- Eclipse 安装配置
- struts2学习:配置篇之namespace
- 为保护眼睛,建议电脑屏幕改为淡绿色
- JavaMail快速入门
- 取消共享中默认带有的“打印机和传真”图标
- pdf转doc的巧妙方法
- MVC用户认证web应用部分二
- 学会放弃
- Photoshop文字之——模仿书法字
- 用友ERP与腾讯RTX冲突的解决办法