一、结果视图配置(Result):
简单的说Result是Action执行完后返回的一个字符串,它指示了Action执行完成后,指定下一个页面在那里,也就是:当Action处理结束时,通知系统下一步做什么,状态下一步应该调用那个物理视图资源来显示处理结果。通常是在Struts.xml文件中进行配置。
在配置文件中使用<result....../>元素来进行配置,根据其位置的不同,其有提供了两种结果:
局部结果:将<result/>作为<Action />元素的子元素,一个Action可以有多个<result......./> 子元素,即一个Action对应多 个结果。
全局结果:将<result/>作为<global_results....... />元素的子元素
配置<result......../>元素时需要指定以下两个属性:
Name:该属性指定所配置的逻辑视图名;(逻辑视图名:指Action中返回的字符串)
Type:该属性指定结果类型
如: <action name="loginValidate"
class="com.bank.action.LoginAction">
<result name="cuccess"
type="dispatcher">/login.jsp</result>
</action>
在Struts2中可以省略结果类型,此时系统将使用默认的结果类型,Struts2的默认结果类型为:dispatcher,但此时其只能用于与jsp的视图,若要使用其他视图,如:freemarker、jfreechart时需要配置type属性进行手动指定。同时还可以省略逻辑视图名,此时将使用默认的逻辑视图名,Struts2的默认的逻辑视图名为:success。所以上面的配置可改成以下形式:
<action name="loginValidate"
class="com.bank.action.LoginAction">
<result>/login.jsp</result>
</action>
二、Struts2支持的结果类型(ResultType):
Struts2支持多种视图技术,如:jsp、freemarker、jfreechart、Velocity等。当一个Action 处理用户请求结束后,仅仅返回一个字符串,即逻辑试图名;但该逻辑视图名并未与任何的视图技术及任何的视图资源进行关联。
Struts2的结果类型决定了Action处理结束后,下一步将调用那种视图资源来呈现处理结果。
Struts2框架提供了大量的默认的结果类型,这些类型定义在struts2-core-版本号.jar
文件下的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-types>
以下就常用的结果类型的简单解释:
1、chain:Action链式处理的结果类型(从一个Action跳转到另一个Action,可携带参数)
2、Dispatcher:用于指定是要jsp作为视图的结果类型,相当于请求转发,即将请求转发到指定的jsp资源,可携带参数
3、Freemarker:用于指定是要Freemarker模板作为视图的结果类型
4、Redirect:用于直接跳转到其他URL的结果类型,相当于HttpServletResponse的sendRedirect ()方法,即重定向到指 定的资源,无法携带参数
5、Stream:用于向浏览器返回一个InputStream(一般用于文件下载)
6、Velocity:用于指定是要Velocity模板作为视图的结果类型
7、Xslt:用于与XML、XSLT整合的结果类型