【struts2】名为redirect的ResultType
1)基本使用
名称为“redirect”的ResultType,在struts-default.xml里的配置如下:
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
通过配置可以看出,它对应的实现类是ServletRedirectResult。
这种Result同常也使用JSP作为视图技术。它包装的是javax.servlet.http.HttpServletResponse类的sendRedirect方法,这个ResultType也是用来实现跳转到下一个页面的。但是它的功能与上面的dispatcher不同,“redirect”的特点是全新的请求,这就意味着,本次请求和跳转到下一个页面的请求是不同的对象,因此它们的值是不一样的。
2)特殊用法
对比着dispatcher的ResultType,我们看看它的特点。同样在<result>元素的定义中可以使用Action的execute方法运行之后的数据。同样在Action中定义一个folder字符串,并在execute或者validate方法中对它赋值。那么,在<result>的定义中就可以引用folder这个变量,示例如下:
<result name="toWelcome" type="redirect">/${folder}/welcome.jsp</result>
由于redirect采取重定向的方式,下一个页面会取不到上一个请求对象里面的值,如果要传值的话,可以采用get的方式传参。示例如下:
<result name="toWelcome" type="redirect">/${folder}/welcome.jsp?account=${account}</result>
上面这个配置,会向新请求里面传入account的参数,这样在欢迎页面就可以获取到account的值了。但是,前面写的欢迎页面是取不到这个account的值的,为什么呢?先来看看前面写的欢迎页面取值的那句话,如下:
欢迎账号为<s:property value="account"/>的朋友来访
以前的欢迎页面,是通过使用Struts2的标签来获取的account的值,Struts2的标签会到Struts2的值栈里面去取值,而这里是执行Result的时候,才再请求上添加了account这么一个参数,然后就直接回到页面了,根本不会再走一次Struts2的运行过程,也就是说,这里传递的这个参数,根本不会进入到这个请求对应的值栈,因此这里这个写法是取不到值的。
那么该怎么写才能获取到这个account参数的值呢?有两个简单的方法,一个是直接使用Servlet的HttpServletRequest对象的方法来获取参数,另外一个方法是直接使用EL表达式,示例如下:
欢迎账号为${param.account}的朋友来访
<br/>
欢迎账号为<%=request.getParameter("account") %>的朋友来访
3)更完整的配置方式
与“dispatcher”一样,“redirect”也可以配置<param>,同样可以配置location和parse,如下:
<result name="toWelcome" type="redirect">
<param name="location">/s2impl/welcome.jsp</param>
<param name="parse">true</param>
</result>
参考资料:http://www.iteye.com/topic/1124526
【struts2】名为redirect的ResultType的更多相关文章
- 【struts2】名为chain的ResultType
1)基本使用 名称为“chain”的ResultType,在struts-default.xml里的配置如下: <result-type name="chain" class ...
- 【struts2】名为dispatcher的ResultType
1)基本使用 名称为“dispatcher”的ResultType,在struts-default.xml里的配置如下: <result-type name="dispatcher&q ...
- nginx反向代理tomcat应用,struts2网站程序redirect时导致请求地址错误的解决方法
一个使用struts2的网站在登录页面需要进行redirect跳转,大致如下: <package name="admin" extends="httl-defaul ...
- Struts2中的redirect参数传递
在Action之间传递参数有如下方法: (方法一): Xml代码 1. <result name="topic" type="redirect">f ...
- 【struts2】Result和ResultType
简单的说,Result是Action执行完后返回的一个字符串,它指示了Action执行完成后,下一个页面在哪里.Result仅仅是个字符串,仅仅是用来指示下一个页面的,那么如何才能够到达下一个页面呢? ...
- Struts2 基本的ResultType 【学习笔记】
在struts2-core.jar/struts-default.xml中,我们可以找到关于result-type的一些配置信息,从中可以看出struts2组件默认为我们提供了这 些result-ty ...
- JavaWeb -- Struts2 ResultType细化, 国际化
1. ResultType细化 <result-types> <result-type name="chain" class="com.opensymp ...
- 【Struts2二】结果集(result-type)
在jsp/servlet中,结果集一般是指请求转发和重定向这两种. Struts2作为框架,提供了基于这两种的很多其它的结果集! 在struts-default.xml中定义了一些默认的结果集: ...
- struts2 CVE-2013-2251 S2-016 action、redirect code injection remote command execution
catalog . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch Fix 1 ...
随机推荐
- Linux 查看服务器配置
//CPU cat /proc/cpuinfo |grep processor; //内存 free -g; //硬盘 df -h;
- mac 苹果鼠标 magic mouse2 当触摸代替点击当触摸板教程
本文解决 mac 苹果鼠标 magic mouse2 触摸代替点击,鼠标当触摸板教程 买了magic mouse2之后,发现官方不推荐使用触摸代替点击,我感觉很不爽,这不就是一个触摸板嘛,于是各种搜软 ...
- python数据结构与算法 29-1 哈希查找
).称为哈希查找. 要做到这种性能,我们要知道元素的可能位置.假设每一个元素就在他应该在的位置上,那么要查找的时候仅仅须要一次比較得到有没有的答案,但以下将会看到.不是这么回事. 到10. water ...
- 【转】ionic2 返回按钮
首先可以在 app.module.ts 文件中配置. @NgModule 中的 imports 属性的 IonicModule.forRoot 第二个参数,如下: IonicModule.forRoo ...
- php 字符串中的\n换行符无效、不能换行的解决方法
php 字符串中的\n换行符无效.不能换行的解决方法 程序的中的换行符\n会直接输出,无法正确换行,解决方法是把单引号改为双引号 aa
- 关于Windows勒索病毒以及445端口防护
前两天,与这个周末,5月12日起,Onion.WNCRY两类敲诈者病毒变种在全国乃至全世界大范围内出现爆发态势,大量个人和企业.机构用户中招. 与以往不同的是,这次的新变种病毒添加了NSA(美国国家安 ...
- 【转】一些linux基础命令
学习Linux,其实很多基础命令很重要. 不论多么复杂的shell或者命令组合,都是一个一个的拼接组合命令拼接而成: 大号一个基本功,遇到需要的场景,信手拈来,随意组合拼接,是非常重要的. 恰好看到一 ...
- everything排除指定目录和文件
- Vue.js 2.0 独立构建和运行时构建的区别
Vue.js 2.0 独立构建和运行时构建的区别 在使用 Vue.js 2.0 时,有独立构建(standalone)和运行时构建(runtime-only)两种版本可供选择.而在 Vue.js 1. ...
- 配置Git绑定Git@OSC
用户名,这个名字会出现在以后的提交记录中. git config --global user.name "Git@OSC用户名" 然后是Email,同样,这个Email也会出现在你 ...