struts升级版本之后无法获取到参数

struts升级版本之后无法获取到参数

struts原版本是2.3.32,后来因为某些原因升级成2.5.30。升级前可以获取到Content-Type:multipart/form-data 的数据。但是升级后发现获取不到了。开始以为是其他jar包版本的错误改了很长时间也解决不了。

直到我看到一个文章说“请求的头部信息为“multipart/form-data”时需要做处理才可以通过request.getParameter(“”)的方法获取到请求参数(文章地址:“https://www.cnblogs.com/fengwenzhee/p/9804628.html”)。

我想到struts的自动封装参数也是通过从request的Parameter中取值的,不经过处理时request.getParameter(“”)为空,struts的自动封装参数也会为空。

正常情况下struts的 web.xml 文件下配置的StrutsPrepareAndExecuteFilter过滤器会通过判断是否为Content-Type是不是multipart/form-data类型进行预先处理 2.3.32和2.5.30的判断代码有一些不一样

struts 2.3.32的判断代码图:
struts 2.3.32的判断代码图:struts 2.5.30的判断代码图:
在这里插入图片描述
简单的说2.5.30采取的是正则表达式的方式截取的 具体的我就不太清楚了。感兴趣的可以自己去看看。
由于我发post请求时
“Content-Type"值等于multipart/form-data;boundary=****
可以通过struts 2.3.32的判断,进行request的预处理,但是struts 2.5.30的判断无法通过所以当版本换成2.5.30后request.getParameter(”")为空。

一般是不会出现种情况的主要原因可能是"Content-Type"值等于multipart/form-data;boundary=****的值书写不正确。

解决方法

由于Content-Type的值是封装在公司的jar包中不方便修改所以我自己写一个Filter判断是不是multipart/form-data 是的话就在filter中处理一下。
在这里插入图片描述

只有一个请求这样就直接在接口入口处理一下就行没有必要写filter

搜索了好久没有找到类似的错误,所以记录一下。可以参考一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值