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

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

  • 相关阅读:
    java传值问题.
    方法重载
    java中各种运算符
    java中各种运算符
    java网址
    对象的初始化顺序
    Exploit,shellcode经验技巧杂谈
    关于16位的OS尝试
    window系统下的远程堆栈溢出 《实战篇》
    Exploit,shellcode经验技巧杂谈
  • 原文地址:https://www.cnblogs.com/chenkeyu/p/7853680.html
Copyright © 2020-2023  润新知