用HiddenHttpMethodFilter 过滤器之前大家得先了解REST风格的URL,这里简单说一下。
我们常用的请求是post跟get,而REST风格的URL还有put跟delete请求,这四种请求对应的是数据库的CURD。put对应Create,post对应Update, get对应Read,delete
当然对应delete了。
通常的浏览器都只是支持post跟get,这时候就需要HiddenHttpMethodFilter 过滤器来将post请求转换为put跟delete请求。
通过查看源代码我们知道,过滤器将post请求转换为我们对应的put跟delete请求的时候需要有一个name为_method的参数才行。废话不多说了,看下代码吧。
首先我们需要在web.xml中配置过滤器,如下这里配置过滤所有请求。
<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>
然后写一个表单发出post请求,当然别忘了带一个name为_method的参数,这个参数可以通过隐藏域来传递。
<form action="testPut" method="post">
<input type="hidden" name="_method" value="PUT"/>
<input type="submit" value="PUT"/>
</form>
接下来写对应的方法,这里简单测试下即可
@RequestMapping(value="testPut/{id}",method=RequestMethod.PUT)
public String testPut(@PathVariable("id") String id){
System.out.println("test Put:"+id);
return SUCCESS;
}
这里说一点当你用tomcat8的时候会报
HTTP Status 405 - JSPs only permit GET POST or HEAD
这个错误