Struts2.0.11升级到2.5.30

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

由于Struts2被爆出了远程执行漏洞,现在一个老项目需要升级到2.5.30版本所出现的问题

一、设计到的jar包

asm-7.1.jar
commons-compress-1.20.jar
commons-lang3-3.8.1.jar
javassist-3.22.0-GA.jar
log4j-api-2.12.1.jar
log4j-core-2.12.1.jar
struts2-convention-plugin-2.5.30.jar
commons-fileupload-1.4.jar
commons-io-2.6.jar
freemarker-2.3.31.jar
ognl-3.1.29.jar
struts2-core-2.5.30.jar
struts2-spring-plugin-2.5.30.jar
本次升级,我所在的项目涉及到这些jar包,需要的可以去maven仓库去下载。还有最重要的,需要将xwork-2.0.4.jar删除,因为2.5.30版本中,struts2-core中已经集成了相关内容,不需要重复导入。

二、web.xml的更改

将org.apache.struts2.dispatcher.ActionContextCleanUp注释

<!--  <filter>
 <filter-name>struts2Cleanup</filter-name>
 <filter-class>
  org.apache.struts2.dispatcher.ActionContextCleanUp
 </filter-class>
</filter> -->
<!--  <filter-mapping>
 <filter-name>struts2Cleanup</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping> -->

将org.apache.struts2.dispatcher.FilterDispatcher改为org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter

<filter>
 <filter-name>struts2</filter-name>
 <filter-class>
  <!-- org.apache.struts2.dispatcher.FilterDispatcher -->
  org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
 </filter-class>
</filter>
<filter-mapping>
 <filter-name>struts2</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>

三、strust.xml的更改

将2.0改为2.5

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

改为

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

在strust.xml中增加

<constant name="struts.enable.DynamicMethodInvocation" value="true" />

在strust.xml中的package中增加regex:.* 这个一定要放在的标签后,要不会报错
在strust.xml中的package中增加strict-method-invocation=“false” 如下:

<package name="default" extends="struts-default" abstract="true" strict-method-invocation="false">
 <global-results>
  <result name="successPage">/frames/global/success.jsp</result>
  <result name="exceptionPage">/frames/global/exception.jsp</result>
 </global-results>
 <global-allowed-methods>regex:.*</global-allowed-methods>
 <global-exception-mappings>
  <exception-mapping exception="java.lang.Exception" result="exceptionPage" />
 </global-exception-mappings>
</package>

要将strust.xml中 redirect-action 改为redirectAction

<result name="success" type="redirect-action">mainFrame</result>

改为

<result name="success" type="redirectAction">mainFrame</result>

若是不改,会action重定向到jsp时报404

四、jsp中strust相关标签的更改

// 原版本
<s:url id="url" action="login">
<s:set id="str1" value="'string1 value'" />
<s:bean id="bean" name="beanName">
<s:iterator value="tradeList" id="trade" status="status"> 
<s:set name="myCode" value=" *** "/>
<s:property escape="true" var="someProperty"/>
//新版本
<s:url var="url" action="login">
<s:bean var="bean" name="beanName">
<s:iterator  var="trade" value="tradeList" status="status">
<s:set var="myCode" value=" *** "/>
<s:property escapeHtml="true" var="someProperty"/>

总结

以上就是本次改造涉及的所有相关问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值