AJAX直接发送PUT请求引发的问题

AJAX直接发送PUT请求引发的问题

问题:前端直接发送ajax=PUT时,请求体有数据,但是后端代码中controller层上的对象封装不上。
原因:Tomcat本身的问题 Tomcat运行过程中:
1)、将请求体中的数据,封装一个map。
2)、request.getParameter(“xxx”)就会从这个map中取值。
3)、SpringMVC封装POJO对象的时候,会把POJO中每个属性的值,request.getParamter(“xxx”)得到;
发送PUT请求时,请求体中的数据,request.getParameter(“xxx”)拿不到,Tomcat一看是PUT不会封装请求体中的数据为map,只有POST形式的请求才封装请求体为map。

解决方案:
我们要能支持直接发送PUT之类的请求还要封装请求体中的数据:
1、 配置上HttpPutFormContentFilter;

 <filter>
        <filter-name>HttpPutFormContentFilter</filter-name>
        <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>HttpPutFormContentFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

2、 这个过滤器的作用就是将请求体重的数据解析包装成一个map。
3、 Request被重新包装,request.getParameter(“xxx”)被重写,就会从自己封装的map中取数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值