[JAVA] Fonction SpringMVC-Interceptor

Qu'est-ce que l'intercepteur

Dans Spring Framework, la classe Controller avec l'annotation \ @Controller reçoit la demande et renvoie la réponse. DispatcherServlet extrait la classe Controller de l'URL de la requête et l'exécute. Inerceptor est un processus d'interruption qui est appelé avant et après le traitement de l'écran et à la toute fin de la requête. Avec Inerceptor, vous pouvez ajouter un traitement avant et après l'exécution du contrôleur. Par exemple, utilisez Interceptor pour afficher l'adresse IP de la source d'accès dans le journal.

Citation [soracane 01. Concept de base: flux de traitement global](https://sites.google.com/site/soracane/home/springnitsuite/spring-mvc/1-ji-ben-gai-nian-quan-ti-dena-chu- lifuro)

Comment fonctionne Interceptor

Réel: interface org.springframework.web.servlet.HandlerInterceptor DispatcherServlet exécute l'interface HandlerInterceptor.

Méthode Valeur de retour Moment d'exécution
preHandle booean Avant d'exécuter Controller
postHandle void Après l'exécution de la location de vue Controller-Before
afterCompletion void voir Après la location

Référence API HandlerInterceptor

Comment créer un intercepteur

Essayez de sortir l'adresse IP accessible à l'aide d'Interceptor dans un fichier journal.

<Procédure>

  1. Créez une classe d'implémentation pour org.springframework.web.servlet.HandlerInterceptor
  2. Définissez un intercepteur dans applicationContext.xml

Pour le projet Spring MVC, utilisez celui créé par la procédure suivante. Projet Spring MVC


Informations sur la version de chaque module vérifiées cette fois

module version
STS 3.9.9
JDK 1.8.0_221
Tomcat 8.5
SpringFramework 3.1.1
Thymeleaf 2.1.6

Comment créer Interceptor ①

Créez une classe d'implémentation pour org.springframework.web.servlet.HandlerInterceptor et Sortez l'adresse IP dans la méthode preHandle.

HogeIntercepter.java


package hogehoge;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class HogeIntercepter implements HandlerInterceptor {

	private static final Logger logger = LoggerFactory.getLogger(HogeIntercepter.class);
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		//TODO talon de méthode généré automatiquement
		logger.info("URI:" + request.getRequestURI()); 
		logger.info("Adresse IP:" + request.getRemoteAddr()); 
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		//TODO talon de méthode généré automatiquement

	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		//TODO talon de méthode généré automatiquement

	}
}

Comment créer Interceptor ②

Définissez un intercepteur dans applicationContext.xml.

applicationContext.xml


<beans:beans xmlns="http://www.springframework.org/schema/mvc"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:beans="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">

・
・
・

	<mvc:interceptors>
		<mvc:interceptor>
			<mvc:mapping path="/**" />
			<beans:bean class="hogehoge.HogeIntercepter" />
		</mvc:interceptor>
	</mvc:interceptors>

</beans:beans>

Résultat d'exécution

Contenu de la sortie du journal INFO : hogehoge.HogeIntercepter - URI:/hogehoge/ INFO: hogehoge.HogeIntercepter - Adresse IP: 0: 0: 0: 0: 0: 0: 0: 1

Site de référence

soracane Spring-MVC Tokkan Software Spring MVC Interceptor

Recommended Posts

Fonction SpringMVC-Interceptor
Fonction de connexion
Fonctions JavaScript
[Rails] Fonction de catégorie
Les rails suivent la fonction
Fonction de commentaire implémentée
[Rails] Fonction de notification