網上有不少攻略,但是可能因爲每個人之前的框架和升級目標不同,所以還是走了一點彎路,記錄下來方便其他舊項目升級吧。
我的目標是把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">
其他文章裏提到的其他標籤可能我沒用到,也可能我沒測試出來問題,以後再補充。