springMVC使用PUT、DELETE方法传递参数解决方案

新项目使用restful风格的编程方式,例student

get方法

/student    对应list查询

/student/{id} 对应id查询

post方法

/student  对应新增

put方法

/student  对应编辑

delete方法

/student  对应批量删除

/student/{id}  对应指定id删除

 

结果发现使用put与delete方法是,后台接受不到参数,解决方法如下:

在web.xml中新增过滤器

 

<filter>
	<!--该过滤器用于处理post请求转换为标准的delete与put请求 -->
	<filter-name>HiddenHttpMethodFilter</filter-name>
	<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>HiddenHttpMethodFilter</filter-name>
	<!--servlet为springMvc的servlet名 -->
	<servlet-name>springMVC</servlet-name>
</filter-mapping>

 

该过滤器的核心方法如下:

	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
			throws ServletException, IOException {

		String paramValue = request.getParameter(this.methodParam);
		if ("POST".equals(request.getMethod()) && StringUtils.hasLength(paramValue)) {
			String method = paramValue.toUpperCase(Locale.ENGLISH);
			HttpServletRequest wrapper = new HttpMethodRequestWrapper(request, method);
			filterChain.doFilter(wrapper, response);
		}
		else {
			filterChain.doFilter(request, response);
		}
	}

将post方法转换为标准的put或者delete方法

 

 

前端ajax访问时实例代码如下:

 

$.ajax({
	type : "POST",
	url : "student",
	dataType : "json",
	async : false,
	data : {
		provinceIds : array,
		//该参数指定后台接受方法类型,put/delete
		_method : "delete",
		},
	success : function(data) {
			
	});

 

 

后台接受方法:

 

@RequestMapping(value="student",method = RequestMethod.DELETE, produces = {"text/javascript;charset=UTF-8"})
public String del(HttpServletRequest request, HttpServletResponse response)
{
   return null;
}

 

===============================================================================================

2018.07.17修改

最近使用springboot开发项目,同样遇到了相似的问题,发现在springboot2.0 时 PutMapping注解已经可以正常直接获取参数,DeleteMapping注解使用  @RequestBody  前端传参使用  application/json  后台也可以获取参数

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值