Struts2.3.32 升级之 Struts2.5.26
最近struts2漏洞升级频繁, 一升级就是最新版。公司的老项目升级落到我身上,网上百度了好多,但是总是404,最终还是自己解决。
一.项目介绍
项目是几年前的老项目了,jdk,tomcat都是7系列。
二.上干货
1.首先下载最新的struts 依赖包
http://archive.apache.org/dist/struts/2.5.26/
建议直接下struts-2.5.22-min-lib.zip版本,可以直接全部替换(我自己是全部替换的,具体项目按实际情况)
二.下载log4j依赖包
http://archive.apache.org/dist/logging/log4j/2.6.2
2.5版本之后对日志进行了优化。使用log4j2做日志。
三.删除xwork-core-***.jar
2.5版本已经包含,为防止jar冲突,删除项目中自带xwork-core-***.jar (一定要删除)
四.修改web.xml
Struts过滤器也有更改,少了.ng的路径(见下图 )
五.修改struts.xml
1.指定struts版本,(2.3改成2.5) -- 如有引用,应用的XML也要全部替换
2.特别注意struts.action.extension :指访问后缀(.do .action 等)没有关闭就行
3. 3标签-4标签留一个就行
4.4标签一定要放到 <action> 之前
六.log日志
在src目录下新建 log4j2.xml文件
<?xml version="1.0" encoding="UTF-8"?><configuration status="debug"> <appenders> </appenders> <loggers> <root level="info"> <appender-ref ref="Console"/> <appender-ref ref="log"/> </root> </loggers></configuration>
.........................改完这些项目就能正常启动了........................
我遇到的坑
1.log日志报错
解决:jar包版本太高,换成2.6就OK了
2.项目启动正常,能进入登陆页面。但是点击登录后访问后台404,访问不到action
解决:在struts.xml.配置中<constant name="struts.action.extension" value="action"/>没有关闭。
我的项目请求是没有后缀的,开启这个标签后,会拦截请求处理,不符合就请求不到相应的action。
3.项目启动不起来,试试换下 对应的tomcat