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

Spring mvc utilise les méthodes put et delete pour implémenter les problèmes de passage de paramètres

零到壹度
零到壹度original
2018-04-02 16:22:153311parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn