-
01. Spring MVC의 인터셉터(Interceptor)Spring Web Project/9. 인터셉터 (Interceptor) 2021. 2. 15. 10:39반응형
스프링 MVC에서 인터셉터는 웹 애플리케이션 내에서 특정한 URI 호출을 '가로채는' 역할
1. Filter와 Interceptor의 차이
(공통점) Servlet 기술의 Filter와 Spring MVC의 HandlerInterceptor는 특정 URI에 접근할 때 제어하는 용도로 사용
(차이점) 실행 시점에 속하는 영역(Context)의 차이, Filter는 동일한 웹 애플리케이션의 영역 내에서 필요한 자원들을 활용하나 Interceptor의 경우 스프링 내 모든 객체(빈)에 접근이 가능
> 예컨대, HandlerInterceptor의 경우 스프링의 빈으로 등록된 컨트롤러나 서비스 객체들을 주입받아 사용할 수 있기에 기존의 구조를 그대로 활용하면서 추가적인 작업이 가능
2. Spring AOP와 HandlerInterceptor의 차이
> AOP의 Advice와 HandlerInterceptor의 가장 큰 차이는 파라미터의 차이, Advice의 경우 JoinPoint나 ProceedingJoinPoint 등을 활용해 호출 대상이 되는 메소드의 파라미터 등을 처리하는 방식. 반면 HandlerInterceptor는 Filter와 유사하게 HttpServletRequest, HttpServletResponse를 파라미터로 받는 구조.
[HandlerInterceptor의 메소드]
메소드명
메소드 역할
preHandle(request, response, handler)
지정된 컨트롤러의 동작 이전에 가로채는 역할
postHandle(request, response, handler, modelAndView)
지정된 컨트롤러의 동작 이후에 처리
Spring MVC의 Front Controller인 DispatcherServlet이 화면을 처리하기 전에 동작
afterCompletion(request, response, handler, exception)
DispatcherServlet의 화면 처리가 완료된 상태에서 처리
> Handler는 현재 실행하려는 메소드 자체를 의미, 이를 활용하면 현재 실행되는 컨트롤러를 파악하거나, 추가적인 메소드를 실행하는 등의 작업이 가능
3. HandlerInterceptorAdaptor
> HandlerInterceptor 인터페이스를 구현한 추상 클래스
> 일반적으로 디자인 패턴에서 Adapter라는 용어가 붙으면 특정 인터페이스를 미리 구현해서 사용하기 쉽게 하는 용도인 경우가 많음
4. Interceptor 설정
> servlet-context.xml에 설정
(샘플)
<beans:bean id="sampleInterceptor" class="com.app.interceptor.SampleInterceptor"></beans:bean>
<interceptors>
<interceptor>
<mapping path="/doSample" />
<beans:ref bean="sampleInterceptor" />
</interceptor>
</interceptors>
> <interceptors> 태그를 이용하기 위해서는 XML 네임스페이스에 spring mvc관련 설정이 추가되어 있어야 한다.
> <mapping> 태그에 원하는 URI 지정 (필요한 경로를 직접 지정하거나 '**', '*'와 같은 패턴 적용
반응형'Spring Web Project > 9. 인터셉터 (Interceptor)' 카테고리의 다른 글
03. 게시물 적용 (0) 2021.03.06 02. 로그인 처리 (0) 2021.02.15