转载:Struts2.3.15.1升级总结

转载网址:http://blog.csdn.net/amosryan/article/details/10350481

由于大家都懂的原因,涉struts2的项目需要将struts2相关包升级至2.3.15.1。今将升级方法和常见问题解决简单总结如下。

一、基本升级操作

1. 获取Struts2.3.15.1jar包

从Struts官网下载struts2.3.15.1发布包:

http://apache.fayea.com/apache-mirror//struts/library/struts-2.3.15.1-lib.zip

2.工程中的jar包替换

以下清单为示例,请根据工程实际情况参照替换成struts-2.3.15.1-lib.zip包中的版本:


原始版本(版本号为示例)


升级后版本


commons-lang-2.*.jar


commons-lang-2.4.jar

commons-lang3-3.1.jar (新增)


commons-logging-1.*.jar


commons-logging-1.1.3.jar


commons-fileupload-1.*.*.jar


commons-fileupload-1.3.jar


freemarker-2.3.*.jar


freemarker-2.3.19.jar


ognl-*.*.*.jar


ognl-3.0.6.jar


struts2-core-2.*.*.*.jar


struts2-core-2.3.15.1.jar


struts2-spring-plugin-2.*.*.*.jar


struts2-spring-plugin-2.3.15.1.jar


struts2-dojo-plugin-2. *.*.*.jar


struts2-dojo-plugin-2.3.15.1.jar


struts2-dwr-plugin-2. *.*.*.jar


struts2-dwr-plugin-2.3.15.1.jar


xwork-core-2.3.*.*.jar或者xwork-2.*.*.jar


xwork-core-2.3.15.1.jar


javassist-3.*.*.GA.jar


javassist-3.11.0.GA.jar

aspectjrt-1.5.2a.jar(见附件3.其它jar包)

aspectjweaver-1.5.2a.jar(见附件3.其它jar包)

(这三个文件若没有则需添加)

注1:工程中以struts2打头的jar包均需替换为2.3.15.1版本;

注2:除非表格中另有说明,则原始版本中若不存在相应jar包,则也不需要添加相应的2.3.15.1版jar包;

3.web.xml可能的修改

注意:如文件中原本已是调整后的配置,则请忽略本部分内容。

3.1修改struts2dispatcher过滤器

原始内容:

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>

</filter>

修改后内容:

<filter>

<filter-name>struts2</filter-name>

<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>

</filter>

3.2去掉或注掉ActionContextCleanUp过滤器

请去掉或注掉web.xml中ActionContextCleanUp过滤器:

<!--filter>

<filter-name>struts-cleanup</filter-name>

<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>

</filter-->

<!--filter-mapping>

<filter-name>struts-cleanup</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping-->

注意:不修改可能导致第二节中问题5。

4.所有*validators.xml可能的修改

注意:如文件中原本已是调整后的配置,则请忽略本部分内容。

4.1标签头的调整

原始内容:

<!DOCTYPE validators PUBLIC

"-//OpenSymphony Group//XWork Validator Config 1.0//EN"

"http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">

修改后内容:

<!DOCTYPEvalidatorsPUBLIC

"-//ApacheStruts//XWork Validator Config 1.0//EN"

"http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">

注意:不修改可能导致第二节中问题2。

二、常见问题及解决方案

1. NoClassDefFoundError:com/opensymphony/xwork2/util/TextUtils问题解决

现象:启动报出以下错误

<2013-7-30 下午03时58分11秒 CST> <Error> <HTTP> <BEA-101020> <[[email protected][app:piccallweb module:piccallweb path:/piccallweb spec-version:2.5]] Servlet failed with Exception

java.lang.NoClassDefFoundError:com/opensymphony/xwork2/util/TextUtils 

at com.googlecode.jsonplugin.SerializationParams.<init>(SerializationParams.java:38)

at com.googlecode.jsonplugin.JSONResult.writeToResponse(JSONResult.java:194)

at com.googlecode.jsonplugin.JSONResult.execute(JSONResult.java:184)

at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:371)

at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:275)

Truncated. see log file for complete stacktrace

>

原因:xwork-core-2.3.15.1.jar中由于升级现已去除com.opensymphony.xwork2.util.TextUtils。

