zoukankan      html  css  js  c++  java
  • Result

    1.常用四种类型:

          a)          dispatcher(默认)

          服务器跳转(普通转发),就是forward到一个JSP或者HTML或者其他结果页面,不能是Action

                       视图请求地址是             http://localhost:8080/myweb/r1/r1.jsp

                       浏览器最后显示的地址是  http://localhost:8080/myweb/r1/r1.jsp

           b)         redirect

           重定向到结果视图

                       视图请求地址是             http://localhost:8080/myweb/r2/r2.jsp

                       浏览器最后显示的地址是  http://localhost:8080/myweb/r2.jsp

            c)         chain

            服务器forward(转发)到一个另一个Action 

                       视图请求地址是             http://localhost:8080/myweb/r3/r1.jsp

                       浏览器最后显示的地址是  http://localhost:8080/myweb/r1/r1.jsp 

             d)         redirectAction

            重定向到另外一个Action 

                       视图请求地址是             http://localhost:8080/myweb/r4/r2.jsp

                       浏览器最后显示的地址是  http://localhost:8080/myweb/r2.jsp

                       重点是上面两种

    <struts>
        <constant name="struts.devMode" value="true" />
        <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>
            </action>
            
            <action name="r3">
                <result type="chain">r1</result>
            </action>
            
            <action name="r4">
                <result type="redirectAction">r2</result>
            </action>
            
        </package>

    如果chain是不同的命名空间:

    <result type="chain">
                <param name="actionName">dashboard</param>
                <param name="namespace">/secure</param>
            </result>

    2.全局结果集

    Global_Results

    <struts>
        <constant name="struts.devMode" value="true" />
        <package name="user" namespace="/user" extends="struts-default">
            
            
            <global-results>
                <result name="mainpage">/main.jsp</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">
            <action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">
                <result>/admin.jsp</result>
            </action>
        </package>
    </struts>

    Global_Results是在package标签下。

    意思就是说这个namespace下所有的action共享,当某一个action找不到对应的result时,就找到了它。

    extends

    同时这个extends 是表示namespace继承的意思,可以得到它继承namespace的所有配置

    默认的都是继承于 

     extends="struts-default"

    它的源码在struts-core-2.1.6.jar包里面

    里面配置了很多的拦截器等。

    但是在实际开发中,这种继承关系如果多了就会很复杂

    所以实际上一般用在

    比如说有好几个模块,用户管理,学生管理,老师管理,权限管理等

    它们有公用页面

    比如返回首页,错误信息返回等,

    可以使用到继承

    $这种写法

    用在可以在配置文件里往值栈里面取值

    一个UserAction.java里面的内容都会存放在值栈里面

    可以去读value Stack 里的内容

    可以在类中用一个属性用来保存一个结果

    这个属性的值可以动态确定

    在struct里面可以用$符号把结果取出来

    3.动态结果

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

    index.jsp:

    <body>
       动态结果
      一定不要忘了为动态结果的保存值设置set get方法
    <ol>
        <li><a href="user/user?type=1">返回success</a></li>
        <li><a href="user/user?type=2">返回error</a></li>
    </ol>
        
    </body>

    struct.xml :

    通过$符号取出值栈里面的内容

    <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>
            </action>        
        </package>
            
    </struts>

    UserAction.java

    为这个属性动态指定location

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


    /user_success.jsp
    <?xml version="1.0" encoding="GB18030" ?>
    <%@ page language="java" contentType="text/html; charset=GB18030"
        pageEncoding="GB18030"%>
        <%@taglib uri="/struts-tags" prefix="s" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
    <title>UserSuccess</title>
    </head>
    <body>
        User Success!
        <s:property value="r"/>
        <s:debug></s:debug>
    </body>
    </html>

    4.传递参数

    struct中间带参数

    重定向才需要传递

    使用${}

     <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>
            </action>        
        </package>

    redirect如何能把数据从一个视图传递到另一个视图?
    链接 用action向其他视图传递参数(redirect才需要传递)
  • 相关阅读:
    Android ViewPager用法小结
    HDU1212 Big Number 【同余定理】
    1051. Pop Sequence (25)
    FFmpeg源码结构图
    oracle访问不同用户的表不添加用户名前缀
    window7开启Administrator账户
    Window下对nodejs多版本管理GNVM
    基于Centos7.5搭建Docker环境
    grep与孪生兄弟egrep差异
    Linux编译步骤概述
  • 原文地址:https://www.cnblogs.com/tech-bird/p/4148527.html
Copyright © 2011-2022 走看看