SpringMVC-Interceptor 기능

8393 단어 spring-mvcJava

Interceptor 소개


SpringFramework에서초대장이 있는 Controller 클래스에 대해 요청을 수락하고 응답을 되돌려줍니다.
Controller 클래스는 DispatcherServlet이 요청 URL에서 Controller 클래스를 추출하여 수행합니다.
화면 처리 전후와 요청이 마지막으로 호출된 인터럽트 처리에서 Inerceptor를 사용하면 Controller의 실행 전후에 추가로 처리할 수 있습니다.
예를 들어, Interceptor를 사용하여 소스에 액세스하는 IP 주소를 로그로 내보냅니다.
Spring MVC 프로세스
@Controller 인용하다

Interceptor 구조


실제 상황: org.springframework.web.servlet.HandlerInterceptor 커넥터
DispatcherServlet이Handler Interceptor 인터페이스를 실행하고 있습니다.
메서드
반환값
실행 시기
preHandle
booean
Controller 실행 전
postHandle
void
Controller 실행 후 ~view 렌더링 전
afterCompletion
void
뷰 렌더링 후
soracane 01. 기본 개념: 전체적인 처리 절차

Interceptor 제작 방법


Interceptor를 사용하여 액세스한 IP 주소를 로그 파일로 내보냅니다.
<단계>
1. org.springframework.web.servlet.HandlerInterceptor의 설치 클래스 작성
1. applicationContext.xml에서 인터페이스 정의
또한, SpringMVC 프로젝트는 다음 절차를 통해 제작된 프로젝트입니다.
HandlerInterceptor의 API Reference
[이번 검증된 각 모듈의 버전 정보]
모듈
version
STS
3.9.9
JDK
1.8.0_221
Tomcat
8.5
SpringFramework
3.1.1
Thymeleaf
2.1.6

인터셉터의 제작 방법①


org.springframework.web.servlet.HandlerInterceptor의 설치 클래스 작성
preHandle 메서드에서 IP 주소를 출력합니다.
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 自動生成されたメソッド・スタブ
        logger.info("URI:" + request.getRequestURI()); 
        logger.info("IPアドレス:" + request.getRemoteAddr()); 
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        // TODO 自動生成されたメソッド・スタブ

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {
        // TODO 自動生成されたメソッド・スタブ

    }
}

인터셉터의 제작 방법 ②


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>

실행 결과


로그 출력 내용
INFO : hogehoge.HogeIntercepter - URI:/hogehoge/
INFO : hogehoge.HogeIntercepter-IP 주소: 0:0:0:0:0:1

사이트 축소판 그림


Spring MVC 프로젝트
soracane Spring-MVC

좋은 웹페이지 즐겨찾기