struts2升级至最新版本2.5.12

由于公司之前很早的项目服务器老是被黑,数据库遭到攻击,原因是利用struts2漏洞,上传一些东西,简直是乱搞,之前的struts版本太低。后来用想过换个后台,但是改动太大,还是升级到最新版本的struts吧,虽然有点蛋疼的经历,最终还是解决了。下面来分享一下我的经历!!!

1.下载struts2   2.5.12版本的jar包

2.首先是替换核心jar包了,下面是我所选jar包,如果原来项目是log4j.jar要保留,把log4j-api-2.8.2.jar也是要拷贝进去(我原本删除项目里的log4j.jar项目报错,tomcat启动不了)

3.删除原工程“xwork-core-2.3.20.jar”

4.修改web.xml,把“<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>”修改成“<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>”

原因是:看图

发现没?新版本的filter包前面没有ng包

5.首先我先在自己做的demo项目里升级的很顺利,我的demo项目本来就是struts2  2.3.30的,配置文件也少,升级起来很容易。

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

b.由于新版本的Struts默认不能修改action的访问后缀,不能使用通配的方式调用action里的方法,所以添加

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

使得<constant name="struts.action.extension" value="do" />可以生效

c.<package name="mypackage" namespace="/" extends="struts-default" strict-method-invocation="false"> 注意这里添加了strict-method-invocation="false"

6.修改jsp的struts标签,新版本里有两处明显区别

a.类似 <s:bean name="com.whb.common.DictItem" id="dictItem" /> 要修改成 <s:bean name="com.whb.common.DictItem" var="dictItem" />

b.类似<s:property value="result" escape="false"/>  要修改成 <s:property value="result" escapeHtml="false"/>

7.我的demo项目就这样很容易的就升级成功了,很是开心,然后就去升级公司项目了,接下来蛋疼的事就来了,先是说hibernate创建sessionFactory出错,原因是用了ams.jar出错,

8.  java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V,让我很是费劲了一番,后来,我就拼命的google和百度,结果还是不行,费了我一个下午和一个早上的时间,最后还是不行,我彻底的服了。最后找到了解决的办法:

出现<init>(Z)V将
将cglib.jar 由2.1版本 改为 2.2
出现<init>(I)V将
将cglib.jar 由2.2版本 改为 2.1

cglib.jar 下载地址    http://www.java2s.com/Code/Jar/c/Downloadcglib220jar.htm   点击下面圈起来的就下载了

9.还有人 碰到动态Action问题,反正我用上面的方法都可以解决的,如果你的动态Action不能解决,给你分享两个链接

http://blog.csdn.net/qq_24059599/article/details/51986761

http://blog.csdn.net/cairo123/article/details/65629216

好了这个升级终于告一段落了,这种东西升级太快,哎,又是令人操蛋的担心!!!!

时间: 2025-01-10 08:04:15

struts2升级至最新版本2.5.12的相关文章

RedHat 6.5部署nginx并升级至最新版本

1 nginx基础知识 1.1 nginx简介 Nginx("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器.目前官方 Nginx 并不支持 Windows,只能在Linux.UNIX.BSD 系统下安装和使用.Nginx 本身只是一个 HTTP 和反向代理服务器,它无法像 Apache 一样通过安装各种模块来支持不同的页面脚本,例如 PHP.CGI 等. 1.2 nginx功能 Nginx 支持简单的负载均衡和

linux 下python升级至最新版本

服务器在配置环境时选择了python2版本,很久没有使用,更新了很多版本,如今想要学习,然后就升级了版本,这里是升级到了python3.7 1.下载 wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz 这里的链接是目前最新的版本,可以去官网直接下载https://www.python.org/downloads/source/  复制下面图片的链接即可 2.解压 tar -xf ***.gz 3.编译 ./configure

Linux CentOS6系统安装最新版本Node.js环境及相关文件配置

Node.js,当前应用非常广泛的Javascript运行环境,采用C++编写的,目前应用较多的用于WEB应用中,执行效率还是非常高的,虽然老左不从业程序的开发,但是有些时候在玩VPS的时候还是会遇到使用Node.JS环境基础的,比如这几天在玩HEXO轻博客程序的搭建有用到Nodejs环境配置,这不正好把基于CentOS6系统的配置记录下来. 因为,我们常用默认的CentOS系统中自带的Nodejs源版本比较低,有些时候兼容不是太好,所以,我们在安装和配置Node.js环境的时候还是直接手工安装

【升级至sql 2012】sqlserver mdf向上兼容附加数据库(无法打开数据库 &#39;xxxxx&#39; 版本 611。请将该数据库升级为最新版本。)

sqlserver mdf向上兼容附加数据库(无法打开数据库 'xxxxx' 版本 611.请将该数据库升级为最新版本.) 最近工作中有一个sqlserver2005版本的mdf文件,还没有log文件,现在需要 附加到sqlserver2012,经过网上一顿搜索,把完整的过程奉上,供大家参考 首先创建数据库 再设置数据库的兼容性(经过尝试,此步骤可以省略) 停掉sqlserver 服务,将需要附件的mdf文件替换掉创建数据生成的mdf,删除掉对应的ldf文件 再启动sqlserver 服务 执行

最新版本的Struts2+Spring4+Hibernate4三大框架整合(截止2014-10-15,提供源码下载)

一. 项目名称:S2316S411H436 项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 + Quartz2.2.1 源代码下载地址: 基本版:http://download.csdn.net/detail/liyunqi007/8040987(此版本还没有整合Quartz) 改进版:http://download.csdn.net/detail/liyunqi007/8042997(比较上个版本,整合了Quartz和Gson) 更详细具体的说

最新版本的Struts2+Spring4+Hibernate4三大框架整合(截止2014-10-15)

一.        项目名称:S2316S411H436 项目原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 二.        项目目的: 整合使用最新版本的三大框架(即Struts2.Spring4和Hibernate4),搭建项目架构原型. 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6. 此外,还有:log4j.slf4j.junit4.ehcache等相关知识点. 三.        项

Ubuntu 12.04安装最新版本PostgreSQL

https://wiki.postgresql.org/wiki/Apt sudo nano /etc/apt/sources.list.d/pgdg.list 粘贴 deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main ctrl+o 回车 ctrl+x wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key ad

Nginx平滑升级到最新版本

(一)简述: 早上收到nginx最新漏洞的通知,Nginx官方发布最新的安全公告,在Nginx范围过滤器中发现了一个安全问题(CVE-2017-7529),通过精心构造的恶意请求可能会导致整数溢出并且不正确处理范围,从而导致敏感信息泄漏. 当使用Nginx标准模块时,如果文件头从缓存返回响应,允许攻击者获取缓存文件头.在某些配置中,缓存文件头可能包含后端服务器IP地址或其他敏感信息.此外,如果使用第三方模块有潜在的可能导致拒绝服务. 影响版本 Nginx 0.5.6-1.13.2 漏洞等级 中危

Visual Studio 2017 RC 下载 最新版本的发行说明

我们非常荣幸地宣布 Visual Studio 2017 RC 现已推出! 此新版本包括我们最新的功能创新和改进. 注意 这里是 Visual Studio 2017 最新版本的发行说明. 下载:Visual Studio Enterprise 2017 RC 若要了解有关其他相关下载的详细信息,请参阅下载页. 另请参阅 Visual Studio 2017 系统要求和 Visual Studio 2017 平台目标以及兼容性. 重要事项 虽然一般情况下支持在生产环境中使用 Visual Stu