티스토리 뷰

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개가 존재하기 때문이다. 단 샘플을 보

   여주려고 아래 소스에는 일부러 추가 하였습니다.

 

 

 

 

 

[출처] : https://victorydntmd.tistory.com/176

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함