struts2入门学习笔记(2) --struts2包己访问路径

 

Action配置的简单实例:

<package name="demo" namespace="/demo" extends="struts-default">
		<action name="HelloWorld" class="com.test.action.HelloWrold" >
			<result name="success">/WEB-INF/pages/hello.jsp</result>
		</action>
</package>

在Struts2中使用包来管理Action的,包的作用于java中包的作用非常类似,主要管理一族业务功能相关的action。在实际应用中,我们把一族业务功能相关的action放在同一个包下。

  (1)name属性:值可以任意取名,但是必须唯一。

          如果有其他包要继承该包,必须使用该属性名进行引用

  (2)namespace属性:定义包的命名空间,作用是作为访问路径的一部分,如上面的配置,如果访问HelloWorld,访问路径为:/demo/HelloWorld.action

   namespace 属性可以不配值,如果不配值,则该包使用默认的命名空间,默认空间名为“”(空字符串)

通常来说,每个包都应该继承struts-default包,因为Struts2很多核心功能都是拦截器来实现的。

 如:将请求参数封装到action,文件上传和数据校验等等都是通过拦截器实现的。

struts-default定义了这些拦截器和Result类型。只有当包继承了struts-default才能使用struts2提供的核心功能。

 struts-default包在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。struts-default.xml也是struts2的默认配置文件,在struts2启动时都会自动加载struts-default.xml文件。

2.Action名搜索路径

  1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action

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

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

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

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

3.Action配置中,个配置项的默认值

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

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

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

(内容来自网络,功学习参考)

猜你喜欢

转载自johnjobe.iteye.com/blog/1573301