Struts2— Result与ResultType

一、结果视图配置(Result):

    简单的说ResultAction执行完后返回的一个字符串,它指示了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的视图,若要使用其他视图,如:freemarkerjfreechart时需要配置type属性进行手动指定。同时还可以省略逻辑视图名,此时将使用默认的逻辑视图名,Struts2的默认的逻辑视图名为:success。所以上面的配置可改成以下形式:

      <action name="loginValidate"  

                class="com.bank.action.LoginAction">

         <result>/login.jsp</result>

       </action>

二、Struts2支持的结果类型(ResultType)

      Struts2支持多种视图技术,如:jspfreemarkerjfreechartVelocity等。当一个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、chainAction链式处理的结果类型(从一个Action跳转到另一个Action,可携带参数)

2、Dispatcher:用于指定是要jsp作为视图的结果类型,相当于请求转发,即将请求转发到指定的jsp资源,可携带参数

3、Freemarker:用于指定是要Freemarker模板作为视图的结果类型

4、Redirect:用于直接跳转到其他URL的结果类型,相当于HttpServletResponsesendRedirect ()方法,即重定向到指             定的资源,无法携带参数

5、Stream:用于向浏览器返回一个InputStream(一般用于文件下载)

6、Velocity:用于指定是要Velocity模板作为视图的结果类型

7、Xslt:用于与XMLXSLT整合的结果类型


你可能感兴趣的:(Struts2— Result与ResultType)