参考文章:
http://www.ituring.com.cn/article/495914
http://blog.csdn.net/zhangchen1987/article/details/78054960
http://blog.csdn.net/zhangchen1987/article/details/78054512
http://blog.csdn.net/educast/article/details/52212904

1.首先jdk1.6要升级到jdk1.7以上

2.struts2包替换

jar包下载地址:自己搜索jar包名称下载

http://mvnrepository.com/artifact/org.apache.struts/struts2-core

然后替换所有struts开头的jar包,

,删除了xwork-core-2.3.12.jar这个jar包

,commons-lang3-3.4.jar 升级至 commons-lang3-3.6.jar,

,freemarker-2.3.19.jar升级到freemarker-2.3.23.jar

,ognl-3.0.6.jar升级到ognl-3.1.5.jar

,log4j-1.2.13.jar升级到log4j-1.2.17.jar

javassist-3.20.0-GA.ja

删除了xwork-core-2.3.12.jar这个jar包 ,ac.getParameters()需要加个强转map

3.修改web.xml:

1)
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
修改成
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
2)
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
改成
<filter-class>org.apache.struts2.dispatcher.filter.StrutsExecuteFilter</filter-class>

4.struts2配置修改

1)struts.xml部分的头部修改

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">

问题报错:

org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:
.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException

网上解决办法:http://ask.csdn.net/questions/260958

这是因为 struts2.5 为了提升安全性,添加了 allomethod 这么个玩意。

2)解决方法是在配置文件中添加:

package中添加顺序(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-allowed-methods?,global-exception-mappings?,action* 

<package name="exam" extends="json-default">
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="user" class="userAction">
...
</action>
</package>

或者,针对action,在 action 块中添加

<allowed-methods>regex:.*</allowed-methods>

同样也支持在你的 action 上使用 @AllowedMethods 注解
默认的设置为

<global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>

全局设置是增量而不是覆盖的,支持正则和直接匹配方法,源码在这两段

// com.opensymphony.xwork2.DefaultActionProxy#prepare
// com.opensymphony.xwork2.config.entities.ActionConfig#isAllowedMethod

老项目因为爆出漏洞然后我找了一下午这个问题,最终打开研发模式,并搜索官网文档解决。 struts 真是个坑啊。


5.struts2页面修改

页面报错,否则报错如下:

Struts has detected an unhandled exception:
Messages:
/tagDef/export_record_now.jsp (line: 41, column: 4) Attribute id invalid for tag iterator according to
TLD
File: org/apache/jasper/compiler/DefaultErrorHandler.java

1)页面中一些标签需要修改: jstl标签中的变量id要变为var如图:   id="yy"替换成var="yy"

2)页面中一些标签需要修改:jstl标签中的变量escape要变为escapeHtml如图: escape="false"要替换成escapeHtml="false" 

jar包里的META-INF/struts-tags.tld文件复制到Web应用的\WEB-INF目录下。

