Struts2学习(四)【结果跳转方式】

一、result的类型

打开默认配置文件 struts2-core-2.5.13.jar!\struts-default.xml,这里面有 result 的定义

<result-types>
    <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
    <result-type name="dispatcher" class="org.apache.struts2.result.ServletDispatcherResult" default="true"/>
    <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
    <result-type name="httpheader" class="org.apache.struts2.result.HttpHeaderResult"/>
    <result-type name="redirect" class="org.apache.struts2.result.ServletRedirectResult"/>
    <result-type name="redirectAction" class="org.apache.struts2.result.ServletActionRedirectResult"/>
    <result-type name="stream" class="org.apache.struts2.result.StreamResult"/>
    <result-type name="velocity" class="org.apache.struts2.result.VelocityResult"/>
    <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
    <result-type name="plainText" class="org.apache.struts2.result.PlainTextResult" />
    <result-type name="postback" class="org.apache.struts2.result.PostbackResult" />
</result-types>
属性说明
chain用 来 处 理Action链 , 被 跳 转 的 Action 中 仍 能 获 取上个页面的值,如 request信息。
dispatcher用 来 转 向 页 面 , 通 常 处 理 jsp, 足 默 认 的 结 果 类型 。
freemarker用来整合 FreeMarker校板结果类型。
httpheader用来处理特殊的 HTTP行为结果类型。
redirect重定向 到 一 个 URL, 被 跳 转 的 页 面 中 丢 失 传 递 的信息。
redirectAction重定向到一个 Action,跳转的页面中丢失传递的信怠。
stream向浏览器发送 InputStream对象,通常用来处理文件下载,还可用于Ajax数据。
velocity用来整合Velocity模板结果类型。
xslt用来整合 XML/ XSLT结果类型。
plainText显示原始文件内容,例如文件源代码。
postback使得当前请求参数以表单形式提交

常用到是下面四种

chain

dispatcher

redirect

redirectAction


二、转发

转发我们使用 dispatcher ,它也是默认的方式,下面我们实现转发的测试。

2.1 DemoResult1Action

package com.qwm.struts2_2.a_result;

import com.opensymphony.xwork2.ActionSupport;

/**
 * @author: wiming
 * @date: 2017-09-18 17:47:33  星期一
 * @decription:
 */
public class DemoResult1Action  extends ActionSupport{
    @Override
    public String execute() throws Exception {
        System.out.println(this.getClass().getSimpleName());
        return SUCCESS;
    }
}

2.2 配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <package name="resulttest" namespace="/" extends="struts-default">
        <!--转发-->
        <action name="DemoResult1Action" class="com.qwm.struts2_2.a_result.DemoResult1Action">
            <result name="success" type="dispatcher">/hello.jsp</result>
        </action>
    </package>
</struts>

2.3 图示

image


三、重定向

重定向我们使用 redirect ,下面我们实现重定向的测试。

3.1 DemoResult2Action

package com.qwm.struts2_2.a_result;

import com.opensymphony.xwork2.ActionSupport;

/**
 * @author: wiming
 * @date: 2017-09-18 17:47:33  星期一
 * @decription:
 */
public class DemoResult2Action extends ActionSupport{
    @Override
    public String execute() throws Exception {
        System.out.println(this.getClass().getSimpleName());
        return SUCCESS;
    }
}

3.2 配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <package name="resulttest" namespace="/" extends="struts-default">
        <!--重定向-->
        <action name="DemoResult2Action" class="com.qwm.struts2_2.a_result.DemoResult2Action">
            <result name="success" type="redirect">/hello.jsp</result>
        </action>
    </package>
</struts>

3.3 图示

这里写图片描述


四、转发到Action

转发到Action我们使用 chain。使用这个,我们的result会有不同,如下

<result name="success" type="chain">
    <!-- 转发到的action的名字 -->
    <param name="actionName">DemoResult1Action</param>
    <!-- 转发到的action所在的命名空间 -->
    <param name="namespace">/</param>
</result>

下面我们实现转发Action的测试。

4.1 DemoResult3Action

package com.qwm.struts2_2.a_result;

import com.opensymphony.xwork2.ActionSupport;

/**
 * @author: wiming
 * @date: 2017-09-18 17:47:33  星期一
 * @decription:
 */
public class DemoResult3Action extends ActionSupport{
    @Override
    public String execute() throws Exception {
        System.out.println(this.getClass().getSimpleName());
        return SUCCESS;
    }
}

4.2 配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
        <!-- 转发到Action -->
        <action name="DemoResult3Action" class="com.qwm.struts2_2.a_result.DemoResult3Action">
            <result name="success" type="chain">
                <!-- action的名字 -->
                <param name="actionName">DemoResult1Action</param>
                <!-- action所在的命名空间 -->
                <param name="namespace">/</param>
            </result>
        </action>
    </package>
</struts>

4.3 图示

这里写图片描述


五、重定向到Action

重定向到Action我们使用 chain。使用这个,我们的result会有不同,如下

<result name="success" type="chain">
    <!-- 重定向到的action的名字 -->
    <param name="actionName">DemoResult1Action</param>
    <!-- 重定向到的action所在的命名空间 -->
    <param name="namespace">/</param>
</result>

下面我们实现重定向到Action的测试。

5.1 DemoResult4Action

package com.qwm.struts2_2.a_result;

import com.opensymphony.xwork2.ActionSupport;

/**
 * @author: wiming
 * @date: 2017-09-18 17:47:33  星期一
 * @decription:
 */
public class DemoResult4Action extends ActionSupport{
    @Override
    public String execute() throws Exception {
        System.out.println(this.getClass().getSimpleName());
        return SUCCESS;
    }
}

5.2 配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
    <package name="resulttest" namespace="/" extends="struts-default">
        <!-- 重定向到Action -->
        <action name="DemoResult4Action" class="com.qwm.struts2_2.a_result.DemoResult4Action">
            <result name="success" type="redirectAction">
                <!-- 重定向到的action的名字 -->
                <param name="actionName">DemoResult1Action</param>
                <!-- 重定向到的action所在的命名空间 -->
                <param name="namespace">/</param>
            </result>
        </action>
    </package>
</struts>

5.3 图示

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值