Struts2框架之Struts配置文件result元素(重定向、转发)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41855420/article/details/102647822

Struts配置文件result元素也称为动作的结果视图。常见属性有name、type。

name:逻辑视图的名称,对应着动作方法的返回值。默认值是success
type:结果类型,指的就是用什么方式转到定义的页面。默认是dispatcher转发。

1、name取值

常见的有success、error、input、login,也可以自定义

在这里插入图片描述
在这里插入图片描述

2、type取值

常见的有如下四种:
在这里插入图片描述

①、dispatcher (默认值)使用请求转发,转向一个页面

struts.xml配置文件

<?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="p1" extends="struts-default">
        <action name="hello" class="cn.hestyle.web.action.HelloAction" method="sayHello">
            <!-- 设置result的类型为dispatcher,转发到success.jsp页面 -->
            <result name="success" type="dispatcher">/success.jsp</result>
        </action>
    </package>
</struts>
②、redirect 使用重定向,转向一个页面。

struts.xml配置文件

<?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="p1" extends="struts-default">
        <action name="hello" class="cn.hestyle.web.action.HelloAction" method="sayHello">
            <!-- 设置result的类型为redirect,重定向到success.jsp页面 -->
            <result name="success" type="redirect">/success.jsp</result>
        </action>
    </package>
</struts>

\color{red}两者的区别: dispatcher转发只会请求一次服务器,并且浏览器的地址栏不会修改,redirect重定向会发起两次请求服务器(最后重定向的界面有一次请求),浏览器的地址会发生改变。

③、chain 转发到其他动作
<?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="p1" extends="struts-default" namespace="/n1">
        <action name="action1" class="cn.hestyle.web.action.Demo1Action" method="sayHello">
            <!-- 默认type是dispatcher转发到success.jsp页面 -->
            <result name="success">/success.jsp</result>
        </action>
        <action name="action2" class="cn.hestyle.web.action.Demo2Action" method="sayHello">
            <!-- 设置result的类型为chain,转发到同一个命名空间下的action -->
            <result name="success" type="chain">action1</result>
        </action>
    </package>
    <package name="p2" extends="struts-default" namespace="/n2">
        <action name="action3" class="cn.hestyle.web.action.Demo3Action" method="sayHello">
            <!-- 设置result的类型为chain,转发到不同命名空间下的action -->
            <result name="success" type="chain">
                <!-- 转发到命名空间"/n1"下的action1 -->
                <param name="namespace">/n1</param>
                <param name="actionName">action1</param>
            </result>
        </action>
    </package>
</struts>
④、redirectAction 重定向到其他动作
<?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="p1" extends="struts-default" namespace="/n1">
        <action name="action1" class="cn.hestyle.web.action.Demo1Action" method="sayHello">
            <!-- 默认type是dispatcher转发到success.jsp页面 -->
            <result name="success">/success.jsp</result>
        </action>
        <action name="action2" class="cn.hestyle.web.action.Demo2Action" method="sayHello">
            <!-- 设置result的类型为redirectAction,重定向到同一个命名空间下的action -->
            <result name="success" type="redirectAction">action1</result>
        </action>
    </package>
    <package name="p2" extends="struts-default" namespace="/n2">
        <action name="action3" class="cn.hestyle.web.action.Demo3Action" method="sayHello">
            <!-- 设置result的类型为redirectAction,重定向到不同命名空间下的action -->
            <result name="success" type="redirectAction">
                <!-- 重定向到命名空间"/n1"下的action1 -->
                <param name="namespace">/n1</param>
                <param name="actionName">action1</param>
            </result>
        </action>
    </package>
</struts>

\color{red}两者的区别: chain转发只会请求一次服务器,并且浏览器的地址栏不会修改,redirectAction重定向会发起两次请求服务器(最后重定向的界面有一次请求),浏览器的地址会发生改变。

\color{red}四者的区别: dispatcher、redirect是转发、重定向一个资源页面,chain、redirectAction是转发、重定向到其他action。

猜你喜欢

转载自blog.csdn.net/qq_41855420/article/details/102647822