struts升级2.3.12到2.5.13的更多相关文章

  1. maven私库nexus2.11.4迁移升级到nexus3.12.0

    nexus简介 nexus是一个强大的maven仓库管理器,它极大的简化了本地内部仓库的维护和外部仓库的访问. nexus是一套开箱即用的系统不需要数据库,它使用文件系统加Lucene来组织数据 .n ...

  2. [转]Centos7 内核从3.10升级到4.12过程

    [原文地址] http://blog.csdn.net/youshijifen/article/details/73472434 [摘要] 近期,国家互联网应急中心漏洞(CNCERT)公告中提到Lin ...

  3. mysql 5.7以上版本安装配置方法图文教程(mysql 5.7.12\mysql 5.7.13\mysql 5.7.14)(转)

    http://www.jb51.net/article/90302.htm ******************************* 这篇文章主要为大家分享了MySQL 5.7以上缩版本安装配置 ...

  4. 剑指offer19:按照从外向里以顺时针的顺序依次打印出每一个数字,4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

    1 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印 ...

  5. Struts升级到2.3.15.1抵抗漏洞

    后知后觉,今天才开始修复Struts2的漏洞 详细情形可以参考: http://struts.apache.org/release/2.3.x/docs/security-bulletins.html ...

  6. 更新日志(建议升级到2016.12.17) && 更新程序的方法

    更新程序的方法: 1,在控制面板里点击备份当前数据库文件到磁盘,把当天获取的信息从内存写到磁盘/存储卡.2,下载最新版的源码 wget -O "infopi.zip" " ...

  7. struts升级到最高版本后遇到的问题。关于actionmessage传递问题。

    Struts2升级到最新版本遇到的一些问题 首先是更换对应的jar,如asm.common.ongl.struts等等.更换后发现系统启动不了,按照网上的介绍,先后又更新了slf4j-log4j12- ...

  8. 企业IT管理员IE11升级指南【12】—— 兼容视图列表介绍

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  9. windows系统-phpstudy升级mysql8.0.12安装教程及修改密码和安装注意事项

    1.下载安装包,下载地址:mysql8.0.12  .如果你想要下载其它版本可以选择:mysql历史版本地址. 2.下载好,删除phpstudy的mysql目录.如果数据重要的,注意备份数据!同意把m ...

随机推荐

  1. Linux Shell脚本攻略学习总结:二

    比较与测试 程序中的流程控制是由比较和测试语句来处理的. 我们可以用if,if else 以及逻辑运算符来执行测试,而用一些比较运算符来比较数据项.另外,有一个test 命令也可以用来进行测试.让我们 ...

  2. 寻找春天&nbsp;九宫格日记-2014.04.26

    写九宫格日记 总会在听到某一首歌的时候泪流满面:总会在看到某个似曾相识的背影的时候惆怅莫名,总会在嗅到某种香味的时候默默发呆,总会在经过某个地方的时候频频回首.生命有限,不要把它浪费在重复别人的生活上 ...

  3. 青年之锋文学网(&nbsp;www.xcqnzf…

    青年之锋文学网( www.xcqnzf.com )简介: 青年之锋文学网创建于2013年秋,是河南农业大学(应用科技学院)--青年之锋文学社的官方网站,网站以长篇写作和出版校刊为主题,短篇精彩丰富为中 ...

  4. com.android.ddmlib.SyncException: Read-only file system

    通过eclipse运行Android 程序到测试机时候 控制台出现如下错误: [2014-02-13 15:06:03 - MPlay] Failed to install MPlay.apk on ...

  5. ERP-非财务人员的财务培训教(二)------如何评价公司/部门经营业绩

    一.财务比率分析 第一节  流动性比率 第二节  经营比率 第三节  资本结构比率 第四节  获利能力比率 第五节  现金流量比率 第六节  获现能力比率 二.财务比率金字塔 第二部分   如何评价公 ...

  6. RGB颜色转换算法C语言实现

    typedef unsigned short     TUINT16; #define RGB565(R, G, B) \ (((TUINT16) ((R) >> 3)) << ...

  7. ruby创建某些“关键字”方法别名的语法

    begin和end是ruby的关键字,但是Range中也有名称为begin和end的实例方法.现在问题来了:怎么创建它们的别名方法? 如果用class Range;alias begin_x begi ...

  8. objc/runtime.h 查看私有api

    objc/runtime.h 相关 Objecitve-C的重要特性是Runtime(运行时),在Interacting with the Runtime(交互运行)中,运行时函数部分,苹果给出了/u ...

  9. 每天几分钟跟小猫学前端之node系列:用node实现最简单的爬虫

    先来段求分小视频: https://www.iesdouyin.com/share/video/6550631947750608142/?region=CN&mid=6550632036246 ...

  10. Linux笔记2

    touch 创建文件. echo  输出   >> 将输出写入到文件中   echo sss >> a.txt cat   查看文件内容 帮助命令   man  命令 man ...