关闭

struts2学习:配置篇之namespace

468人阅读 评论(0) 收藏 举报
分类:

转载自:http://blog.csdn.net/cmtobby/article/details/1775190

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/path3package,如果存在这个package,则在  

   这个package中寻找名字为testaction,若找到则执行,否则报错;如果不存在这

   package则转步骤3

3.寻找namespace/path1/path2package,如果存在这个package,则在这个package  

   中寻找名字为testaction,若找到则执行,否则报错;如果不存在这个package

   则转步骤4

4.寻找namespace/path1package,如果存在这个package,则在这个package中寻

   找名字为testaction,若找到则执行,否则报错;如果仍然不存在这个package

   就去namaspace为空字符串的package下面去找名字为testaction,如果还是找不

   到,页面提示找不到action

这里有几点特殊的情况要说明一下,如下所示:

1.如果匹配到了多个package,比如上述流程中有多个namespace/path1/path2/path3

package,此时按照package出现的顺序从后向前的顺序查找action,直至找完为止。

2.如果在一个package中有多个name属性相同的action,那么执行追有一个action。比如上述流程中,有一个namespace/path1/path2/path3package,它里面含有多个名字为testaction,那么选择最后一个执行。

    上面这几点是我通过多次测试总结出来的,不知道是否概括到了所有可能的情况,纰漏之处,还请指正。


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

struts2命名空间namespace和访问路径的关系

我是在看了别人的博客之后,对namespace和访问路径的关系算是搞明白了,故记录下来供大家参阅和自己以后进行查看。 假设我的struts.xml配置文件中一个action配置如下: ...
  • menghuannvxia
  • menghuannvxia
  • 2015-07-31 14:56
  • 8904

struts2的路径和namespace问题

一个名为 myStruts2_0400_Path 项目里的struts.xml文件中有这样一个package配置:    package name="path" extends=...
  • u013246459
  • u013246459
  • 2017-02-22 16:05
  • 150

struts2通配符的应用以及action、result、package的name和namespace属性同名时的处理方法

1.对于同一个下两个name属性相同的,struts2是这样处理的,后面的将覆盖前面的 2.对于同一个下两个name属性相同的,struts2是这样处理的,后面的将覆盖前面的 3.配置文件...
  • sunshine_love
  • sunshine_love
  • 2013-01-31 14:27
  • 2648

Struts2:配置Action——包和命名空间

本文摘自 李刚 《Java EE 企业应用实战》     实现了Action处理类之后,就可以在struts.xml文件中配置该Action了。所谓配置Action就是指定让stru...
  • qq_16769857
  • qq_16769857
  • 2015-09-19 16:58
  • 3332

struts2.1.8解决请求寻找namespace路径顺序

昨天看了李刚的strurt2的书籍,在namespase中发现他的理解问题,实践出真知 原文如下: 现在,我们看下我的struts.xml <!DOCTYPE struts PUBLIC "...
  • ldw4033
  • ldw4033
  • 2014-01-18 10:01
  • 869

关于struts2的namespace=“”和namespace=“/”的思考

一直以为struts2的struts.xml文件如果包的namespace
  • hcysoul
  • hcysoul
  • 2014-08-13 21:23
  • 414

Struts2学习笔记——Namespace

namespace决定了action的访问路径,默认为"",可以接收所有路径的action namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index...
  • ps_zhanglei
  • ps_zhanglei
  • 2014-12-11 10:16
  • 260

关于struts2的namespace属性,在地址栏里直接访问action的方法 ,以及用一个jsp的表单跳到上面去

这里的form
  • u013803262
  • u013803262
  • 2014-11-24 14:30
  • 1648

我的2014个人总结——学习篇、工作篇、生活篇

2013的个人总结在我印象当中是写过的,2014已成为过去,当我想回过头来看看我2013年的总结时,奈何我已不知它的踪迹了,所以决定以后的个人总结还是以博客的形式记录吧!平静下来,该是好好总结这一年各...
  • qq710262350
  • qq710262350
  • 2015-01-18 10:09
  • 1492

Struts2 学习笔记 —— 02 —— Namespace

Struts到底干什么用的 —— 把请求跟视图分开 Namespace是命名空间 namespace决定了action的访问路径,默认为"",可以接收所有路径的action na...
  • rnclcl
  • rnclcl
  • 2014-01-10 16:08
  • 807
    个人资料
    • 访问:1697286次
    • 积分:20999
    • 等级:
    • 排名:第433名
    • 原创:201篇
    • 转载:1111篇
    • 译文:2篇
    • 评论:202条
    程序员日记
    微信扫描关注我!
    个人淘宝
    博客专栏