Interceptor란
- 프로그램 내에서 자주 사용되는 공통 기능을 따로 구현하여 처리하는 방법 중 하나
- 공통 기능을 따로 구현하여 처리하는 방법 3가지
- Filter
- DispatcherServlet이 실행되기 전과 후 수행되는 기능을 처리
- Encoding, XSS 방어
- Interceptor
- DispatcherServlet이 Controller를 호출하기 전과 후 수행되는 기능을 처리
- http 프로토콜에 존재하는 정보를 활용 가능(로그인 여부 확인)
- AOP(Aspect Object Programming)
- Controller 처리 이후 비즈니스 로직에서 실행
- 로깅, 트랜잭셕, 에러 처리
HandlerInterceptor란
- 특정 URI 호출을 가로채는 역할
- 기존 컨트롤러 변경 없이 사전이나 사후 제어가 가능
- Dispatcher Servlet -> Controller: preHandle()
- Controller -> Dispatcher Servlet: postHandle()
- 여러 URL에 적용하는 기능을 구현할 때 사용
- 로그인 여부 체크
Interceptor 생성
- HandlerInterceptorAdapter를 상속받는 Interceptor를 생성할 때는 다음의 함수를 사용한다.
- boolean preHandle(request, response, handler)
: 전처리기
: client에서 요청 후 contoller 호출 전 실행
- void postHandle(request, response, handler)
: 후처리기
: controller 호출 후 실행
- void afterCompletion(request, responser, handler, modelAndView)
: controller 처리 및 화면 처리 후 실행