对struts.xml中属性的分析

本章分析struts2中struts.xml某些属性的具体含义

先给出上章Struts2简单构建中的struts.xml的代码

[html]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  5.   
  6. <struts>  
  7.       
  8.     <package name="wul" namespace="/" extends="struts-default">  
  9.       
  10.         <action name="product-input" class="com.opensymphony.xwork2.ActionSupport" method="execute">  
  11.             <result>/WEB-INF/pages/input.jsp</result>  
  12.         </action>  
  13.           
  14.         <action name="product-save" class="com.wul.strust2.helloworld.Product" method="save">  
  15.             <result name="details">/WEB-INF/pages/details.jsp</result>  
  16.         </action>  
  17.           
  18.     </package>  
  19.   
  20. </struts>  


package:  包,struts2使用package,来组织模块

name 属性: 必须,用于其它的包引用当前包


extends :当前包继承哪个包,继承的,即可以继承其中所有的配置,通常情况下继承struts-default ,struts-default这个包在struts-default.xml文件中定义 


namespace="/Java"的话,请求要在servletPath前加/java :  http://localhost:8080/contextPath/namespace/actionName.action


action: 一个struts2的请求就是一个action

name:对应一个struts2的请求的名字(或对一个servletPath,但去除‘/’和扩展名),不包含拓展名

class 的默认值为:com.opensymphony.xwork2.ActionSupport

method:的默认值为:execute  , 可以自定义方法,如”product-save“action中的save方法

result:结果,表示action方法执行后可能返回的一个结果,所以一个action节点可能会有多个result子节点,多个result子节点使用name来区分
name:标识一个result,和action方法的返回值相对应,默认值为success

type:表示结果的类型,默认值是dispatch

result的type的属性值在struts-default包的result-types节点的那么属性中定义,常用的有
>dispatcher(默认的) 转发,同servlet中的转发

>redirect  重定向

>redirectAction 重定向到一个action

>chain 转发到一个action 

重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域

转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起

下面给一个不同result的type的实例

TestAction.java

[java]  view plain  copy
 print ?
  1. package com.zucc.wul.cn.action;  
  2.   
  3. public class TestAction {  
  4.     public String execute(){  
  5.         System.out.println("TestAction's execute....");  
  6.         return "success";  
  7.     }  
  8. }  

TestResultAction.java

[java]  view plain  copy
 print ?
  1. package com.zucc.wul.cn.action;  
  2.   
  3. public class TestResultAction {  
  4.     private int number;   
  5.       
  6.     public int getNumber() {  
  7.         return number;  
  8.     }  
  9.     public void setNumber(int number) {  
  10.         this.number = number;  
  11.     }  
  12.   
  13.     public String execute(){  
  14.         String result=null;  
  15.         //根据请求参数number的值,返回对应的JSP页面  
  16.         //1.若number除以3余0,返回success.jsp页面  
  17.         if(number ==  0)  
  18.             result = "success";  
  19.         //2.若number除以3余1,返回login.jsp页面  
  20.         if(number ==  1)  
  21.             result = "login";  
  22.         //3.若number除以3余2,返回index.jsp页面  
  23.         if(number ==  2)  
  24.             result = "index";  
  25.         if(number ==  3)  
  26.             result = "index2";  
  27.         return result;  
  28.     }  
  29. }  
index.jsp

[html]  view plain  copy
 print ?
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  7. <title>Hello</title>  
  8. </head>  
  9. <body>  
  10.     <a href="product-input.action">Product Input</a>  
  11. </body>  
  12. </html>  
Register.jsp

[html]  view plain  copy
 print ?
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10.     <form action="testResult">  
  11.         <input type="text"  name="number"/>  
  12.         <input type="submit" value = "submit"/>   
  13.     </form>  
  14.       
  15. </body>  
  16. </html>  
Success.jsp

[html]  view plain  copy
 print ?
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10.     注册成功  
  11. </body>  
  12. </html>  
Fail.jsp

[html]  view plain  copy
 print ?
  1. <%@ page language="java" contentType="text/html; charset=utf-8"  
  2.     pageEncoding="utf-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10.     注册失败  
  11. </body>  
  12. </html>  

web.xml

struts.xml

[html]  view plain  copy
 print ?
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE struts PUBLIC    
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">    
  5.   
  6. <struts>    
  7.     <include file="struts-default.xml" />    
  8.       
  9.     <package name="default" extends="struts-default">  
  10.         <action name ="testResult" class="com.zucc.wul.cn.action.TestResultAction">  
  11.             <result name="success" type="dispatcher">/Success.jsp</result>  
  12.             <result name="login" type="redirect">/Fail.jsp</result>  
  13.               
  14.         <!--                   
  15.             <result name="index" type="redirectAction">  
  16.                 <param name="actionName">testAction</param>  
  17.                 <param name="namespace">/atguigu</param>  
  18.             </result>  
  19.         -->  
  20.         <!--通过redirect的响应类型也可以便捷的实现redirectAction的功能 -->    
  21.         <result name="index" type="redirect">/atguigu/testAction.action</result>  
  22.               
  23.              <!-- 转发到一个action只能这样写 -->  
  24.             <result name="index2" type="chain">  
  25.                 <param name="actionName">testAction</param>  
  26.                 <param name="namespace">/atguigu</param>  
  27.             </result>  
  28.               
  29.         </action>       
  30.     </package>  
  31.       
  32.       
  33.     <package name="testPackage" namespace="/atguigu" extends="struts-default">  
  34.         <action name="testAction" class="com.zucc.wul.cn.action.TestAction">  
  35.             <result>/Success.jsp</result>  
  36.         </action>  
  37.     </package>  
  38.       
  39. </struts>  
redirectAction 重定向到一个action ,需额外在定义一个package,其方法可以到struts/docs/docs/home.html里查询

注意,在result不同type的写法中,通过redirect的响应类型也可以便捷的实现redirectAction的功能,但转发到一个action只能这样写


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值