Java教程

解决Spring MVC中put和delete请求不能获取到前端页面传来数据的问题

本文主要是介绍解决Spring MVC中put和delete请求不能获取到前端页面传来数据的问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
springMVC中的非简单请求

在发请求加入data字段
$(function () {
    $("#btnPost").click(function () {
        $.ajax({
            url: "/restful/request/100",
            type: "post",
            data:"name=wei&age=21",
            dataType: "json",
            success: function (json) {
                $("#message").text(json.message+":"+json.id);
            }
        })
    })

发现post能正常获取到前端传过来的数据,put请求则不能。why?
涉及到一个历史问题,作为最早的SpringMVC当然是为我们网页服务的,默认网页在表单提交的时候只支持post和get这两种请求,对于put和delete这两种特殊请求是不支持的。但是随着技术的演进,put和delete作为Spring MVC是必须要考虑的。但SpringMvc又不能把put和delete请求的处理方式强塞进原有的代码中,所以SpringMVC做了一个折中的方案:作为put和delete这两种非简单请求,springMVC提供了一个额外的表单内容过滤器来对put和delete进行额外处理。具体写法是:在web.xml中配置表单内容过滤器 见下文

在web.xml添加表单内容过滤器
<filter>
    <!--表单内容过滤器  (利用这个过滤器对put和delete请求进行支持)就能支持参数的获取-->
    <filter-name>formContentFilter</filter-name>
    <filter-class>org.springframework.web.filter.FormContentFilter</filter-class>
</filter>
<!--要增加filter mapping对url进行过滤  (默认对所有请求地址进行过滤)-->
<filter-mapping>
    <filter-name>formContentFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
这篇关于解决Spring MVC中put和delete请求不能获取到前端页面传来数据的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!