[JAVA] SpringMVC-Interceptor-Funktion

Was ist Interceptor?

In Spring Framework empfängt die Controller-Klasse mit der Annotation \ @Controller die Anforderung und gibt die Antwort zurück. DispatcherServlet extrahiert die Controller-Klasse aus der Anforderungs-URL und führt sie aus. Inerceptor ist ein Interrupt-Prozess, der vor und nach der Bildschirmverarbeitung und ganz am Ende der Anforderung aufgerufen wird. Mit Inerceptor können Sie die Verarbeitung vor und nach der Ausführung des Controllers hinzufügen. Verwenden Sie beispielsweise Interceptor, um die IP-Adresse der Zugriffsquelle in das Protokoll auszugeben.

Zitat [Soracane 01. Grundkonzept: Gesamtverarbeitungsablauf](https://sites.google.com/site/soracane/home/springnitsuite/spring-mvc/1-ji-ben-gai-nian-quan-ti-dena-chu- lifuro)

Wie Interceptor funktioniert

Tatsächlich: org.springframework.web.servlet.HandlerInterceptor-Schnittstelle DispatcherServlet führt die HandlerInterceptor-Schnittstelle aus.

Methode Rückgabewert Ausführungszeitpunkt
preHandle booean Vor dem Ausführen von Controller
postHandle void Nach dem Ausführen der Controller-Before-View-Vermietung
afterCompletion void Ansicht Nach dem Mieten

HandlerInterceptor API-Referenz

So erstellen Sie einen Interceptor

Versuchen Sie, die IP-Adresse, auf die mit Interceptor zugegriffen wird, in eine Protokolldatei auszugeben.

1. Erstellen Sie eine Implementierungsklasse für org.springframework.web.servlet.HandlerInterceptor 1. Definieren Sie einen Interceptor in applicationContext.xml

Verwenden Sie für das Spring MVC-Projekt das nach dem folgenden Verfahren erstellte. Spring MVC Project


Die Versionsinformationen der einzelnen Module wurden diesmal überprüft.

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

So erstellen Sie Interceptor ①

Erstellen Sie eine Implementierungsklasse für org.springframework.web.servlet.HandlerInterceptor und Geben Sie die IP-Adresse in der preHandle-Methode aus.

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 automatisch generierter Methodenstub
		logger.info("URI:" + request.getRequestURI()); 
		logger.info("IP Adresse:" + request.getRemoteAddr()); 
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		//TODO automatisch generierter Methodenstub

	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		//TODO automatisch generierter Methodenstub

	}
}

So erstellen Sie Interceptor ②

Definieren Sie einen Interceptor in 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>

Ausführungsergebnis

Protokollausgabeinhalt INFO : hogehoge.HogeIntercepter - URI:/hogehoge/ INFO: hogehoge.HogeIntercepter - IP-Adresse: 0: 0: 0: 0: 0: 0: 0: 0: 1

Referenzseite

soracane Spring-MVC Tokkan Software Spring MVC Interceptor

Recommended Posts

SpringMVC-Interceptor-Funktion
Anmeldefunktion
JavaScript-Funktionen
[Schienen] Kategoriefunktion
Schienen folgen der Funktion
Kommentarfunktion implementiert
[Rails] Benachrichtigungsfunktion