HandlerInterceptor
핸들러매핑 (어떠한 요청을 처리하기위한 핸들러를 찾는 과정)에 핸들러인터셉터를 설정하면 핸들러매핑이 찾은 핸들러에 인터셉터를
적용한다.
-
핸들러 맵핑에 설정할 수 있는 인터셉터
-
핸들러를 실행하기 전, 후(아직 랜더링 전) 그리고 완료(랜더링까지 끝난 이후) 시점에 부가 작업을 하고 싶은 경우에 사용할 수 있다.
-
여러 핸들러에서 반복적으로 사용하는 코드를 줄이고 싶을 때 사용할 수 있다.
-
로깅, 인증 체크, Locale 변경 등...
boolean preHandle(request, response, handler)
-
핸들러 실행하기 전에 호출 됨
-
“핸들러"에 대한 정보를 사용할 수 있기 때문에 서블릿 필터에 비해 보다 세밀한 로직을 구현할 수 있다.
-
리턴값으로 계속 다음 인터셉터 또는 핸들러로 요청,응답을 전달할지(true) 응답 처리가 이곳에서 끝났는지(false) 알린다.
void postHandle(request, response, modelAndView)
-
핸들러 실행이 끝나고 아직 뷰를 랜더링 하기 이전에 호출 됨
-
“뷰"에 전달할 추가적이거나 여러 핸들러에 공통적인 모델 정보를 담는데 사용할 수도 있다.
-
이 메소드는 인터셉터 역순으로 호출된다.
-
비동기적인 요청 처리 시에는 호출되지 않는다.
void afterCompletion(request, response, handler, ex)
-
요청 처리가 완전히 끝난 뒤(뷰 랜더링 끝난 뒤)에 호출 됨
-
preHandler에서 true를 리턴한 경우에만 호출 됨
-
이 메소드는 인터셉터 역순으로 호출된다.
-
비동기적인 요청 처리 시에는 호출되지 않는다.
서블릿 필터와의 차이
https://jwdeveloper.tistory.com/104?category=835408
-
서블릿 보다 구체적인 처리가 가능하다. (스프링 MVC에 특화되어있다. 0)
boolean preHandle(request, response, handler)
void postHandle(request, response, modelAndView)
handler와 ModelAndView를 제공하는 것을 예로 들 수 있다.
-
서블릿은 보다 일반적인 용도의 기능을 구현하는 데 사용하는 게 좋다.
https://github.com/naver/lucy-xss-filter
'Spring > Spring MVC' 카테고리의 다른 글
(SERVLET) 리소스 핸들러 (0) | 2020.02.10 |
---|---|
(SERVLET) 핸들러 인터셉터(2) (0) | 2020.02.05 |
(SERVLET) 스프링 부트의 스프링 MVC 설정 (0) | 2020.02.02 |
(SERVLET) WebMvcConfigurer (0) | 2020.02.02 |
(SERVLET) 스프링 MVC 빈 설정 (0) | 2020.02.02 |