問候struts2升級的新版本2.5
1、jar包的處理
struts2升級到2.5.16版本,大概需要替換更新的架包如下:
struts2-core-2.5.16.jar、struts2-json-plugin-2.5.16.jar、log4j-api-2.10.0.jar、xstream-1.4.10.jar、commons-io-2.5.jar、commons-lang3-3.6.jar
commons-fileupload-1.3.3.jar、freemarker-2.3.26-incubating.jar、javassist-3.20.0-GA.jar、jackson-annotations-2.9.0.jar、jackson-core-2.9.4.jar
jackson-databind-2.9.4.jar、jackson-dataformat-xml-2.1.2.jar、struts2-rest-plugin-2.5.16.jar
刪掉xwork-core-2.3.28.1.jar
2、web.xml的處理
把“<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>”修改成“<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>”
3、所有的strut.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">
<struts>
如果action中使用通配符的話,需要在action便簽之前添加:這是因為新的版本使用的新的安全機制
<global-allowed-methods>regex:.*</global-allowed-methods>
由於新版本的Struts默認不能修改action的訪問後綴,不能使用通配的方式調用action裏的方法,所以添加(註意下,這個可能不是必要的)
註意下放的位置
<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
<constant name="struts.enable.SlashesInActionNames" value="true"/>
使得<constant name="struts.action.extension" value="do" />可以生效
<package name="mypackage" namespace="/" extends="struts-default" strict-method-invocation="false"> 註意這裏添加了strict-method-invocation="false"(註意下,這個可能不是必要的)
還有一點是個坑呀:
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 點擊下面圈起來的就下載了
如果項目還有有問題的話,接著升級其他的jar包即可
問候struts2升級的新版本2.5