由于浏览器只支持发送 get 和 post 方式的请求,那么该如何发送 put 和 delete 请求呢?
SpringMVC 提供了 **HiddenHttpMethodFilter** 帮助我们将** `POST` **请求转换为** DELETE** **或` PUT` 请求 。
`HiddenHttpMethodFilter` **处理 put 和 delete 请求的条件:
- 当前请求的请求方式必须为
post。 - 当前请求必须传输请求参数
_method。
满足以上条件,**HiddenHttpMethodFilter** 过滤器就会将当前请求的请求方式转换为请求参数
_method的值,因此请求参数 _method 的值才是最终的请求方式。
在 web.xml 中注册 **HiddenHttpMethodFilter**。
<filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter- class></filter><filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
注:
- 目前为止,SpringMVC中提供了两个过滤器:
CharacterEncodingFilter和HiddenHttpMethodFilter。
- 在
web.xml中注册时,必须先注册CharacterEncodingFilter,再注册HiddenHttpMethodFilter
原因:**
在CharacterEncodingFilter 中通过request.setCharacterEncoding(encoding) 方法设置字符集的request.setCharacterEncoding(encoding) 方法要求前面不能有任何获取请求参数的操作
而HiddenHttpMethodFilter 恰恰有一个获取请求方式的操作:String paramValue = request.getParameter(this.methodParam);
