這篇文章給大家分享的是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方法實現傳參問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!