Spring用form表单实现PUTDELETE提交

Posted 宇的季节

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring用form表单实现PUTDELETE提交相关的知识,希望对你有一定的参考价值。

在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);
                    }
                }
            });

注意标红部分。typepost,因为如果为get的话,data中的参数都会被忽略。参数中加上_method,告诉spring这个是delete请求。如果是表单,则加一个隐藏的inputname_method即可。这样就可以跨越浏览器来使用rest接口了。

 

以上是关于Spring用form表单实现PUTDELETE提交的主要内容,如果未能解决你的问题,请参考以下文章

Django-1

用json提交表单有啥好处

怎么用springmvc处理form表单的ajax验证

form的onsubmit事件--表单提交前的验证最佳实现方式

Struts(十四):通用标签-form表单

spring-mvc实现网页文件上传