文档章节

Struts2中结果集转发

开源俱乐部
 开源俱乐部
发布于 2014/06/11 21:45
字数 859
阅读 71
收藏 0

一、结果集介绍

        Struts2的Action处理用户请求结束后,返回一个普通字符串——逻辑视图名,必须在struts.xml文件中完成逻辑视图和物理视图资源的映射,才可以让系统转到实际的视图资源。

        简单的说,结果是告诉struts2框架,当Action处理结果时,系统下一步做什么。当Action返回一个普通字符串时,系统下一步将做什么。

        Struts2中支持局部结果和全局结果。

        这些由局部结果和全局结果构成的结果,我们称为结果集

(1)局部结果

        将<result…/>作为<action…/>元素的子元素配置。一个<action…/>元素可以有多个<result…/>元素,这表示一个Action可以对应多个结果。例如:

<action name="*">
            <result name="success" type="dispatcher">
               <param name="location">/login.jsp</param>
            </result>
</action>

        其中,type属性指定结果类型为dispatcher。

        <param name="location">/login.jsp</param>为该逻辑视图指定实际的视图资源。

(2)全局结果

        将<result…/>作为<global-result…/>元素的子元素配置。例如:

<global-results>
            <result name="error">/error.jsp</result>
        </global-results>

二、Struts2支持的结果类型

(1)struts2支持的结果类型

        Struts2内建支持的结果类型有:

        (1)chain

        用来处理Action链,Action链式处理的结果类型。

        将action的带着原来的状态请求转发到新的action,两个action共享一个ActionContext,actionName指定转向的新的Action的名字,method指定转向哪个方法,namespace指定新的Action的名称空间,不写表示与原Action在相同的名称空间。

        (2)dispatcher

        请求转发,底层调用RequestDispatcher的forward() 方法,dispatcher是result的type属性默认值,通常用于转向一个JSP。

        Dispatcher类型是最常用的结果类型,也是struts框架默认的结果类型。

        (3)freemarker

        处理FreeMarker模板。

        用freemaker模板引擎呈现视图,location指定模板(*.ftl)的位置,parse如果为false,location的值不会被OGNL解析,contentType指定以何中类型解析,默认为text/html。

        (4)httpheader

        控制特殊HTTP行为的结果类型。

        (5)redirect

        重定向到一个URL。

        新页面无法显示Action中的数据,因为底层调用response.sendRedirect(“”)方法,无法共享请求范围内的数据。

        (6)redirectAction

        重定向到一个Action。

        参数与chain用法相同,允许将原Action中的属性指定新名称带入新Action中,可以在Result标签中添加 <param name=”b”>${a} </param>,这表示原Action中的变量a的值被转给b,下一个Action可以在值栈中使用b来操作。

        (7)stream

        向浏览器发送InputSream对象,通常用来处理文件下载,还可用于返回AJAX数据。

        (8)velocity

        处理Velocity模板。

        (9)xslt

        处理XML/XLST模板。

        (10)plainText

        显示原始文件内容,例如文件源代码。

(2)struts2常用的结果类型

        struts2常用的结果类型有:chain、dispatcher、redirectAction、freemarker。

三、知识扩展

(1)如何查看Struts2支持哪些结果类型?

        在\Web App Libraries\struts2-core-2.3..8.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>


© 著作权归作者所有

共有 人打赏支持
开源俱乐部
粉丝 10
博文 39
码字总数 31422
作品 0
朝阳
架构师
【学习笔记6】Result配置的各种视图转发类型

<action name="helloworld" class="cn.itcast.action.HelloWorldAction"> </action> result配置类似于struts1中的forward,但struts2中提供了多种结果类型,常用的类型有: dispatcher(默认值......

张超
2013/04/11
0
0
Java MVC框架性能比较 jsp、struts1、struts2、springmvc3 (转帖)

Java MVC框架性能比较 jsp、struts1、struts2、springmvc3 现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到...

CsOH913
2016/01/14
144
0
Java MVC框架性能比较 jsp、struts1、struts2、springmvc3

Java MVC框架性能比较 jsp、struts1、struts2、springmvc3 (转帖) 个人希望本帖对大家认识一些常用的MVC框架有所帮助! 现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介...

满风
2012/04/11
0
1
struts2的配置

xml绑定本地约束的方法: window-->preferences(-->MyEclipse-->Files and Editors)-->XML-->XML Catalog-->user specified Entires-->Add 中: 在出现的窗口中的Key Type 中选择URI,在locat......

gsanye
2017/06/11
0
0
Struts2核心技术 (一)

struts2 struts2发展历史 经过很多年发展,Struts1已经成为了高度成熟的框架,但随着时间的发展,Struts1的局限性和缺点不断的暴露出来。 现在Struts已经分化成了两个框架 -第一个是在Strut...

architect刘源源
04/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

ReentrantLock_可重入

package cunrent;import java.util.Calendar;import java.util.concurrent.locks.ReentrantLock;public class TestReentrantLock { public static void main(String[] args......

noteman
36分钟前
2
0
CentOS7下安装mysql5.7

1、安装YUM Repo 由于CentOS 的yum源中没有mysql,需要到mysql的官网下载yum repo配置文件。 wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm 然后进行repo的安...

JungleKing
43分钟前
2
0
DevExpress v18.1新版亮点——DevExtreme篇(三)

用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了DevExtreme JavaScript Controls v18.1 的新功能,快来下载试用新版本!点击下载...

Miss_Hello_World
44分钟前
1
0
LoadRunner 安装

如果安装LoadRunner 11时弹窗提示"Micosoft Visual C++ 2005 SP1 可再发行组件包(X86):'命令行选项语法错误。键入命令 / ? 可获得帮助信息'"。或者弹窗提示"此计算机缺少 vc2005_sp1_wit...

ww1234
53分钟前
1
0
两个时间段相隔自然月Util

public class DateUtil { public static int getDay(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calend......

木九天
56分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部