이 기사에서는 매개변수 전달 문제를 구현하기 위해 put 및 delete 메서드를 사용하는 spring mvc 작업에 대한 자세한 설명을 공유합니다. 내용이 꽤 좋아서 도움이 필요한 친구들에게 도움이 되기를 바랍니다.
최근에 인터페이스를 수정했습니다. 이전 프로젝트에서 resutful을 사용하여 매개변수를 전달하는 방법이 백그라운드에서 수신되지 않았습니다. 관련 정보를 확인한 결과 springmvc가 삭제 방법을 지원하지 않는 것으로 나타났습니다. 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 요청 매개변수, filter를 지원하지 않는다는 것이다. 서버의 핵심 코드는 다음과 같다
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) { });
Backend method
@RequestMapping(value = "/demo",method = RequestMethod.DELETE) @ResponseBody public Map demo(HttpServletRequest request, HttpServletResponse response,Integer id){ return null; }
로 변경되었습니다. context 유형: application/x-www-form-urlencoded 요청만 필터링된다는 점에 유의해야 합니다.
참조: https://blog.csdn.net/jslcylcy/article/details/52789575
위 내용은 Spring mvc는 매개변수 전달 문제를 구현하기 위해 put 및 delete 메소드를 사용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!