跟着视频学习时候,用到了serialize()方法封装一组form中的数据,然后使用PUT方式提交,但是却无法获取到其中的信息,而且信息台还报错说SQL语句错误,如图
如图,用PUT提交数据后,在Controller.java中写了一个输出语句,结果发现获取到的数据居然都是null!
然而,我之前用POST的方式都没问题,能够很好的获取封装好的数据然后提取出来。
我根据信息台去看,说SQL语句报错,然而SQL语句是mybatis-generator自动生成的,肯定是每错的。而真正的问题,就出在PUT提交方式上
简单来说就是:Tomcat本身的设置,令Tomcat无法封装PUT方式提交的数据,只能封装POST提交的数据,这样一来,自然无法读取数据
解决方法:在web.xml中添加如下过滤器
<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>
原理:我们需要能支持直接发送PUT请求,还要封装请求体中的数据,配置如上的xml。将请求体中的数据封装成一个map,request被重新包装,request.getParameter()会被重新封装,就会从自己封装的map中取数据
解决后如图