Struts2对结果类型的处理

来源:互联网 发布:lomo风格 知乎 编辑:程序博客网 时间:2024/05/16 01:20

Struts2对结果类型的处理

  • 在Struts2中我们要编写用于处理用户请求的Action,而对于这个 Action也只是一个控制器,并不应该提供对用户请求的直接响应;那么在Action处理完用户的请求后,处理的结果应由视图资源来实现,这时候,控制器需要做的就是将一个满足用户请求的视图资源呈现给用户,这个事就是由result元素来决定了。
  • 每个Struts2中Action的方法都必须返回一个String类型的返回值,而这个返回值便从逻辑上代表了一个视图资源,我们必须通过在配置文件struts.xml进行相关的配置,让这个逻辑视图真实的匹配到一个物理视图资源上,这个对应关系在struts.xml中需要通过result 标签来实现,本文主要介绍的就是result .标签的主要功能。下面让我们开始吧!
  • 根据result …配置的位置,Struts2提供了两种结果:
  • 局部结果:将 result…元素作为Action的子元素配置
  • 全局结果:将 result…元素作为global-results…的子元素配置
  • 我们看一段配置信息:
    <!--为 success的逻辑视图配置result,type属性指定结果的类型-->    <result name="success" type="dispatcher">        <!--指定该逻辑视图的实际对应视图资源-->        <param name="location">/ok.jsp</param>        <param name="parse">true</param>    </result>
在上面的配置片段中,我们在result标签中嵌入了param元素,对于param的name属性值:location 指定的是实际视图资源 ;parse指定的是是否允许在实际视图资源名字中使用OGNL表达式,默认为true,如果为false,即为不允许在实际视图资源名字中使用OGNL表达式,对于这个值我们通常不做修改,所以以上的配置可简化为:
<!--为 success的逻辑视图配置result,type属性指定结果的类型--><result name="success"type="dispatcher">/ok.jsp</result>

现在的配置还可以进一步的简化,我们甚至可以圣罗结果类型的指定(默认结果类型为 dispatcher),而 name也可以省略(默认为SUCCESS),简化后的配置就变成:

<!--为 success的逻辑视图配置result,type属性指定结果的类型--><result name="success"type="dispatcher">/ok.jsp</result>

在Struts2中支持多种视图技术,例如JSP、Velocity、FreeMarker等。Struts2默认提供了一系列的结果类型,下面是struts-default.xml中的配置片段:

<!--Action链式处理的结果类型-->    <result-types>            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/><!--用于跳转到JSP的结果类型 注:此为转发动作(forward)-->            <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/><!--用于整合FreeMarker的结果类型-->                        <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/><!--用于控制特殊HTTP行为的结果类型-->                        <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/><!--用于直接跳转到其他资源的结果类型-->                        <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/><!--用于跳转到其他Action的结果类型-->                        <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/><!--用于向浏览器返回一个InputStream的结果类型-->                        <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/><!--用于整合velocity的结果类型-->                        <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/><!--用于整合XML/xstl的结果类型-->                        <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/><!--用于显示某个页面原始代码的结果类型-->                        <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />        </result-types>

实质上,我们也可以扩展自己的结果类型,需要提供一个功能性的jar包,然后在struts-plugin.xml中添加配置即可(通过result-type元素指定),本文不详述。
介于时间原因先介绍到这里。

**

0 0
原创粉丝点击