zoukankan      html  css  js  c++  java
  • Struts学习笔记_Result

    一,Result type

     <package name="resultTypes" namespace="/r" extends="struts-default">
            <action name="r1">
                <result type="dispatcher">/r1.jsp</result> //服务器跳转,为默认项
            </action>
            
            <action name="r2">
                <result type="redirect">/r2.jsp</result>  //客户端跳转,跳转后url变成jsp的路径
            </action>
            
            <action name="r3">
                <result type="chain">r1</result>      //服务器跳转可以跳转到action,
            </action>
            
            <action name="r4">
                <result type="redirectAction">r2</result> //客户端跳转可以跳转到action
            </action>
            
        </package>

     二,global result(如果很多action都会用到同样的result,这可以使用全局结果集)

    <struts>
        <constant name="struts.devMode" value="true" />
        <package name="user" namespace="/user" extends="struts-default">
            
            
            <global-results>
                <result name="mainpage">/main.jsp</result>  //全局result
            </global-results>
            
            <action name="index">
                <result>/index.jsp</result>
            </action>
            
            <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
                <result>/user_success.jsp</result>
                <result name="error">/user_error.jsp</result>
            </action>        
        </package>
        
        <package name="admin" namespace="/admin" extends="user"> //extends继承user包,可以调用user里面的内容
            <action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">
                <result>/admin.jsp</result>
            </action>
        </package>
    </struts>

     useraction

    public class UserAction extends ActionSupport {
        private int type;
    
        
    
        public int getType() {
            return type;
        }
    
    
    
        public void setType(int type) {
            this.type = type;
        }
    
    
    
        @Override
        public String execute() throws Exception {
            if(type == 1) return "success";
            else if (type == 2) return "error";
            else return "mainpage";  // 调用全局result
        }
    
    }

     AdminAction

    public class AdminAction extends ActionSupport {
    
        @Override
        public String execute() throws Exception {
            return "mainpage";
        }
    
    }

     三,动态结果集

    <struts>
        <constant name="struts.devMode" value="true" />
        <package name="user" namespace="/user" extends="struts-default">
            
            <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
                <result>${r}</result> //取值栈中r的值
            </action>        
        </package>
            
    </struts>
    //UserAction .java   一定不要忘了为动态结果的保存值设置set get方法
    public class UserAction extends ActionSupport {
        private int type;
        
        private String r;

        public String getR() {
            return r;
        }

        public void setR(String r) {
            this.r = r;
        }

        public int getType() {
            return type;
        }

        public void setType(int type) {
            this.type = type;
        }

        @Override
        public String execute() throws Exception {
            if(type == 1) r="/user_success.jsp";
            else if (type == 2) r="/user_error.jsp";
            return "success";
        }

    }

    四,带参数的result,一次request公用一个值栈,服务器端调用是一次request,客户端两次

    <struts>
        <constant name="struts.devMode" value="true" />
        <package name="user" namespace="/user" extends="struts-default">
            
            <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
                <result type="redirect">/user_success.jsp?t=${type}</result>    // 客户端调用 ${type}取得action传入值栈中的type值
            </action>        
        </package>
            
    </struts>
    UserAction 
    public class UserAction extends ActionSupport {
        private int type;
        
        public int getType() {
            return type;
        }
    
        public void setType(int type) {
            this.type = type;
        }
    
        @Override
        public String execute() throws Exception {
            return "success";
        }
    
    }
    user_success.jsp
    <body>
        User Success!
        from valuestack: <s:property value="t"/><br/>  //由于是客户端调用,不共用一个值栈,所以值栈中为空,不能再值栈中取值
        from actioncontext: <s:property value="#parameters.t"/>//只能在actionContext中取值
        <s:debug></s:debug>
    </body>

    Result总结

    1. 常用四种类型:

        a)         dispatcher(默认)

        b)         redirect

        c)         chain

        d)         redirectAction

      2.全局结果集

        a)         global-results | extends

      3.动态结果(了解)

        a)         在action中保存一个属性,存储具体的结果location

      4.传递参数

        a)         客户端跳转才需要传递

        b)         ${}表达式(不是EL)

  • 相关阅读:
    Chrome 控制台console的用法[转]
    Page Visibility(页面可见性) API介绍、微拓展[转]
    移动端rem单位用法[转]
    JavaScript继承方式详解[转]
    说说React
    Flex 布局教程:语法篇[转]
    git 常用命令总结
    Supervisor 在ubuntu系统下添加自启动
    Django 通过APNS推送消息
    通过 python-xmp-toolkit 读取图片xmlp信息
  • 原文地址:https://www.cnblogs.com/enjoy-life-clh/p/4082330.html
Copyright © 2011-2022 走看看