ajax使用serialize()方法后,数据无法封装并获取(PUT提交方式!)

来源:互联网 发布:sql授权修改表结构语句 编辑:程序博客网 时间:2024/05/22 15:28

跟着视频学习时候,用到了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中取数据

解决后如图
这里写图片描述

原创粉丝点击