为什么80%的码农都做不了架构师?>>>
关于Struts2漏洞引起的问题我就不详细细说了,最近在各大网站及论坛上都有描述,上面都列出了具体的解决办法对策,对我来说,刚好遇到有现实的案例去解决,在参考了各大论坛、博客的文档之后做下总结,从Struts2.0.11升级到Struts2.3.15的经历,之间看了很多的博客,大概花了半天的时间,基本解决了问题。废话不多说直接来操作吧。
首先肯定要升级struts2的版本,官方2.3.15.1版本下载struts2.3.15.1地址,具体下载地址:http://mirrors.hust.edu.cn/apache//struts/binaries/struts-2.3.15.1-all.zip
下载之后,需要用到如下几个jar包:
commons-fileupload-1.3.jar
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar(替换)
javassist-3.11.0.GA.jar(新增)
ognl-3.0.6.jar(替换)
struts2-core-2.3.15.1.jar(替换)
struts2-dojo-plugin-2.3.15.1.jar
struts2-json-plugin-2.3.15.1.jar
struts2-junit-plugin-2.3.15.1.jar
struts2-spring-plugin-2.3.15.1.jar(替换)
xwork-core-2.3.15.1.jar(替换)
升级包之后启动应用会抛出异常,原因在于struts2.0.x版本用有用到redirect时候,在struts2.3.15.1后result已经改变了,具体改换如下:
改成
改动后,再次启动,在console日志里可以看到会有使用的过期声明,如:
ActionContextCleanUp <<< is deprecated! Please use the new filters!
在升级之后FilterDispatcher、ActionContextCleanUp已经不建议使用了,具体的解决办法是在web.xml中改下struts配置:
原来:
<filter>
<filter-name>struts2filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
filter-class>
filter>
改成:
<filter>
<filter-name>struts2filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
filter-class>
filter>
再次改了之后再启动,已经可以启动整个应用,但是具体的时候过程中,还是会遇到问题,我所碰到的是主要是两个问题:
1、原来使用struts2标签,在jsp页面上用静态方法时如@com.xx@xxx()时,这种页面会有异常,具体的解决办法如下:
在struts2文件中引入:
2、使用到
<%@ taglib prefix="sx" uri="/struts-dojo-tags"%>
,将原来
解决了这两个问题后,基本我就没发现有其他的问题,测试完成,具体的测试办法,可参考各种struts2漏洞的博客,里面有更详细的描述,我这里只讲一下解决办法,希望能给码友们提供参考。