您好,欢迎访问一九零五行业门户网

spring mvc使用put,delete方法实现传参问题

本篇文章给大家分享的是spring mvc使用put,delete方法实现传参问题的操作详解,内容挺不错的,希望可以帮助到有需要的朋友
    近日在之前项目修改接口,使用resutful,使用delete方法传参后台一直接收不到,查阅相关资料发现,springmvc对于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>
相关解释为springmvc不支持put,delete请求传参,过滤器的核心代码如下
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({ type : "post", url : "demo", datatype : "json", async : false, data : { provinceids : id, //该参数指定后台接受方法类型,put/delete _method : "delete", }, success : function(data) { });
后台方法
@requestmapping(value = "/demo",method = requestmethod.delete) @responsebody public map demo(httpservletrequest request, httpservletresponse response,integer id){ return null; }
需要注意的是,只有context-type:application/x-www-form-urlencoded的请求才会被过滤。
参考:https://blog.csdn.net/jslcylcy/article/details/52789575
以上就是spring mvc使用put,delete方法实现传参问题的详细内容。
其它类似信息

推荐信息