RESTful风格的更新和删除遇到的问题
遇到的问题:
在Ajax中,采用Restful风格PUT和DELETE请求传递参数无效,传递到后台的参数值为null
产生的原因:
Tomcat封装请求参数的过程:
- 将请求体中的数据,封装成一个map
- request.getParameter(key)会从这个map中取值
- SpringMvc封装POJO对象的时候,会把POJO中每个属性的值进行request.getParamter();
AJAX发送PU或者DELETE请求时,请求体中的数据通过request.getParamter()拿不到。Tomcat一检测到是PUT或者DELETE就不会封装请求体中的数据为map,只有POST形式的请求才封装请求为map。
解决方案:
Step1: web.xml中配置
<filter>
<filter-name>httpMethodFilter</filter-name>
<filter-class>
org.springframework.web.filter.HiddenHttpMethodFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>httpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Step2: 前端页面中的ajax发送请求的时候在url中加 &_method=”PUT” 或者&_method=”DELETE” 即可
如图