struts2之struts.xml解读

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
	<!--  
	         编辑 struts.xml 文件: struts.xml 文件是对 struts 应用程序里的 Action  进行配置的地方
	         
	   1   配置 package 元素      
	   
	   1.1 Struts2 把各种 action 分门别类地组织成不同的包. 可以把包想象为一个模块. 一个典型的 struts.xml 文件可以有一个或多个包
	   1.2   每个 package 元素都必须有一个 name 属性. 该 name 属性可被其它 package 引用
	   1.3 namespace 属性是可选的, 如果它没有给出, 则以 “/” 为默认值. 若 namespace 有一个非默认值, 则要想调用这个包里的Action, 就必须把这个属性所定义的命名空间添加到有关的 URI 字符串里
	   1.4 package 元素通常要对 struts-default.xml 文件里定义的 struts-default 包进行扩展. 这么做了以后, 包里的所有动作就可以使用在 struts-default.xml 文件里的结果类型和拦截器了. 
	   
	   2   配置 action 元素
	   
	   2.1   每个 action 都必须有一个 name 属性, 该属性和用户请求 servletPath 之间存在着一一对应关系
	   2.2 action 元素嵌套在 package 元素内部, 它表示一个 Struts请求. 
	   2.3 action 元素的 class 属性是可选的. 如果没有配置 class 属性, Struts 将把 com.opensymphony.xwork2.ActionSupport 作为其默认值.  如果配置了 class 属性, 还可以使用 method 属性配置该类的一个动作方法. method 属性的默认值为 execute 
	   
	   3   配置 result 元素
	   
	   3.1 result 元素 <action> 的一个子元素, 它告诉 struts 在完成动作后把控制权转交到哪里. result 元素(的name 属性)对应着 Action 方法的返回值. 因为动作方法在不同情况下可能返回不同的值, 所以同一个 action 元素可能会有多个 result 元素
	   3.2 result 元素的 name 属性建立 <result> 和 Action 方法返回值之间的映射关系。name 属性的默认值为 “success”
	   3.3 result 元素的 type 属性负责指定结果类型. type 属性的值必须是在包含当前包或者是当前包的父包里注册过的结果类型. type 属性的默认值为 dispatcher
	   
		package: 包. struts2 使用 package 来组织模块. 
		name 属性: 必须. 用于其它的包应用当前包. 
		extends: 当前包继承哪个包, 继承的, 即可以继承其中的所有的配置. 通常情况下继承 struts-default
		         struts-default 这个包在 struts-default.xml 文件中定义.
		namespace 可选, 如果它没有给出, 则以 / 为默认值. 
		                        若 namespace 有一个非默认值, 则要想调用这个包里的Action, 
		                        就必须把这个属性所定义的命名空间添加到有关的 URI 字符串里
		                        
		        http://localhost:8080/contextPath/namespace/actionName.action
	-->
    <package name="helloWorld" extends="struts-default">
    	
    	<!-- 
    		配置一个 action: 一个 struts2 的请求就是一个 action 
    		name: 对应一个 struts2 的请求的名字(或对一个 servletPath, 但去除 / 和扩展名), 不包含扩展名
    		class 的默认值为: com.opensymphony.xwork2.ActionSupport
    		method 的默认值为: execute
    		result: 结果. 
    	-->
    	<action name="product-input" class="com.opensymphony.xwork2.ActionSupport" method="execute">
    		<!--  
    			result: 结果. 表示 action 方法执行后可能返回的一个结果. 所以一个 action 节点可能会有多个 result 子节点.
    			多个 result 子节点使用 name 来区分
    			name: 标识一个 result. 和 action 方法的返回值对应. 默认值为 success
    			type: 表示结果的类型. 默认值为 dispatcher(转发到结果.)
    		-->
    		<result name="success" type="dispatcher">register.jsp</result>
    	</action>
    	
    	<action name="product-save" class="org.rabbitx.web.struts2.register.Product" method="save">
    		<result name="details">details.jsp</result>	
    	</action>
    	
    	<action name="test" class="com.atguigu.struts2.helloworld.Product" method="test">
    		<result>/test.jsp</result>
    	</action>
    	
    </package>
</struts>

 备注:

1. Struts2会把请求中的参数自动注入到Action对应的属性中。

猜你喜欢

转载自ihuning.iteye.com/blog/2232888