Struts2_学习笔记(六)----result type、global result(extends)、dynamic result、带参数的result、result总结

本文详细介绍了Struts2框架中的结果类型,包括dispatcher、redirect、chain等,并讲解了全局结果集、动态结果集及带参数的结果集的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、result结果集类型(参考Struts2_1500_ResultType)

在默认时,<result>标签的type属性值是“dispatcher”(实际上就是转发,forward),所有的result-type可以在struts2-core-2.x.x.jar包或struts2源代码中的struts-default.xml文件中找到,他们分别为:

1、dispatcher用来转向页面,运用服务器跳转。

2、redirect重定向到一个URL ,客户端跳转,被跳转的页面中丢失传递的信息,如request   

3、chain 用来处理Action链,被跳转的action中仍能获取上个页面的值,如request信息。    

4、redirectAction重定向到一个Action ,跳转的页面中丢失传递的信息,如request      

5、freemarker处理FreeMarker模板  

6、httpheader控制特殊HTTP行为的结果类型 

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

8、velocity处理Velocity模板

9、xslt   处理XML/XLST模板    

10、plaintext显示原始文件内容,例如文件源代码 ,一般使用在代码学习网站

11、tiles结合Tile使用

常见问题:使用chain,如果需要forward到其他package下的action,需要加如下参数:

<result type="chain">

            <param name="actionName">dashboard</param>

            <param name="namespace">/secure</param>

        </result>


二、GlobalResult(参考Struts2_1600_GlobalResult)

在package中进行如下配置,整个package内都可以使用。

<global-results>

            <result name="mainpage">/main.jsp</result>

</global-results>


如果要在其他的package里extends相应的package同样可以使用全局结果集。

extends在实际的项目开发也是经常使用,例如 对于各个模块的一些可以共用的配置(错误界面、未找到相应Action等)可以统一写到一个package中,各个模块继承共用配置。

三、dynamicresult动态结果集(参考Struts2_1700_DynamicResult)

对于Action中的某一属性x进行动态指定具体的结果location,在struts.xml中可以在result中用 ${x}进行调用。$可以取 Value Stack中的值。这种方法是实际应用不多。

四、带参数的结果集(参考Struts2_1800_ResultWithParams)

对于服务器端跳转(forward)不需要传递参数,因为对于一个request只有一个Value Stack,多个Action可以共用。对于客户端跳转(redirect)需要传递参数,因为存在多个request,Value Stack中的值不能共用。

配置文件中进行如下配置

<result type="redirect">/user_success.jsp?t=${type}</result>
在user_success.jsp中应该使用  <s:property value="#parameters.t"/> 从Action Context中取值,不能用<s:property value="t"/> 从Value Stack中取值,因为Value Stack 中为空。

五、Result总结

常用四种类型:

1、  dispatcher(默认)

2、  redirect

3、  chain

4、  redirectAction

全局结果集

5、  global-results | extends

动态结果(了解)

6、  在action中保存一个属性,存储具体的结果location

传递参数

7、  客户端跳转才需要传递

8、  ${}表达式(不是EL)

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值