spring mvc 坑之PUT,DELETE方法接收不到請求參數

原因:

 Tomcat處理參數的問題:

   1.将請求體中的資料,封裝成一個map

    2.request.getParameter("id")就會從這個map中取值

    3.SpringMvc封裝POJO對象的時候, 會把POJO中每個屬性的值進行request.getParamter();

    4.AJAX發送PUT,DELETE請求引發的PUT,DELETE請求,請求體中的資料,request.getParamter()拿不到

   Tomcat一看是PUT,DELETE就不會封裝請求體中的資料為map,隻有POST形式的請求才封裝請求為map。

解決方案

這個問題有兩種解決方案,第一種比較複雜,第二種比較簡單,正常我們肯定是使用第二種的,當然并不排除使用第一種方式的場景.

配置web.xml檔案

将POST請求轉發為put/delete請求

  

在發送Ajax請求的時候,使用如下的格式:

可以看到不同的地方,首先配置HiddenHttpMethodFilter,這個類可以把POST轉換成對應的_method=?的?号中的内容,進而實作請求.當然每次寫Ajax請求的時候,都需要協商method字段,便于解析.

方案二就比較簡單了.隻需要一個簡單的web.xml的配置.

或者

然後就可以很自然的使用Ajax請求而不需要做任何的處理.