如何讓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自己處理的,否則需要自己來添加。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM