今天使用SpringMVC的restful功能,其中GET,POST方式都测试成功了,但是PUT请求却总是各种错误。如果使用HttpServletRequest作为PUT方法的参数,请求可以接收到,但是无法接收到具体传送的数据,每次都是null,而如果使用@RequestParam做参数或者使用@ResponseBody修饰,则客户端直接无法请求,显示400(网页正在被删除,不提供访问)
最后发现@RequestParam或者@RequestBody注解仅适用于GET或POST请求,并不适用于PUT和DELETE。若使用PUT方法,SpringMVC不解释请求包的参数。
解决方案来了:使用HttpPutFormContentFilter来解决
将下边的过滤器放到你的web.xml中即可,而且添加后@RequestParam将恢复正常
<filter>
<filter-name>httpPutFormFilter</filter-name>
<filter-class>
org.springframework.web.filter.HttpPutFormContentFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>httpPutFormFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
原创文章如转载,请注明出处“
伊人博客”