网上有不少攻略,但是可能因为每个人之前的框架和升级目标不同,所以还是走了一点弯路,记录下来方便其他旧项目升级吧。
我的目标是把Struts2.3升级到2.5,Spring暂时维持在3.2.3。尝试升到4结果好像不支持iBatis,而且Spring 4以上我已经搭好了Spring + SpringMVC + MyBatis的新框架。
一、升级jar
1、下载Struts2.5
下载地址:http://struts.apache.org/download.cgi#struts2516
下载完整包,这样里面会包含各种依赖包,比较省事。
下载链接:http://mirrors.tuna.tsinghua.edu.cn/apache/struts/2.5.16/struts-2.5.16-all.zip
2、解压缩文件,对应自己项目下的jar文件,我升级了如下图所示的jar。
3、删除文件 xwork-core-2.3.15.1.jar,这个文件在2.5下已经合并到上面的包里了。
二、修改配置文件
1、修改web.xml
由于我使用了sitemesh,所以struts2的prepare和execute是分开写的。下图是原先的配置
新的2.5版本下包名变了,其实就是去掉了.ng,改成如下所示。
<filter>
<filter-name>struts-prepare</filter-name>
<filter-class>
org.apache.struts2.dispatcher.filter.StrutsPrepareFilter</filter-class>
</filter>
<filter>
<filter-name>struts-execute</filter-name>
<filter-class>
org.apache.struts2.dispatcher.filter.StrutsExecuteFilter</filter-class>
</filter>
下图的listener也改一下
改成
<listener>
<listener-class>org.apache.struts2.dispatcher.listener.StrutsListener</listener-class>
</listener>
2、修改文件 struts-tags.tld
用解压缩软件打开文件struts2-core-2.5.16.jar,在META-INF目录下找到文件
将文件覆盖掉项目下WEB-INF目录里的原文件。
三、修改JSP文件
1、修改文件头
改成如下
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
2、修改<s:iterator
将iterator标签里的id关键字改成var,例如
<s:iterator value = "orderList" var = "m" status="idx">
其他文章里提到的其他标签可能我没用到,也可能我没测试出来问题,以后再补充。