老项目中struts使用的是2010年的2.1.6老版本,基于以下原因,必须进行升级
- struts2刚刚爆出的安全漏洞问题(S2-021,S2-020)
- xwork在tomcat6/7中deploy/undeploy操作时的内存泄漏问题(WW-3768)
- struts2新版的其他内容改善
原maven的pom依赖:
<dependency> <groupId>com.googlecode</groupId> <artifactId>jsonplugin</artifactId> <version>0.33</version> </dependency> <dependency> <groupId>opensymphony</groupId> <artifactId>ognl</artifactId> <version>2.6.11</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.1.6</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.1.6</version> </dependency> <dependency> <groupId>com.opensymphony</groupId> <artifactId>xwork</artifactId> <version>2.1.2</version> </dependency>
升级修改后的pom依赖
<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>2.3.16.2</version> </dependency> <dependency> <groupId>ognl</groupId> <artifactId>ognl</artifactId> <version>3.0.6</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.3.16.2</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.16.2</version> </dependency> <dependency> <groupId>org.apache.struts.xwork</groupId> <artifactId>xwork-core</artifactId> <version>2.3.16.2</version> </dependency>
这里面需要注意已经改了groupid的,比如ognl和jsonplugin。
如果jsonplugin没有配好,会发生以下类似错误:
java.lang.NoClassDefFoundError: com/opensymphony/xwork2/util/TextUtils com.googlecode.jsonplugin.JSONUtil.writeJSONToResponse(JSONUtil.java:197) com.googlecode.jsonplugin.JSONResult.writeToResponse(JSONResult.java:192) com.googlecode.jsonplugin.JSONResult.execute(JSONResult.java:182)