SpringMVC中發(fā)送PUT和DELETE請求

1、在web.xml中配置 HiddenHttpMethodFilter 過濾器。

2、瀏覽器發(fā)送 POST 請求。

3、在發(fā)送 POST 請求時,帶一個 name="_method" value="PUT/DELETE" 的隱藏域。

REST:表現(xiàn)層狀態(tài)轉(zhuǎn)化,如果客戶端想操作服務器端,必須通過某種手段,讓服務器端發(fā)送狀態(tài)轉(zhuǎn)化,而這種轉(zhuǎn)化是建立在表現(xiàn)層之上的,所以就是表現(xiàn)層狀態(tài)轉(zhuǎn)化。

具體來說,就是 HTTP 協(xié)議里面有四個表示操作方式的動詞 GET、POST、PUT、DELETE,分別對應四種基本操作:GET 用于獲取資源,POST 用于新增資源,PUT 用于更新資源,DELETE 用于刪除資源。

/order/1 ? HTTP GET ? ? ? ? ? ? ?獲得 ID=1 的order

/order/1? HTTP PUT ? ? ? ? ? ? ? 更改 ID=1 的order

/order/1? HTTP DELETE ? ? ? ? ? ? ? ? 刪除 ID=1 的order

/order? ? ? HTTP POST ? ? ? ? ? ? ? ? ? ?新增一個 order?

HiddenHttpMethodFilter

在瀏覽器端的 Form 表單中只支持 GET、POST 請求,不支持 PUT、DELETE 請求。Spring 3.0增加了一個過濾器可以將 POST 請求轉(zhuǎn)化為 PUT、DELETE 請求。

在 web.xnl 文件中配置 HiddenHttpMethodFilter 過濾器。

<filter>

<filter-name>HiddenHttpMethodFilter</filter-name>

<filter-class>

org.springframework.web.filter.HiddenHttpMethodFilterorg.springframework.web.filter.HiddenHttpMethodFilter

</filter-class>

</filter>

<filter-mapping>

<filter-name>HiddenHttpMethodFilter</filter-name>

<url-pattern>/*</url-pattern

</filter-mapping>

因為需要將 POST 請求轉(zhuǎn)化為 PUT 和 DELETE 請求,所以在測試界面需要創(chuàng)建一個 form 表單,且提交方法設為 post 。因為 HiddenHttpMethodFilter 過濾器的原理是獲取一個 name 為 _method 的屬性,獲取其值,根據(jù)其值決定轉(zhuǎn)化為 PUT 還是 DELETE 請求,所以需要在表單中設置一個 name 值為 _method 的隱藏域元素。如下:

<form action="/testPUT" method="post">

<input type="hidden" name="_method" value="PUT">

...

<input type="submit" value="testPUT">

</form>

在Controller 類中添加一個方法,用戶響應 PUT 隱射,方法設置為 RequestMethod.PUT

@RequestMapping(value="formtestPUT",method=RequestMethod.PUT)

public String formPut(String username){

System.out.println("put");

return "success";

}

將 POST 轉(zhuǎn)化為 DELETE 類似。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,628評論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,740評論 18 399
  • 本文包括:1、Filter簡介2、Filter是如何實現(xiàn)攔截的?3、Filter開發(fā)入門4、Filter的生命周期...
    廖少少閱讀 7,524評論 3 56
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,017評論 0 11
  • 每當我獨自走在人來人往的大街上,看著出雙入對的佳人,我總會情不自禁的駐足,不是因為羨慕,更多的是想了解了解...
    夏天的迷戀閱讀 405評論 0 0

友情鏈接更多精彩內(nèi)容