1、概述
HTTP協議里面,四個表示操作方式的動詞:GET、POST、PUT、DELETE,它們分別對應四種基本的操作,GET用來獲取資源,POST用來新建資源,PUT用來更新資源,DELETE用來刪除資源。
示例:
—— /order/1 HTTP GET:得到id=1的order
—— /order/1 HTTP DELETE:刪除id=1的order
—— /order/1 HTTP PUT:更新id=1的order
—— /order HTTP POST:新增order
2、如何發送一個PUT和DELETE請求?
常見的有post和get請求,那么怎么弄一個put和delete請求出來呢?瀏覽器的form表單只支持GET和POST請求,而DELETE和PUT請求並不支持。為解決這個題,Spring3.0添加了一個 HiddenHttpMethodFilter 過濾器,可以將帶有_method參數的http post請求轉換為put或delete請求。從而解決問題。
如何發送PUT和DELETE請求呢?
①、需要在web.xml文件中配置一個HiddenHttpMethodFilter:
<!-- 配置org.springframework.web.filter.HiddenHttpMethodFilter:可以把POST請求轉化為DELETE或PUT請求 --> <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請求
③、在發送post請求時攜帶一個 name="_method" 的隱藏域,其值為delete或者是put。如下:
<!-- 發送put請求 --> <form action="rest/put/1" method="post"> <input type="hidden" name="_method" value="put" > <input type="submit" value="3、tetRest PUT請求"> </form> <!-- 發送delete請求 --> <form action="rest/delete/1" method="post"> <input type="hidden" name="_method" value="delete" > <input type="submit" value="4、tetRest DELETE請求"> </form>
④、在接受PUT或DELETE請求方法的注解@RequestMapping中設定method為PUT或DELETE,如下:
@RequestMapping(value="/rest/put/{id}", method=RequestMethod.PUT) public String testRestPut(@PathVariable Integer id){ System.out.println("testRestPut 方法,響應PUT請求。id = " + id); return SUCCESS; } @RequestMapping(value="/rest/delete/{id}", method=RequestMethod.DELETE) public String testRestDelete(@PathVariable Integer id){ System.out.println("testRestDelete 方法,響應DELETE請求。id = " + id); return SUCCESS; }