问题描述
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>