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

转发:http://blog.csdn.net/menghuannvxia/article/details/47169991


假设我的struts.xml配置文件中一个action配置如下:

  1. <package name="/user" extends="struts-default">  
  2.         <action name="testMap" class="com.sh.action.MapAction" method="testMap">  
  3.             <result name="success">/index.jsp</result>          
  4.         </action>  
  5.     </package>  

那么我直接可以通过http://localhost:8089/struts2/testMap.action进行访问,这个的访问过程是这样的,在没有定义namespace的时候,由于在struts中,我们的package继承了struts-default,也就拥有了struts的根空间,在这里我们没有指明namespace属性,但其实此时我们的namespace属性相当于namespace="",或者namespace="/"。由于我们没有指定命名空间,struts直接在根空间中寻找name=testMap的action,根空间有这个action,所以我们能访问。

假设配置文件中action配置中加入了namespace属性值,如下:

  1. <package name="/user" extends="struts-default" namespace="/test">  
  2.     <action name="testMap" class="com.sh.action.MapAction" method="testMap">  
  3.         <result name="success">/index.jsp</result>        
  4.     </action>  
  5.    </package>  

那么我们必须通过http://localhost:8089/struts2/test/testMap.action这个路径进行访问,如果再用http://localhost:8089/struts2/a/testMap.action或其他路径,就会出现异常。因为此时struts首先在命名空间为test中寻找,如果没有找到,会继续在根空间寻找,而现在根空间已经没有名为demo的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。

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

Action配置中,配置项的默认值

 1.如果没有指定Action的class,默认值为ActionSupport。

 2.如果没有指定Action的method属性,默认值为execute()方法。

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

struts配置文件中包的使用说明在Struts2中使用包来管理Action的,包的作用于java中包的作用非常类似,主要管理一族业务功能相关的action。在实际应用中,我们把一族业务功能相关的action放在同一个包下。
发布了26 篇原创文章 · 获赞 19 · 访问量 12万+
展开阅读全文

struts2 namespace问题

06-08

各位兄台,我做一个struts2.0的小例子,但对其中的namespace却大为不解,以下是我的情况。请各位指点一下。 <br /> <br />情况: <br /> 1.建立两个同名的welcomeAction,放在不同的namespace下。 <br /> 2.在welcome.jsp下有两个button,调用不同的action <br /> 3.action文件没有问题,就是在点击的时候找不到我的action。 <br /> <br />请大家帮忙解答一下。 <br /> <br /><pre name="code" class="java"> <package name="web" namespace ="/wt" extends="struts-default" > <action name="WelcomeAction" class="com.web.WelcomeAction"> <result name="success">/jsp/welcome.jsp</result> </action> </package> <package name="log" namespace="/lg" extends="struts-default"> <action name="WelcomeAction" class="com.log.WelcomeAction"> <result>jsp/log.jsp</result> </action> </package> </pre> <br />------------------------------welcome.jsp------------------------------- <br /><pre name="code" class="java"><s:form > <s:textfield id="userName" label="HAHAHA"></s:textfield> <s:textfield id="passWord"></s:textfield> <s:submit action="/wt/WelcomeAction">去WEB</s:submit> <s:submit action="/lg/WelcomeAction">LOG</s:submit> </s:form></pre> <br /><pre name="code" class="java"> ---------------------log.jsp------------------------- <s:property value="userName"/></BR> <s:property value="password"/></br> </pre> <br /> <br /> <br /> <br />警告: No configuration found for the specified action: '/welcome.jsp' in namespace: '/jsp'. Form action defaulting to 'action' attribute's literal value. <br />2010-6-8 9:51:37 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn <br />警告: No configuration found for the specified action: '/welcome.jsp' in namespace: '/jsp'. Form action defaulting to 'action' attribute's literal value.<br/><strong>问题补充</strong><br/>1.如楼上所说,有相应的目录。 <br />2./jsp也不好用 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览