解决方案:

1.替换jar包


原始版本


修改后版本


jsonplugin-0.**.jar

json-lib-1.1-jdk13.jar


struts2-json-plugin-2.3.15.1.jar

json-lib-2.3-jdk15.jar

struts2-junit-plugin--2.3.15.1.jar

2.所有*struts*.xml配置的extends="struts-default"改成extends="json-default"

2.启动报 com.opensymphony.xwork2.config.ConfigurationException问题解决

现象:启动报出以下错误(仅截取了最上面和最下面的异常信息)

com.opensymphony.xwork2.config.ConfigurationException:Caught Exception while registering Interceptor classorg.apache.struts2.interceptor.validation.AnnotationValidationInterceptor

atcom.opensymphony.xwork2.ObjectFactory.buildInterceptor(ObjectFactory.java:214) ~[xwork-core-2.3.15.1.jar:2.3.15.1]

……

Caused by:java.net.UnknownHostException:www.opensymphony.com 

atjava.net.InetAddress.getAllByName0(InetAddress.java:1157) ~[na:1.6.0_29]

atjava.net.InetAddress.getAllByName(InetAddress.java:1083) ~[na:1.6.0_29]

atjava.net.InetAddress.getAllByName(InetAddress.java:1019) ~[na:1.6.0_29]

原因:由于xwork升级,validator.xml的文件头dtd配置需要做相应更新。

解决办法:参见第四节中第(1)部分内容。

3. struts2的标签报错问题解决

现象:显示页面报错:struts2的标签使用出现问题,标签中不支持表达式,如:EL表达式

 This attribute does not supportrequest time values.

<s:select list="#{‘‘:‘‘,‘0‘:‘否‘,‘1‘:‘是‘}"id="prpCmainProp.quakeFlag" name="prpCmainProp.quakeFlag"value="${prpCmainProp.quakeFlag}"

原因:struts2.3.15中使用s标签,默认不支持表达式。

解决办法:修改struts-tags.tld中所有的rtexprvalue标签属性为true。

<rtexprvalue>true</rtexprvalue>

4. ajax异步调用中文参数后台变乱码问题解决

现象:前台通过POST往后台传值时中文字符为乱码

原因:struts2.3.15中org.apache.struts2.dispatcher.Dispatcher类prepare方法中新增了对于异步调用情况字符集强制转换为UTF-8(见下方代码),因此如果工程中jsp指定的字符集不是UTF-8,则中文传至后台会变成乱码。

 if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) {

     encoding = "UTF-8";

}

解决办法:改写org.apache.struts2.dispatcher.Dispatcher类注掉上面三行内容

后直接放在工程源码中

5. ActionContextCleanUp is deprecatedWARNING问题解决

现象:系统启动报“>>>ActionContextCleanUp<<< is deprecated! Pleaseuse the new filters!”WARNING

原因:从Struts2.1.3起废弃了ActionContextCleanUp过滤器,其相关功能在StrutsPrepareAndExecuteFilter实现。

解决办法:参见第三节中第(2)部分内容。

6. struts2TextFieldTagSelectTag等标签required属性报错问题解决

现象:JSP报“contains no methods named setRequired”错误

原因:2.3.X版本中required属性已替换为requiredLabel 解决办法:批量替换标签中的required为requiredLabel。

7. OGNL表达式问题解决

现象:部分系统中对com.opensymphony.xwork2.util.OgnlUtils.java和ognl.OgnlRuntime.java有单独覆盖,升级后存在不兼容现象

解决办法:新的Ognl中已经修复了历史OgnlUtils中存在的问题,所以删除系统中OgnlUtils.java即可,ognl.OgnlRuntime.java这个文件按照新版本Ognl进行覆盖修改

三、其它注意事项

为保证更新成功,请注意删除工程在中间件中产生的临时文件,以weblogic为例,WebLogicDomain下工程的缓存文件所在目录可能包括但不限于以下位置:

    • [domain所在目录]\servers\[server名]\tmp
    • weblogic.xml中配置的working-dir目录
时间: 2024-08-01 10:13:22

转载:Struts2.3.15.1升级总结的相关文章

