zoukankan      html  css  js  c++  java
  • Struts2中Action之ResultType

    我们在struts-defalut.xml文件中可以看到如下图所示:

    这些类型是配置文件所带的。接下来我们主要讲解我标注出来的这个,其他的我就不做详解了,有兴趣的可以去试试。

    web.xml文件我在这里就不配置了。直接从action开始

    1.0当type取值为chain时:

       chain:转发到action

      创建LoginAction继承ActionSupport类定义方法

    package cn.struts2.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    import java.util.Map;
    
    /**
     * Created by accp on 2017/3/1.
     */
    public class LoginAction extends ActionSupport {
        public String list(){
            System.out.println("====进入==LoginAction====list============");
            return "list";
        }
    
        public String add(){
            System.out.println("====进入====LoginAction==add============");
            return "add";
        }
    }

    创建ShoppingAction

    package cn.struts2.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    import org.apache.struts2.ServletActionContext;
    
    import javax.servlet.http.HttpServletRequest;
    
    /**
     * Created by accp on 2017/3/2.
     */
    public class ShoppingAction extends ActionSupport {
    
        public String list(){
            System.out.println("========进入ShoppingAction=====list============");
            HttpServletRequest request = ServletActionContext.getRequest();
            String uname = (String) request.getAttribute("uname");
            System.out.println(uname);
            return "list";
        }
    
        public String add(){
            System.out.println("======进入ShoppingAction=======add============");
            return "add";
        }
    }

    创建两个jsp页面,填写上不同的内容。

    最主要的接下来配置struts.xml

    .......
          <!--转发到action-->
            <action name="loginAdd" class="cn.struts2.action.LoginAction" method="add">
               <result name="add" type="chain">
                   <param name="actionName">shoppingList</param>
                   <param name="namespace">/</param>
    
               </result>
            </action>
            <action name="shoppingList" class="cn.struts2.action.ShoppingAction" method="list">
                <result name="list">/success.jsp</result>
                <result name="success"></result>
            </action>

    <param name="actionName">loginList</param>指向的是你要转向的action的逻辑名称,要特别注意!!!!!!!

    actionName:系统定义。在struts-defalut.xml------>result-type----->ActionResultType

    运行效果:

    因为在一次转发内携带数据是有效的,我们就可以得到上图的结果。

    1.1type取值为dispatcher

         dispatcher:转发到页面(以LoginAction类为例)

    <!--转发到页面-->
            <action name="loginAction2" class="cn.struts2.action.LoginAction" method="add">
                <result name="add" type="dispatcher">
                    /success.jsp
                </result>
            </action>

    直接指向页面即可,不需要再返回action通过别的方法。

    1.2type取值为redirectAction

        redirectAction:重定向action

       struts.xml配置:

    <!--重定向action-->
            <action name="loginAction3" class="cn.struts2.action.LoginAction" method="add">
                <result name="add" type="redirectAction">
                   <param name="actionName">shoppingList</param>
                    <param name="namespace">/</param>
                </result>
            </action>
            <action name="shoppingList" class="cn.struts2.action.ShoppingAction" method="list">
                <result name="list">/index.jsp</result>
            </action>

    上述方法不变运行,效果图如下:

    从两张图中我们可以很清晰的看出,地址栏发生了很大的变化,再看结果,由于我们把数据方法的是request作用域中,在一次转发内

    可以拿到数据,但是重定向相当于重新请求,携带的数据消失,得到null。

    1.3type取值为redirect

       redirect:重定向到页面

     <!--重定向到页面-->
            <action name="loginAction4" class="cn.struts2.action.ShoppingAction" method="list">
                <result name="list" type="redirect">
                    /success.jsp
                </result>
            </action>

    重定向地址栏都会发生变化,在使用的时候要根据自己的需求选择合适的类型。

    1.4type取值为plainText

           plainText:纯文本

       struts.xml:

     <!--plainText-->
            <action name="loginAction5" class="cn.struts2.action.LoginAction" method="add">
                <result name="add" type="plainText">
                    <param name="charSet">UTF-8</param>
                    <param name="location">/index.jsp</param>
                </result>
            </action>

    <param name="charSet">UTF-8</param>:

    location:指向那个页面。

    效果图:

    得到的是源代码。很神奇是吧,你可以试试其他的类型。

    就到这里吧............

        

  • 相关阅读:
    NBUT 1120 Reimu's Teleport (线段树)
    NBUT 1119 Patchouli's Books (STL应用)
    NBUT 1118 Marisa's Affair (排序统计,水)
    NBUT 1117 Kotiya's Incantation(字符输入处理)
    NBUT 1115 Cirno's Trick (水)
    NBUT 1114 Alice's Puppets(排序统计,水)
    188 Best Time to Buy and Sell Stock IV 买卖股票的最佳时机 IV
    187 Repeated DNA Sequences 重复的DNA序列
    179 Largest Number 把数组排成最大的数
    174 Dungeon Game 地下城游戏
  • 原文地址:https://www.cnblogs.com/wl0000-03/p/6492831.html
Copyright © 2011-2022 走看看