解決Http PUT請求方式無法表單傳參問題
問題描述
SpringMVC中,Controller層設定該介面為PUT請求方式。但是請求的時候,只能是url地址拼接引數,不可以像POST請求一樣通過表單方式傳遞引數。
問題原因
對於表單提交引數,tomcat預設只解析POST的表單,對於PUT和DELETE的不處理,所以Spring拿不到。
解決方法
方法一(不推薦)
修改tomcat的server.xml,設定表單傳參支援PUT:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort ="8443"
parseBodyMethods="POST,PUT"
URIEncoding="UTF-8" />
方法二
在專案web.xml檔案中新增Spring自帶的HttpPutFormContentFilter
,主要過濾器位置要在CharacterEncodingFilter
之前:
<!--提供PUT表單傳參支援-->
<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>