将Ubuntu 15.10升级到Ubuntu 16.04

Ubuntu 16.04 LTS 代号为 Xenial Xerus,其最终版将于 2016 年 4 月 21 日正式发布,Ubuntu16.04 将是非常受欢迎的开源操作系统 Ubuntu 的第 6 个长期支持版本,其首个 LTS 版本发布于 2006 年 6 月.Ubuntu 16.04 Xenial Xerus 将包含 Unity 7 桌面.Linux Kernel 4.4 和超多应用程序更新.作为新的长期支持版,Ubuntu 16.04 将获得 5 年的 Bug 修复及关键安全补丁更新.

排队美食-点菜订餐神器,V3.15 完美升级

应用名称:排队美食 应用版本: v3.15 应用大小:4M 应用语言:中文 应用介绍 ★手机端的点菜利器,无需到店,随时随地选好一桌大餐. ★可以查看别人吃啥,再也不用不好意思的叫服务员问菜名啦. 多少次,好不容易找到心仪的饭店,看见长长的人群只能左等右等,一个不小心午饭变成了晚饭,晚饭变成了夜宵. 多少次,好不容易在餐馆坐下,面对着密密麻麻的菜单眼花缭乱,几个人累的满头大汗才能选好一桌菜. 多少次,看着服务员拿着令人垂涎三尺的菜走到别桌却不好意思叫住他问问菜名,只能与其擦肩而过. 此时,你热泪

15.6 升级 AlwaysOn 故障转移群集

15.6 升级 AlwaysOn 故障转移群集 15.6.1 先决条件 升级 FCI(故障转移群集实例)所需的先决条件与升级独立实例的要求大致相同. 不能将独立实例升级到 FCI.如果需要将 SQL Server 的独立实例升级至 FCI,必须通过以下步骤实现. (1)安装 FCI. (2)将独立实例的用户数据库数据库迁移至 FCI. 15.6.2 滚动升级 升级 FCI 必须遵从以下顺序. (1)先从被动节点开始运行升级操作.同时运行升级操作的被动节点数量不得超过节点数量的一半. (2)所有的

转载:Ubuntu14.04下升级cmake工具

转载自: 升级CMAKE:https://askubuntu.com/questions/610291/how-to-install-cmake-3-2-on-ubuntu-14-04 解决CMAKE升级后出现的问题:https://stackoverflow.com/questions/18615451/cmake-missing-modules-directory Ubuntu14.04下升级cmake 1.通过下载安装包安装,从这里获取安装包: Downloads,这里安装3.2.2版本.

转载 - Struts2 拦截器详细配置过程

出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Interceptor ,Action去实现这个接口; Interceptor 它其中有三个方法(init(),destroy() ,interceptor()): Init()方法:在服务器起动的时候加载一次,并且只加载一次; Destroy()方法:当拦截器销毁时执行的方法; Interceptor()方

转载 - Struts2拦截器配置

出处:http://blog.csdn.net/axin66ok/article/details/7321430 目录(?)[-] 理解拦截器 1 什么是拦截器 2 拦截器的实现原理 拦截器的配置 使用拦截器 自定义拦截器 1 实现拦截器类 2 使用自定义拦截器 自定义拦截器示例 1 问题描述 2 实现权限控制拦截器类 3 配置权限控制拦截器 4 运行调试 1. 理解拦截器 1.1. 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段

转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验

出处:http://www.cnblogs.com/Laupaul/archive/2012/03/15/2398360.html 使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下,文件的取名格式为:ActionClassName-validation.xml.ActionClassName为action的简单类名,-validation为固定写法.如果Action类为cn.validate.acti

struts2学习(15)struts2防重复提交

一.重复提交的例子: 模拟一种情况,存在延时啊,系统比较繁忙啊啥的. 模拟延迟5s钟,用户点了一次提交,又点了一次提交,例子中模拟这种情况: 这样会造成重复提交: com.cy.action.StudentAction.java: package com.cy.action; import java.io.File; import org.apache.commons.io.FileUtils; import com.cy.model.Student; import com.opensympho

struts2的xml配置(struts-2.3.15)

<!-- 约束文件 --> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <!-- struts2的配置 --> <struts> <package name=" "