版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
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>
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>
chain转发只会请求一次服务器,并且浏览器的地址栏不会修改,redirectAction重定向会发起两次请求服务器(最后重定向的界面有一次请求),浏览器的地址会发生改变。
dispatcher、redirect是转发、重定向一个资源页面,chain、redirectAction是转发、重定向到其他action。