HiddenHttpMethodFilter进行请求过滤,实现Rest风格的url
Posted Zview
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HiddenHttpMethodFilter进行请求过滤,实现Rest风格的url相关的知识,希望对你有一定的参考价值。
Rest 风格的 URL. 以 CRUD 为例: 新增: /order POST 修改: /order/1 PUT update?id=1 获取:/order/1 GET get?id=1 删除: /order/1 DELETE delete?id=1、
浏览器只支持Post和get的方式,想要实现delete和put的方式,需要使用过滤器HiddenHttpMethodFilter
1,配置过滤器
<filter> <filter-name>hidden</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>hidden</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2,在客户端发起请求
过滤器使用_method的这个参数来决定过滤成是什么类型的,因此,需要在前端的提交表单里面加上_method的隐藏域,注意要使用post方法进行提交
<form action="/rest/12" method="post"> <input type="hidden" name="_method" value="DELETE"> <input type="submit" value="delete"> </form> <form action="/rest/12" method="post"> <input type="hidden" name="_method" value="PUT"> <input type="submit" value="put"> </form> <form action="/rest/12" method="post"> <input type="submit" value="post"> </form> <form action="/rest/12" method="get"> <input type="submit" value="get"> </form>
3,后端控制器的编写
控制器直接使用RequestMapping来指定方法就可以了
@RequestMapping(value = "/rest/{id}",method = RequestMethod.DELETE) public String testrestDELETE(@PathVariable int id, Model model){ model.addAttribute("msg","delete请求"+id); return SUCCESS; } @RequestMapping(value = "/rest/{id}",method = RequestMethod.PUT) public String testrestPUT(@PathVariable int id,Model model){ model.addAttribute("msg","put请求"+id); return SUCCESS; } @RequestMapping(value = "/rest/{id}",method = RequestMethod.POST) public String testrestPOST(@PathVariable int id,Model model){ model.addAttribute("msg","post请求"+id); return SUCCESS; } @RequestMapping(value = "/rest/{id}",method = RequestMethod.GET) public String testrestDELETE(@PathVariable int id, ModelMap modelMap){ modelMap.addAttribute("msg","get请求"+id); return SUCCESS; }
特别注意!!!!!!!!!!!!!
在tomcat8上面是不支持delete和post请求的,因此以上只能在tomcat7上面执行
tomcat8运行时可以进入到相应的控制器,但是视图渲染返回的时候,由于不支持这两种方法,就会报出异常页面
以上是关于HiddenHttpMethodFilter进行请求过滤,实现Rest风格的url的主要内容,如果未能解决你的问题,请参考以下文章
Spring MVC过滤器-HiddenHttpMethodFilter
Spring MVC 使用HiddenHttpMethodFilter配置Rest风格的URL
org.springframework.web.filter.HiddenHttpMethodFilter 不能转换为 javax.servlet.Filter
SpringMVC---RequestMappingAnt 路径PathVariable 注解HiddenHttpMethodFilter 过滤器用 POJO 作为参数