• Struts2 中action之间的跳转(分享)


    例如从你的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]  view plain copy print ?
     
    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]  view plain copy print ?
     
    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]  view plain copy print ?
     
    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. }  



  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/james1207/p/3292314.html
Copyright © 2020-2023  润新知