发现问题
表单通过PUST请求发送数据给服务器,请求体中可以看到数据
但是控制台中接受到的数据都是null
原因
Tomcat:
1、将请求体中的数据,封装一个map。
2、request.getParameter(“empName”)就会从这个map中取值。
3、SpringMVC封装POJO对象的时候,会把POJO中每个属性的值,request.getParamter(“email”);
然而:
- AJAX发送PUT请求引发的血案:
- PUT请求,请求体中的数据,request.getParameter(“empName”)拿不到
- Tomcat一看是PUT不会封装请求体中的数据为map,只有POST形式的请求才封装请求体为map
解决方法
我们要能支持直接发送PUT之类的请求还要封装请求体中的数据
- 1、在web.xml中配置上过滤器HttpPutFormContentFilter;
- 2、他的作用:将请求体中的数据解析包装成一个map。
- 3、request被重新包装,request.getParameter()被重写,就会从自己封装的map中取数据
但是在配置的时候发现HttpPutFormContentFilter已经被弃用。所以我们使用新的替代品:FormContentFilter。
如下代码添加到web.xml中
<filter>
<filter-name>FormContentFilter</filter-name>
<filter-class>org.springframework.web.filter.FormContentFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>FormContentFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)