一、局部和全局结果视图
a.局部视图
<action name="demo2" class="com.pangu.action.Demo2Action">
<!-- 局部视图就是服务于当前动作的结果 -->
<result name="success" type="dispatcher">/demo1.jsp</result>
</action>
b.全局视图
<global-results>
<!-- 全局视图:访问动作时,如果没有局部视图,则找全局视图,否则报错 -->
<result name="success" type="dispatcher">/demo1.jsp</result>
</global-results>
二、Result元素的配置
属性:
name:逻辑视图名称,它对应的是动作方法的返回值,默认值时success
type: 到达目标的形式,默认值时dispatcher
三、Struts2提供的结果模型(result-types)
// 在struts-default.xml文档中有定义
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
<result-type name="postback" class="org.apache.struts2.dispatcher.PostbackResult" />
</result-types>
// chain:用户转发到另一个动作
<package name="p1" extends="struts-default">
<action name="demo1" class="com.pangu.action.Demo2Action" method="execute">
<result name="success" type="chain">demo2</result>
</action>
<action name="demo2" class="com.pangu.action.Demo2Action" method="execute">
<result name="success" type="dispatcher">/demo1.jsp</result>
</action>
</package>
// demo1动作转到demo2动作
// 转发到不同空间中的另一个动作
<package name="p1" extends="struts-default" namespace="/n1">
<action name="demo1" class="com.pangu.action.Demo2Action" method="execute">
<result name="success" type="chain">
<!-- 给chain类型对应的处理类,注入参数值,对应的是setter()方法 -->
<param name="namespace">/n2</param>
<param name="actionName">demo2</param>
</result>
</action>
</package>
<package name="p2" extends="struts-default" namespace="/n2">
<action name="demo2" class="com.pangu.action.Demo2Action" method="execute">
<result name="success" type="dispatcher">/demo1.jsp</result>
</action>
</package>
dispatcher :用于转发到另一个jsp页面
<package name="p2" extends="struts-default" namespace="/n2">
<action name="demo2" class="com.pangu.action.Demo2Action" method="execute">
<!-- dispatcher写法一 -->
<!-- <result name="success" type="dispatcher">/demo1.jsp</result> -->
<!-- dispatcher写法二 -->
<result name="success" type="dispatcher">
<param name="location">/demo1.jsp</param>
</result>
</action>
</package>
freemarker: 用户转发到另一个freemarker模版(页面静态化)
velocity: 用户转发到另一个velocity模版
httpheader: 用于输出http协议的消息头
xslt: XML有关的样式
* redirect : 用于重定向到另外一个jsp页面
* redirectAction : 用于重定向到另外一个动作
* stream: 用于文件下载(文件上传和下载)
* plainText: 以纯文本的形式展现页面,输出源码