zoukankan      html  css  js  c++  java
  • struts升级2.3.12到2.5.13

    参考文章:
    http://www.ituring.com.cn/article/495914
    http://blog.csdn.net/zhangchen1987/article/details/78054960
    http://blog.csdn.net/zhangchen1987/article/details/78054512
    http://blog.csdn.net/educast/article/details/52212904

    1.首先jdk1.6要升级到jdk1.7以上

    2.struts2包替换

    jar包下载地址:自己搜索jar包名称下载

    http://mvnrepository.com/artifact/org.apache.struts/struts2-core

    然后替换所有struts开头的jar包,

    ,删除了xwork-core-2.3.12.jar这个jar包 

    ,commons-lang3-3.4.jar 升级至 commons-lang3-3.6.jar,

    ,freemarker-2.3.19.jar升级到freemarker-2.3.23.jar

    ,ognl-3.0.6.jar升级到ognl-3.1.5.jar

    ,log4j-1.2.13.jar升级到log4j-1.2.17.jar

    javassist-3.20.0-GA.ja

    删除了xwork-core-2.3.12.jar这个jar包 ,ac.getParameters()需要加个强转map 

    3.修改web.xml:

    1)
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    修改成
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    2)
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
    改成
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsExecuteFilter</filter-class>

    4.struts2配置修改

    1)struts.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">
    

    问题报错:

    org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:  
    org.apache.struts2.json.JSONException: org.apache.struts2.json.JSONException:    
    .apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException  
    

    网上解决办法:http://ask.csdn.net/questions/260958

    这是因为 struts2.5 为了提升安全性,添加了 allomethod 这么个玩意。

    2)解决方法是在配置文件中添加:

    package中添加顺序(result-types?,interceptors?,default-interceptor-ref?,default-action-ref?,default-class-ref?,global-results?,global-allowed-methods?,global-exception-mappings?,action* 

    <package name="exam" extends="json-default">
     <global-allowed-methods>regex:.*</global-allowed-methods>
    <action name="user" class="userAction">
            ...
    </action>
    </package>

    或者,针对action,在 action 块中添加

    <allowed-methods>regex:.*</allowed-methods>

    同样也支持在你的 action 上使用 @AllowedMethods 注解
    默认的设置为

    <global-allowed-methods>execute,input,back,cancel,browse,save,delete,list,index</global-allowed-methods>
    

    全局设置是增量而不是覆盖的,支持正则和直接匹配方法,源码在这两段

    // com.opensymphony.xwork2.DefaultActionProxy#prepare  
    // com.opensymphony.xwork2.config.entities.ActionConfig#isAllowedMethod  
    

    老项目因为爆出漏洞然后我找了一下午这个问题,最终打开研发模式,并搜索官网文档解决。 struts 真是个坑啊。


    5.struts2页面修改

    页面报错,否则报错如下:

    Struts has detected an unhandled exception:
    Messages:    
    /tagDef/export_record_now.jsp (line: 41, column: 4) Attribute id invalid for tag iterator according to 
    TLD
    File:    org/apache/jasper/compiler/DefaultErrorHandler.java
    

    1)页面中一些标签需要修改: jstl标签中的变量id要变为var如图:   id="yy"替换成var="yy"

    2)页面中一些标签需要修改:jstl标签中的变量escape要变为escapeHtml如图: escape="false"要替换成escapeHtml="false" 

     jar包里的META-INF/struts-tags.tld文件复制到Web应用的WEB-INF目录下。

  • 相关阅读:
    IDEA创建MAVEN JavaWeb项目中 Target文件夹中没有lib包
    2019年上半年下午第六题
    2021年上半年下午第六题
    2019年下半年下午第六题
    软考2019下半年下午第三题
    软考2019年下半年下午第二题
    2019年下半年软考下午第一题
    软考2019年上半年下午第三题
    2019软考上半年下午第二题
    2019年上半年软考下午题第一题
  • 原文地址:https://www.cnblogs.com/tong2018/p/8391191.html
Copyright © 2011-2022 走看看