解决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>

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/282070.html

(0)
上一篇 2022年8月24日 23:27
下一篇 2022年8月24日 23:28

相关推荐

发表回复

登录后才能评论