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

文章目录

  • 前言
  • 一、设计到的jar包
  • 二、web.xml的更改
  • 三、strust.xml的更改
  • 四、jsp中strust相关标签的更改
  • 总结

前言

由于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"/>

总结

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

Struts2.0.11升级到2.5.30相关推荐

  1. Struts2升级到2.5.30,问题解决及过程记录

    Struts2升级到2.5.30 文章目录 Struts2升级到2.5.30 前言 一.Struts2远程漏洞描述 二.本机环境描述 三.问题描述及解决办法 1.JDK版本需要1.7及以上 2.提升J ...

  2. mysql5.6.40升级到mysql8.0.11 的步骤

    2019独角兽企业重金招聘Python工程师标准>>> 环境: 操作系统: rhel7.5 目标: mysql 5.6.22升级到mysql 8.0.11 mysql5.6.40升级 ...

  3. oracle 11.2.0.3RAC升级到11.2.0.4

    oracle 11.2.0.3RAC升级到11.2.0.4 一.GRID集群软件升级 二.Oracle数据库软件升级 注意 照着大佬的教程一步一步做的 ,升级完看也挺简单,可能会出现一些突发状况,这个 ...

  4. struts2 框架升级从2.3.*,升级到2.5.30

    问题描述: struts2 升级从2.3.*,升级到2.5.30 ,替换了structs相关jar,如果出现如下报错: `ispatcher initialization failed Unable ...

  5. oracle升级后出查询问题,oracle11.2.0.3升级到11.2.0.4出现查询性能问题,分析处理...

    在上次我们的博客中提到帮客户升级oda一体机,将数据库从oracle 11.2.0.3升级到oracle 11.2.0.4,顺利升级后,却出现了一些性能问题,比如说查询表空间的情况时,性能比以前下降了 ...

  6. 三星android应用程序更新,基于Android 11:三星OneUI 3.0详细升级计划公布

    基于Android 11:三星OneUI 3.0详细升级计划公布 2020-12-02 22:06:14 14点赞 18收藏 47评论 本周,三星方面公布了基于Android 11的OneUI 3.0 ...

  7. oracle_home 11.2,Oracle11.2.0.1升级到11.2.0.4

    1.首先安装11.2.0.4数据库,安装步骤略过 2.开始升级 我已经下载了更新软件,所以选择第Skip software update 选择upgrade 按existing database继续下 ...

  8. 三星android的one ui,基于Android 11!三星OneUI 3.0详细升级计划公布

    本周,三星方面公布了基于Android 11的OneUI 3.0具体升级安排,其最早出现了埃及地区手机用户的三星会员APP中. 2020年12月: Galaxy S20 Ultra.Galaxy S2 ...

  9. mysql 5.6升级8.0_Mysql数据库从5.6.28版本升到8.0.11版本部署项目时遇到的问题及解决方法...

    MysqL数据库版本从5.6.28升到8.0.11过程中部署项目时遇到的问题和解决方法,具体介绍如下所示: 首先这个项目用到了hibernate4.2.0,链接MysqL5.6.28没问题,换到8.0 ...

最新文章

  1. JavaScript中常见的错误,你犯了几个?
  2. SharedPreferences记住用户密码 态判断应用是否首次启动等
  3. Azure Backup 简介
  4. VMware Workstation 虚拟机性能优化指南
  5. 中南民族大学计算机图像处理实验报告,中南民族大学数字图像处理程序及图像...
  6. TwinCAT 3 系统程序
  7. 迷信一把:三才数理吉凶
  8. 2007年中国网络游戏市场分析及投资咨询报告(上下卷)
  9. mac风扇控制_如何监视和控制Mac的风扇
  10. 父爱如山,催泪微电影感动全网
  11. 【面试题】将ip地址转换成整数
  12. 前后端交互学习笔记(二):Node.js及npm学习
  13. Python在大数据处理中的实践运用,实践操作精选
  14. Firefox(火狐浏览器)丰富的Web开发辅助插件
  15. 软考哪个证书最有用?
  16. 解决springmvc返回json数据IE出现文件下载和json数据中文乱码问题
  17. excel函数实战(CEILING函数,ROUND函数,FLOOR函数的语法)
  18. java视频通话_Android视频通话Java代码
  19. 城市与区域密度模型(人口密度)
  20. 单页淘宝客要诀 短时间创造销售奇迹

热门文章

  1. [转帖]房博士教你购房(六)
  2. Dockerfile部署LNMP
  3. 顾城其实很可怜 舒婷回忆:他一辈子都在为钱发愁
  4. 如何手动更新mac的固件
  5. iOS完整学习路线图
  6. 7-6 勇争前三 (10 分)
  7. 聊聊 effects 与 reducers--React AntDesign Dva
  8. 数据结构之堆(Heap)的实现
  9. 老调重弹之ffmpeg视频时间同步
  10. JavaIO知识简述