首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

struts2命名空间与访问途径

2012-09-24 
struts2命名空间与访问路径比如项目deom的struts.xml中有如下片段package namedemo extendsstruts-d

struts2命名空间与访问路径

比如项目deom的struts.xml中有如下片段

<package name="demo" extends="struts-default">         <action name="demo"             <result>/demo.jsp</result>         </action> </package> 


???? ?我们可以用http://localhost:8080/demo/demo.action路径来访问action demo
也可以用http://localhost:8080/demo/***/demo.action路径来访问该action?
????? 上述路径中,http://localhost:8080/demo用来找到我们的demo project,之后的路径用来找到我们位于某一命名空间下的某一action。在struts中,我们的package继承了struts-default,也就拥有了struts的根空间,在这里我们没有指明namespace属性,但其实此时我们的namespace属性相当于namespace="",或者namespace="/"。
???? ?当我们用http://localhost:8080/demo/demo.action时,由于我们没有指定命名空间,struts直接在根空间中寻找name=demo的action,根空间有这个action,所以我们能访问。
????? 当我们用http://localhost:8080/demo/***/demo.action时,struts首先在namespace=***的package中寻找,没有找到。此时struts继续在根空间里寻找,找到了,所以我们还是可以访问。
???? ?如果我们做如下设置,即将<package name="demo" extends="struts-default"> 中添加namespace="/demo"属性,修改为"]<package name="demo" extends="struts-default" namespace="/demo"> ,此时,我们只有用http://localhost:8080/demo/demo/demo.action路径才能访问到该action了,如果再用http://localhost:8080/demo/abc/demo.action或其他路径,就会出现异常。因为此时struts首先在命名空间为abc中寻找,如果没有找到,会继续在根空间寻找,而现在根空间已经没有名为demo的action了。
????? 这就是我理解的struts2的命名空间和访问路径间的关系。

?

热点排行