Maison >développement back-end >tutoriel php >Spring mvc utilise les méthodes put et delete pour implémenter les problèmes de passage de paramètres
Cet article partage avec vous une explication détaillée du problème de passage de paramètres à l'aide des méthodes put et delete dans spring mvc. Le contenu est assez bon. J'espère qu'il pourra aider les amis dans le besoin
<.> Récemment, j'ai modifié l'interface dans un projet précédent, en utilisant resutful, et l'arrière-plan n'a pas pu recevoir les paramètres en utilisant la méthode delete. Après avoir vérifié les informations pertinentes, j'ai découvert que springmvc ne prend pas en charge la méthode delete, je dois donc le faire. ajoutez un filtre à 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>L'explication pertinente est que springmvc ne prend pas en charge les paramètres de requête put et delete Le code principal du filtre est le suivant
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); } }<.>Convertir la méthode de publication en une méthode de mise ou de suppression standard
La demande d'accès front-end correspondante est remplacée par
Méthode backend
$.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; }
Il est à noter que seules les requêtes context -type: application/x-www-form-urlencoded seront filtrées.
Référence :https://blog.csdn.net/jslcylcy/article/details/52789575
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!