SpringMVC用HiddenHttpMethodFilter配置Rest风格的URL

来源:互联网 发布:淘宝比较好的吉他店 编辑:程序博客网 时间:2024/06/05 20:31

1.REST风格的URL

REST的具体定义可以百度查询。

我在知乎上看见一个比较通俗易懂的回答,在这里分享一下:



2.HiddenHttpMethodFilter

浏览器中FORM表单只支持GET和POST两种类型的HTTP请求,而DELETE和PUT等请求方式并不被支持。于是spring3.0中添加了一个过滤器HiddenHttpMethodFilter,它可以通过自己的doFilterInternal方法把POST(只过滤POST请求)请求转换为其他的http请求。


3.具体配制方法

<1>在form表单中配置如下

<form action="..." method="post">          <input type="hidden" name="_method" value="put" />          ......  </form>  
<2>为了让HiddenHttpMethodFilter生效,要在web.xml中配置它。需要注意的是它必须配置在dispatcher前面。相关配置文件如下:

      <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>url-pattern>         </filter-mapping>

4.遇见的一个问题

在配置好HiddenHttpMethodFilter之后。form表单某个被提交的post请求,被转换成为了put请求,然后映射到某个Controller里面,这个Controller最后返回一个jsp页面。这个时候出现了一个错误:HTTP Status 405 - JSPs only

 permit GET POST or HEAD.

出错的原因是:jsp接口(jsp页面)只支持GET方法和POST方法。

解决方法:给方法加上一个@ResponseBody()注解。



 
原创粉丝点击