Interceptor

june·2021년 1월 6일

interceptor 란

인터셉터는 무언가를 가로챈다 라는 의미로 쓰인다.

인터셉터는 컨트롤러의 URI에 접근하는 과정에서 무언가를 제어할 필요가 있을 때 사용된다.

예로 로그인이 필요한부분에 접근을 할때 인터셉터를 이용해서 로그인을 하도록 로그인 페이지로 이동하는 식의
방법으로 사용 할 수 있다.

인터셉터는 HandlerInterceptorAdapter를 상속받아 구현할 수 있다.

클래스는 preHandle, postHandle, afterCompletion, afterConcurrentHandlingStarted

네 개의 메소드를 가지고 있다.

@Component
public class LoggerInterceptor extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        return ture;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
    }
}

그 중에 preHandle, postHandle 두가지를 override 해준다.

PreHandle
컨트롤러 실행 직전에 동작.
반환 값이 true일 경우 정상적으로 진행이 되고, false일 경우 실행이 멈춘다.

PostHandle
컨트롤러 진입 후 view가 랜더링 되기 전 수행이 된다.
전달인자의 modelAndView을 통해 화면 단에 들어가는 데이터 등의 조작이 가능.

WebMvcConfigurer인터페이스를 상속받은 설정 클래스.

@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {

    @Autowired
    LoggerInterceptor loggerInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(loggerInterceptor)
                .addPathPatterns("/board/*")
                .excludePathPatterns("/user/login")
                .excludePathPatterns("/");
    }
}

addPathPatterns, excludePathPatterns 를 통해서 특정 url을 추가, 제외를 할 수 있다.

0개의 댓글