티스토리 뷰
01. Interceptor의 개념
- Interceptor란 컨트롤러에 들어오는 요청 HttpRequest와 컨트롤러가 응답하는 HttpResponse를 가로채는
역할을 하는것을 일컫습니다.
- 싸이클 모델로 살펴보자면 다음과 같습니다.
02. Filter와 Interceptor의 차이.
- 인터셉터는 Servlet의 앞, 뒤에서 각각 HttpRequest, HttpResponse를 가로채는 Filter와 역할은 유사
하지만 이 2가지는 분명히 다릅니다. 그래서 차이점을 정리하려고 합니다.
1) 호출 시점
- Filter는 DispatcherServlet이 실행되기 전, Interceptor는 DispatcherServlet이 실행된 후.
2) 설정 위치
- Filter는 web.xml, Interceptor는 spring-servlet.xml
3) 구현 방식
- Filter는 web.xml에서 설정을 하면 구현이 가능하지만, Interceptor는 설정은 물론 메서드 구현까지 해야
합니다.
03. 환경설정
1) Spring-servlet.xml
- 모든 요청을 가로채서( Interceptor ) com.hdshop.interceptor 패키지에 있는 AdminInterceptor 객체를 실행하겠다 는 의미입니다.
2) AdminInterceptor.java
- preHandle() 메서드는 컨트롤러가 호출되기 전에 실행됩니다.
매개변수 obj는 Dispatcher의 HandlerMapping 이 찾아준 컨트롤러의 메서드를 참조할 수 있는
HandlerMethod 객체입니다.
- postHandle() 메서드는 컨트롤러가 실행된 후에 호출됩니다.
- afterComplete() 은 뷰에서 최종 결과가 생성하는 일을 포함한 모든 일이 완료 되었을 때 실행됩니다.
- 위 3개 각 메서드의 반환값이 true이면 핸들러의 다음 체인이 실행되지만 false이면 중단하고 남은 인터셉터와 컨트롤러가 실행되지 않습니다.
- 사실상 만약 아래와 같이 HandlerInterCeptorAdapter를 상속받는다면 사실상 postHandle, afterComplete 매서드를
재정의 할 필요가 없습니다. 이미 HandlerInterCeptorAdapter에 다음 메소드 2개가 존재하기 때문이다. 단 샘플을 보
여주려고 아래 소스에는 일부러 추가 하였습니다.
'프로그래밍언어 > 자바. 스프링' 카테고리의 다른 글
[Spring] servlet-context.xml, root-context.xml, web.xml의 차이 (0) | 2020.06.05 |
---|---|
[Java] Web서버와 Was서버의 차이. (0) | 2020.06.04 |
[Spring] 추상클래스와 interface (0) | 2020.05.22 |
[Java] Java 개념 및 면접 예상질문 (0) | 2020.03.31 |
[Java] 자바 에러 모음 (0) | 2020.03.23 |