配置处理结果





1.Struts2的两种结果: 

 Struts2的Action处理用户请求结束后,返回一个普通字符串---逻辑视图名,必须在struts.xml文件中完成逻辑视图和物理视图资源的映射,才可让系统转到实际的视图资源。简单的说,结果配置是告诉Struts2框架:当Action处理结束时,系统下一步做什么,系统下一步应该调用哪个物理视图资源来显示处理结果。


局部结果:将< result…/>作为< action…/>元素的子元素配置。 
全局结果:将< result…/>作为< global-result…/>元素的子元素配置

2.配置< result…/>元素时通常需要指定如下两个属性: 
name:该属性指定所配置的逻辑视图名。 
type:该属性指定结果类型。 
最典型的配置片段:

<action name="login" class="slow.LoginAction">
    <!-- 为success的逻辑视图配置Result,type属性指定结果类型 -->
    <result name="success" type="dispatcher">
        <!-- 指定该逻辑视图对应的实际视图资源 -->
        <param name="location">/thank_you.jsp</param>
    </result>
</action>

可简写为:
<action name="login" class="slow.LoginAction">
    <!-- 为success的逻辑视图配置Result,省略type属性 -->
    <result name="success">/thank_you.jsp</result>
</action>

3.Struts2支持的结果类型

Struts2提供的一系列结果类型,放在struts-default.xml(struts2-core-2.2.1.jar文件的根路径下)

4.plainText结果类型(很少用)

用于显示实际视图资源的源代码。

<action name="login" class="slow.LoginAction">
    <!-- 指定Result的类型为plainText类型 -->
    <result type="plainText">
        <!-- 指定实际的视图资源 -->
        <param name="location">/welcome.jsp</param>
        <!-- 指定使用指定的字符集来处理页面代码 -->
        <param name="charSet">GBK</param>
    </result>
</action>

5.redirect结果类型

①dispatcher结果类型与redirect结果类型相对,dispatcher结果类型是将请求forward(转发)到指定的JSP资源;而redirect结果类型,则意味着请求redirect(重定向)到指定的视图资源。 
②dispatcher结果类型与redirect结果类型的差别主要就是转发和重定向的差别:重定向会丢失所有的请求参数、请求属性——当然也丢失了Action的处理结果。 
③使用redirect结果类型的效果是,系统将调用HttpServletResponse的sendRedirect(String)方法来重定向指定视图资源,这种重定向的效果就是重新产生一个请求,因此所有的请求参数、请求属性、Action实例和Action中封装的属性全部丢失。

<action name="login" class="org.LoginAction">
    <!-- 指定结果的类型为redirect,这意味着系统该Action将重定向到hello.jsp页面-->
    <result type="redirect">/hello.jsp</result>
</action>
6.redirectAction结果类型

①与redirect结果类型非常相似,一样是重新生成一个全新的请求。但与redirect结果类型区别在于:redirectAction使用ActionMapperFactory提供的ActionMapper来重定向请求。 
②当需要让一个Action处理结束后,直接将请求重定向(是重定向,不是转发)到lingyigeAction时,我们应该使用这种结果类型。 
③配置redirectAction结果类型时,可以指定如下两个参数。 
actionName:该参数指定重定向的Action名。 
namespace:该参数指定需要重定向的Action所在的命名空间。

<action name="login" class="org.LoginAction">
    <!-- 配置一个redirectAction结果类型的Result,重定向另一个命名空间的Action -->
    <result type="redirectAction">
        <!-- 指定重定向的actionName -->
        <param name="actionName">dashboard</param>
        <!-- 指定重定向的Action所在的命名空间 -->
        <param name="namespace">/secure</param>
    </result>
</action>
7. 动态结果类型

在指定视图资源时候使用了表达式语法。

<action name="crud_*" class="org.CrudAction" method="{1}">
    <result name="input">/input.jsp</result>
    <result>/{1}.jsp</result>
</action>
8.Action属性值决定物理视图资源

用户在文本框内输入请求的资源,系统将自动跳转到对应的资源。

9.全局结果

Struts2的< result…/>元素配置,也可放在< global-results…/>元素中配置,当在< global-results…/>元素中配置< result…/>元素时,该< result…/>元素配置了一个全局结果,全局结果将对所有的Action都有效。1

10.使用PreResultListener
①PreResultListener是一个监听器接口,它可以在Action完成控制处理之后,系统转入实际的物理视图之间被回调。 
②Struts2应用可由Action、拦截器添加PreResultListener监听器,添加PreResultListener监听器通过ActionInvocation的addPreResultListener()方法完成。一旦为Action添加了PreResultListener监听器,该监听器就可以在应用转入实际物理视图之前回调该监听器的beforeResult()方法;一旦为拦截器添加了PreResultListener监听器,该监听器会对该拦截器所拦截的所有Action都起作用。 







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值