SpringMVC,针对不支持PUT、DELETE提交的游览器处理方式
在REST服务中必不可少的需要PUT、DELETE提交,但是目前很多的游览器并不支持。所以在使用REST前需要进行一些额外的处理。
具体解决方案如下:
1,先添加一个filter。这个filter就是实现这个功能的关键。打开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>
这个就会去拦截带有_method的方法进行处理
2,前端请求修改
标准的rest delete请求ajax书写方式:
$.ajax({ type: "delete", url:url, data: {"contentId": id}, success: function (data) { if (data.status == 0) { alert("成功!"); location.reload(); } else { alert("操作失败!" + data.reason); } } });
这是理想中的请求方式。然而delete方法并不被浏览器支持,所以要改成下面这样:
$.ajax({ type: "post", url:url, data: {"contentId": id, "_method": "delete"}, success: function (data) { if (data.status == 0) { alert("成功!"); location.reload(); } else { alert("操作失败!" + data.reason); } } });
注意标红部分。type为post,因为如果为get的话,data中的参数都会被忽略。参数中加上_method,告诉spring这个是delete请求。如果是表单,则加一个隐藏的input,name是_method即可。这样就可以跨越浏览器来使用rest接口了。