✔Interceptor
1. 개요
◾HandlerInterceptor를 통한 요청 가로채기
- Controller가 요청을 처리하기 전/후 처리.
- Business Logic과 분리되어 처리해야 하는 기능에 유용
- 로깅, 모니터링 정보 수집, 접근 제어 처리 등.
- 여러 개를 설정할 수 있으나 순서를 주의해야함.
2. Interceptor
◾HandleRInterceptor Method
- boolean preHandle(HttpServletRequest request, HttpServletResponse, Object handler)
- void postHandle(HttpServletRequest request, HttpServletResponse, Object handler, ModelAndView modelAndView)
- void afterCompletion(HttpServletRequest request, HttpServletResponse, Object handler, Exception ex)
- view를 통해 클라이언트에 응답을 전송한 뒤 실행.
- 예외가 발생하여도 실행(finally와 비슷)
◾ Interceptor 호출 순서
3. Interceptor 구현
◾Interceptor 구현
- HandlerInterceptor 인터페이스 또는 HandlerInterceptorAdaptor 클래스를 통해 구현.
public class LoggingInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse, Object handler){
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse, Object handler, ModelAndView modelAndView){
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse, Object handler, Exception ex){
}
◾Interceptor 설정
<beans:bean id="interceptor" class="package.LoggingInterceptor">
<interceptors>
<interceptor>
<mapping path="path1"/>
<mapping path="path2"/>
<mapping path="path3"/>
<beans:ref bean="interceptor" />
</interceptor>
</interceptors>