Struts2 2.3.15升级2.5.30总结

Apache Struts2 2.3.15升级2.5.30踩坑总结
  • 升级内容

    • 程序Struts2 2.5.30升级适配
  • 版本要求

    • Apache Struts 框架的 2.5.x 系列最低要求以下规范版本:

      Tomcat7、Servlet API 2.4、JSP API 2.0 和 Java 7

  • 升级jar可参考官网,根据项目中用的jar包进行升级替换
    Struts2 2.3.15升级2.5.30总结_第1张图片

https://struts.apache.org/download.cgi#struts-ga

注意:xwork-core*.jar包直接删除,struts2-core-2.5.30.jar中已包含xwork-core的内容

  • 升级操作流程:

    修改web.xml、struts.xml,替换新版本依赖jar包,使用新版本依赖jar重新编译action包下相关struts代码,上传服务器进行替换

    • web.xml修改内容
    
            struts2
            org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
        
    
        
            struts2
            /*
        
    

    • struts.xml修改内容

      • 修改头部内容,版本号改为2.5
      
      
      • 增加访问权限配置regex:.*
      
      
      
      	regex:.*
      
      
      
    • jar包替换

      根据项目中实际用到的jar进行版本升级,升级原则遵守,用到即升级,没用到不管,本项目Spring相关jar包没有升级,具体jar可参考Struts官网链接进行比对。

      https://struts.apache.org/download.cgi#struts-ga
      

    • struts代码

      Map parameterMap = mappingConfig.getParams();
      invocation.getInvocationContext().setParameters(new HashMap(parameterMap))
        
      修改为:
      HttpParameters parameters = HttpParameters.create(mappingConfig.getParams()).build();
      invocation.getInvocationContext().setParameters(parameters)
        
      根据替换struts2 2.5.30后API变动进行修改,action包下相关代码无需改动,但需要jar包替换升级后,重新编译action相关代码,服务器上进行替换,启动程序。
      

    如遇到如下问题:

    (1)convention.annotation.Result.name()(Found data of type calss java.lang.String[index])
    asm相关jar包从3.3.1升级至7.3.1后,可能是没有重新编译action相关代码导致。
    (2)jar包缺失类问题:
    建议jar升级进行追一替换,如使用rm -f asm*这种语法,jar包多加少加都可能会导致项目报错,细心逐一替换可避免很多问题。
    (3)升级参考文档:
    登录官网:https://struts.apache.org/
    查阅版本相关修改信息比网上乱七八糟博客更有用,官方文档更具有参考意义。
    

你可能感兴趣的:(struts,apache,java)