当Action类的方法处理请求后,会返回一个字符串(逻辑视图名),框架根据这个结果码选择对应的result,向用户输出,所以需要在struts.xml提供<result>元素定义结果页面,这个结果页面可以是局部结果页面或者全局结果页面。
1、 局部结果页面和全局结果页面
1)局部结果页面
1 <action name="result" class="cn.sunny.action.ResultAction"> 2 <!-- 局部结果当前Action使用 --> 3 <result name="success">/result.jsp</result> 4 </action>
2)全局结果页面
1 <global-results> 2 <!-- 全局结果 当前包中 所有Action都可以用--> 3 <result name="success">/result.jsp</result> 4 </global-results>
2、结果页面跳转类型
在struts-default.xml定义了一些<result>中的type属性的结果页面类型,默认的type类型是dispatcher转发,type属性类型:
1 <result-types> 2 <!--用来处理Action链--> 3 <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/> 4 <!--用来转向页面,通常处理jsp--> 5 <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/> 6 <!--处理 FreeMarker 模板--> 7 <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/> 8 <!--控制特殊http行为的结果类型--> 9 <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/> 10 <!--重定向到一个URL--> 11 <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/> 12 <!--重定向到一个 Action--> 13 <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/> 14 <!--向浏览器发送 InputSream 对象,通常用来处理文件下载,还可用于返回 AJAX 数据。--> 15 <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/> 16 <!--处理 Velocity 模板--> 17 <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/> 18 <!--处理 XML/XLST 模板--> 19 <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/> 20 <!--显示源文件内容,如文件源码--> 21 <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" /> 22 </result-types>
所以type属性可以取的值有:chain、dispatcher、freemarker、httpheader、redirect、redirectAction、stream、velocity、xslt、plainText。