首页 > Java开发 > Struts2 中action之间的跳转

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. <!--一个action跳转到另一个action 跳转方式为chain 会保留request对象 redirectAction 则不能保留-->
  5. <package name="limin" extends="struts-default">
  6. <action name="sa1_*" class="com.Action.StrAction1" method="{1}">
  7. <!--<result type="chain" name="sa2">sa2_sa2</result>  -->
  8. <result type="redirectAction" name="sa2">sa2_sa2</result>
  9. </action>
  10. <action name="sa2_*" class="com.Action.StrAction2" method="{1}">
  11. <result>/index.jsp</result>
  12. </action>
  13. </package>
  14. </struts>
[java][/java] view plaincopy

  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. <!--一个action跳转到另一个action 跳转方式为chain 会保留request对象 redirectAction 则不能保留-->
  5. <package name="limin" extends="struts-default">
  6. <action name="sa1_*" class="com.Action.StrAction1" method="{1}">
  7. <!--<result type="chain" name="sa2">sa2_sa2</result>  -->
  8. <result type="redirectAction" name="sa2">sa2_sa2</result>
  9. </action>
  10. <action name="sa2_*" class="com.Action.StrAction2" method="{1}">
  11. <result>/index.jsp</result>
  12. </action>
  13. </package>
  14. </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][/java] view plaincopy

  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. }

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.     }
  8. }
[java][/java] view plaincopy

  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://www.devba.com/index.php/archives/2486.html | 开发吧

报歉!评论已关闭.