스프링

인터셉터

Kiwisae 2022. 10. 4. 17:18

클라이언트에서 특정 URL 요청시 (DispatcherServlet)

Controller를 호출하기 이전에 요청을 가로챈다.

 

 

 

 

빨간색으로 표시된 구간에서 인터셉트가 일어나게 된다.

 

 

 

주로 회원관리 프로그램에서 이 기능을 많이 사용한다.

 

로그인 시 잘못된 접근일 때, 

디스패처 서블릿에서 컨트롤러로 이동해

기능을 수행하기 이전에 가로채서 다시 로그인 폼으로 돌아가도록 한다.

 

 

 

 

구현 방법으로는 다음과 같은 방법이 있다.

 

1. abstract class  - HandlerInterceptorAdapter  추상 클래스를 상속 받아 구현

2. interface - HandlerInterceptor 인터페이스를 상속 받아 구현

 

 

인터페이스 상속으로 구현 시 다음 3가지 메소드를 오버라이딩하여 인터셉트 기능을 구현하는데,

실행되는 시점이 각각 다르다.

 

boolean preHandle()

DispatcherServlet 은 모든 웹 요청의 진입점이다. 요청이 클라이언트로 들어오는 경우에 컨트롤러에

요청에 보내주기 전에 중간에 요청을 가로챈다.

 

void postHandle()

컨트롤러의 메서드의 처리가 끝나 return 되고 화면을 띄워주는 처리가 되기 직전에 이 메소드가

수행된다.

 

void afterCompletion()

컨트롤러가 수행되고 화면처리까지 끝난 뒤 호출된다.