SSM中使用put請求不能自動封裝前端傳來的值

在ssm中若是直接發送ajax=PUT的請求

1. 出現的問題 :

  • 請求體中有數據
  • 可是對象封裝不上,對象爲空值
  • 後臺會出現報錯,顯示sql語句出現異常

緣由

  1. tomcat : 是將請求體中的數據,封裝一個map
  2. 經過getparameter 來獲取
  3. SpringMVC 封裝POJO對象的時候回會用上面的那個方法進行獲取
  4. 可是 tomcat會應爲不是post請求,就會不自動封裝
  5. Tomcat一看是PUT不會封裝請求體中的數據爲map,只有POST形式的請求才封裝請求體爲map

解決方法

  1. 配置上HttpPutFormContentFilter;
  2. 他的做用;將請求體中的數據解析包裝成一個map。
  3. request被從新包裝,request.getParameter()被重寫,就會從本身封裝的map中取數據

建議

建議這兩個攔截器都應該寫上java

<!--4. 使用Rest風格的URL,將頁面的請求能夠轉換成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> <filter> <filter-name>httpPutFormContentFilter</filter-name> <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class> </filter> <filter-mapping> <filter-name>httpPutFormContentFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 
相關文章
相關標籤/搜索