SpringMVC之HiddenHttpMethodFilter 过滤器

  • Post author:
  • Post category:其他


用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

这个错误



版权声明:本文为u010515202原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。