인터셉터

로그인을 처리할 때 세션을 사용한다면 항상 세션정보를 유지하고 세션안에서 정보를 찾는 세션 트랭킹을 처리해야한다.

로그인 여부는 여러 페이지에서 반복적인 코드가 필요한데 필터나 AOP를 사용하는 것 보다 인터셉터를 활용하면 간단히 처리할 수 있다.

스프링 MVC에서 인터셉터는 웹 어플리케이션 내의 특정 URL호출을 가로채는 역할을 한다.

이를 스프링 MVC의 HandlerInterceptor 를 사용해 구현할 수 있다.

인터셉터와 필터의 차이

필터의 경우 웹 어플리케이션 내에서 동작함으로 스프링 Context를 접근하기 힘들다.

인터셉터의 경우 스프링 Context안에서 동작함으로 Context내의 모든 객체를 활용할 수 있다.

인터셉터와 AOP의 차이

특정 객체동작의 사전, 사후 처리는 AOP를 통해서도 가능하다.

AOP의 경우 JoinPoint, ProceedingJoinPoint를 통해 비지니스 로직에 접근하지만

인터페이스는 HttpServletRequest, Response를 파라미터로 받는 구조이다.
(오히려 필터와 더 비슷)

스프링에선 파라미터를 일일이 DTO객에 매핑시키거나 하지 않기 때문에
인터셉터는 간단한 웹과 관련된 처리를 도와주는 개념이다.

HandlerInterceptor 메서드

preHandler(request, response, handler)
지정 컨트롤러의 동작 이전에 가로채는 역할

postHandler(request, response, handler, modelAndView)
지정 컨트롤러 동작 이후 가로채는 역할

afterHandler(request, response, handler, exception)
화면처리까지 완료된 상태에서 처리

여기서 컨트롤러란 스프링 MVC의 Front ControllerDispatcherServlet을 뜻한다.

아무래도 대부분 preHandler()를 이용해 로그인에 대한 처리를 진행한다.

–작성중–