如何让RESTful支持DEL和PUT

  RESTful风格里面,@ModelAttribute是一个语义复杂的对象,其中一个就是在所有的被@Controller修饰的方法之前执行;
  @RequestParam:是指url中“?”之后的queryString的内容;
 public ResourcePool get(@RequestParam(required=false) String userName) 
  相应XXX/form?userName=YYYY
  另外,对于@ModelAttrbute而言,只是支持RequestParam,不支持PathVariable,因为没有RequestMapping做定义,根本无法知道模式。
 
  与之相对应的@PathVariable,则是指RESTful命名模式中模式通配的部分
1 RequestMapping("/user/{username}")
2 public ResourcePool get(@PathVariable("username") String userName)  

  另外,RESTful这个美好的事物,PUT/DELETE语义竟然不被浏览器支持。但是spring说我有办法,在web中添加如下的内容

1    <filter>
2         <filter-name>httpMethodFilter</filter-name>
3         <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
4     </filter>
5     <filter-mapping>
6         <filter-name>httpMethodFilter</filter-name>
7         <url-pattern>/*</url-pattern>
8     </filter-mapping>

  完美解决了浏览器不支持PUT/DELETE的问题。这是因为浏览器虽然不支持,但是jsp将会把method=post自动生成为<input type="hidden", value="_method">,不过我是用的spring的标签form,自动生成的可能是spring自己处理的,否则需要自己来添加。

posted on 2017-12-16 21:31  下士闻道  阅读(1462)  评论(0编辑  收藏  举报

导航