关于springmvc表单POST请求转化为PUT请求的解决方案

在学习SpringMVC的时候,基于REST风格的代码在方便我们开发的同时,也带来了许多的坑。最典型的坑就是在写基于Springmvc CRUD的更新操作时,前台表单通过POST请求提交数据给后台,后台基于REST风格的代码是需要接受PUT请求的,所以不处理POST请求转变为PUT请求,后台控制器会出现null值的情况。下面总结一下将POST请求转化为PUT请求的解决方案。

1)借助HiddenHttpMethodFilter,来讲POST请求转化为PUT请求

在web.xml中添加HiddenHttpMethodFilter

<filter>
	<filter-name>HiddenHttpMethodFilter</filter-name>
	<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>HiddenHttpMethodFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

然后在前端form表单中,只需要添加如下关键代码,即可通过HiddenHttpMethodFilter来讲POST请求转化为PUT请求,即可满足基于REST风格的URI。

<input type="hidden" name="_method" value="PUT"/>

后台代码控制器中,就可避免出现null值的问题了。

@RequestMapping(value="/xxx", method=RequestMethod.PUT)
public String update(Vo vo){
        ...
	return "xxx";
}

2)(使用jquery的ajax请求)type为post

在ajax请求中,可以这样将POST请求转化为PUT请求,这一转化过程还是要借助于HiddenHttpMethodFilter。

$.ajax({
	url:xxx,
	type:"POST",
	data:xxx+"&_method=PUT",
	success:function(result){
		xxx
	}
});	

3)(使用jquery的ajax请求)type为put

需要使用新的filter;在web.xml中添加如下filter:

<filter>
	<filter-name>HttpPutFormContentFilter</filter-name>
	<filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>HttpPutFormContentFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
$.ajax({
	url:xxx,
	type:"PUT",
	data:xxx,
	success:function(result){
		xxx
	}
});	




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值