在struts2中如何实现转发和重定向?
1、dispatcher:请求转发
这种方式是struts2中默认的转发类型,即内部请求转发,类似于forward的方式,请求转发到一个页面 (默认),不可以用这种方式转发到一个action
使用方式:
在Struts配置文件.xml中定义result节点,并将其type属性设置为dispatcher, 也可不设置,因为默认即是dispatcher
代码示例:
如下图所示

2、redirect: 重定向到某个路径、视图。
在一个Action执行完毕后,希望执行另一个Action,有2种方式可供选择。一种是使用forward,另外一种是使用redirect。
redirect:action处理完后重定向到一个视图资源(如:jsp页面),请求参数全部丢失,action处理结果也全部丢失。
代码示例如下图:

3、redirectAction: 重定向到某个Action
redirect-action:action处理完后重定向到一个action,请求参数全部丢失,action处理结果也全部丢失。
代码示例如下图:

1、在2013年6月底发布的Struts 2.3.15版本被曝出2个高危安全漏洞:
- 使用缩写的导航参数前缀时的远程代码执行漏洞, 用户可以构造http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}链接,command goes here可以换成是破坏脚本的路径和参数,比如fdisk -f等,造成破环系统无法运行的目的。
- 使用缩写的重定向参数前缀时的开放式重定向漏洞, 用户可以构造如知名网站X宝的重定向连接,形如<a href="http://www.X宝.com/item00001.html?redirect:http://黑客/getyourPassword">打折新款</a>,引导用户点击后进入钓鱼网站,在界面上让其进行登陆用以获取用户的密码。
这些漏洞可使黑客取得网站服务器的“最高权限”,从而使企业服务器变成黑客手中的“肉鸡”。

2、带来影响
据乌云平台漏洞报告,淘宝、京东、腾讯等大型互联网厂商均受此影响,而且漏洞利用代码已经被强化,可直接通过浏览器的提交对服务器进行任意操作并获取敏感内容。Struts漏洞影响巨大,受影响站点以电商、银行、门户、政府居多,而且一些自动化、傻瓜化的利用工具开始出现,填入地址可直接执行服务器命令,读取数据甚至直接关机等操作。
可以通过如下图所示工具进行自检。

3、安全漏洞相关解决措施:
Apache Struts团队已发布了最新的Struts 2.3.15.1,修复了上述漏洞,建议采用Struts 2.0至Struts 2.3的网站开发者尽快升级至最新版。
4、下图是 Struts 框架漏洞的年鉴表
