博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2 中action之间的跳转(分享)
阅读量:6831 次
发布时间:2019-06-26

本文共 3476 字,大约阅读时间需要 11 分钟。

例如从你的login.action到register.action  有两种实现方式
1. 设置type="redirect"
<package  name="struts" extends="struts-default">  
          <action name="login" class="com.aihua.example.LoginAction">  
              <result name="success" 
type="redirect">register.action </result>  
              <result name="error">/index.jsp  </result>  
          </action> 
      </package> 
2.设置 type="chain"
<package  name="struts" extends="struts-default">  
          <action name="login" class="com.aihua.example.LoginAction">  
              <result name="success" 
type="chain" >action 名称 </result>  
              <result name="error">/index.jsp </result>  
          </action>   
</package>  
当type为chain 时,说明是action链,运行完第一个action java文件接着会运行第二个action JAVA 文件,相当于forward(客户端的url不会改变).当type为redirect时,说明会跳转到第二个action的url (客户端的url会改变)
从action1直接跳转到action2,有两种方法: 


1. 需要保存前一个action的属性信息时使用,保存住action1的request对象: 

     <result type= "chain " name="a2">action2</result> 

2. 不保存前一个action的参数可以用这种方法: 

      <result  type= "redirectAction "> action2</result> 


Struts.xml

Java代码 
  1. <?xml version="1.0" encoding="UTF-8" ?> 
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN""http://struts.apache.org/dtds/struts-2.1.dtd"
  3. <struts> 
  4.  
  5. <!--一个action跳转到另一个action 跳转方式为chain 会保留request对象 redirectAction 则不能保留--> 
  6. <package name="limin" extends="struts-default"
  7. <action name="sa1_*" class="com.Action.StrAction1" method="{1}"
  8. <!--<result type="chain" name="sa2">sa2_sa2</result>  --> 
  9. <result type="redirectAction" name="sa2">sa2_sa2</result> 
  10. </action> 
  11.  
  12. <action name="sa2_*" class="com.Action.StrAction2" method="{1}"
  13. <result>/index.jsp</result> 
  14. </action> 
  15. </package
  16.  
  17. </struts>     
[java] 
 
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">  
  3. <struts>  
  4.   
  5. <!--一个action跳转到另一个action 跳转方式为chain 会保留request对象 redirectAction 则不能保留-->  
  6. <package name="limin" extends="struts-default">  
  7. <action name="sa1_*" class="com.Action.StrAction1" method="{1}">  
  8. <!--<result type="chain" name="sa2">sa2_sa2</result>  -->  
  9. <result type="redirectAction" name="sa2">sa2_sa2</result>  
  10. </action>  
  11.   
  12. <action name="sa2_*" class="com.Action.StrAction2" method="{1}">  
  13. <result>/index.jsp</result>  
  14. </action>  
  15. </package>  
  16.   
  17. </struts>      


action1

Java代码 
  1. public class StrAction1 { 
  2.     String a ="liminhappygirl"
  3.     public String getA() { 
  4.         return a; 
  5.     } 
  6.     public void setA(String a) { 
  7.         this.a = a; 
  8.     } 
  9.     public String sa1() { 
  10.         HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);  
  11.         request.setAttribute("limin""happygirl"); 
  12.         System.out.println("sal已经执行"); 
  13.         return "sa2"
  14.     } 
  15.  
[java] 
 
  1. public class StrAction1 {  
  2.     String a ="liminhappygirl";  
  3.     public String getA() {  
  4.         return a;  
  5.     }  
  6.     public void setA(String a) {  
  7.         this.a = a;  
  8.     }  
  9.     public String sa1() {  
  10.         HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);   
  11.         request.setAttribute("limin""happygirl");  
  12.         System.out.println("sal已经执行");  
  13.         return "sa2";  
  14.     }  
  15.   
  16. }  


action2

Java代码 
  1. public class StrAction2 { 
  2.     public String sa2() { 
  3.         HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);  
  4.         //当type="chain" 时能保存住request对象 
  5.         System.out.println(request.getAttribute("limin")); 
  6.         return Action.SUCCESS; 
  7.     } 
[java] 
 
  1. public class StrAction2 {  
  2.     public String sa2() {  
  3.         HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);   
  4.         //当type="chain" 时能保存住request对象  
  5.         System.out.println(request.getAttribute("limin"));  
  6.         return Action.SUCCESS;  
  7.     }  
  8. }  

 

转载地址:http://hejkl.baihongyu.com/

你可能感兴趣的文章
UML用例图
查看>>
Bitmap基本概念及在Android4.4系统上使用BitmapFactory的注意事项
查看>>
Objective-C:MRC(引用计数器)获得对象所有权的方式(init、retain、copy等)
查看>>
PowerShell 在线教程 4
查看>>
不要让你的未来,现在恨自己
查看>>
jquery表单验证
查看>>
使用 Jasmine 进行测试驱动的 JavaScript 开发
查看>>
[CareerCup] 8.2 Call Center 电话中心
查看>>
GestureDetector和SimpleOnGestureListener的使用教程
查看>>
【FFmpeg】Windows下FFmpeg编译
查看>>
sqlserver字段类型详解
查看>>
Java多线程16:线程组
查看>>
ubuntu wireshark找不到网卡及开启IP转发
查看>>
波音公司开发最轻金属 99.99%是空气
查看>>
Python执行效率测试模块timei的使用方法与与常用Python用法的效率比较
查看>>
Hive架构及Hive On Spark
查看>>
TextureView+SurfaceTexture+OpenGL ES来播放视频(二)
查看>>
浏览器请求中文乱码(ISO-8859-1 to UTF-8)
查看>>
VC6工程升级VS2013遇到的问题
查看>>
[Redux] Implementing Store from Scratch
查看>>