struts2升级到2.5.33带来的新问题,大表单数据提交找不到Action

现象:

     由于低版本存在安全漏洞,现在升级struts2.5.33后,在web端发送大的表单数据到后台Action时候,请求程序异常,但是没有任何堆栈信息出现,着实困扰人,问题极难排查,没有像spring那样开门见山。

解决:

一、struts2.5.33 新增表单参数限制

    默认的单个字段的长度是4096,如果一个字段超过4096就会出现异常了

    在struts.xml中新添加

<!--  maxStringLength 为提交表单中 单个字段的长度 -->
<constant name="struts.multipart.maxStringLength" value="2000000"/>

二、原理剖析

 1、在2.5.33中新增加了对表单长度的验证
    org.apache.struts2.dispatcher.multipart.AbstractMultiPartRequest#setMaxStringLength

    @Inject("struts.multipart.maxStringLength")
    public void setMaxStringLength(String maxStringLength) {
        this.maxStringLength = Long.parseLong(maxStringLength);
    }
2、在struts2代码中,对各种拦截器的结果汇总的地方,如果有异常,就会找input视图,一般人不会建立这个视图,然而,这里没有报任何堆栈异常,真实的错误都在 
validationAwareAction.hasErrors()

如图所示:

    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor#doIntercept

   

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值