form表单put方式、delete方式提交处理
为了实现springmvc的rest风格设计,使用put提交方式遇到的问题,这里简单记录一下。
form表单只支持get和post的方式提交,我们要正确找到controller层的put方法,有两种方法可以完成。
1.使用HiddenHttpMethodFilter
在web.xml中配置如下过滤器:
<filter>
<filter-name>HttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
jsp的form表单直接使用method="POST"的方式提交,提交一个隐藏的input
2.使用HttpPutFormContentFilter
在web.xml中配置如下过滤器
<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>
JSPs only permit GET POST or HEAD的解决方案(REST风格)
出现下图这种情况时是controller所return的jsp视图找不到, 所以提示请求只允许GET、POST、HEAD。
解决方案
1.若返回视图,把表单中name为_method的input值改为GET、POST、HEAD,不能使用PUT、DELETE等。
2.若返回字符串,则加上@ResponseBody。(可以把返回的对象转换为json数据写进response的body区域中)。