인터셉터(interceptor)란?

JooKit 주킷 2020. 12. 23. 23:19
목차 접기
728x90
반응형

interceptor란?

  • 특정 URI로 요청시 Controller로 가는 요청을 가로채는 역할을 한다.

interceptor와 JSP Filter의 차이?

공통점

  • 둘 다 Controller로 들어가는 요청을 가로채 특정 작업을 하기 위한 용도로 사용된다.

차이점

  • 케어할 수 있는 영역(범위)가 다르다.
    Filter는 같은 웹 어플리케이션 내에서만 접근이 가능하며,
    interceptor의 경우 스프링에서 관리되기 때문에 스프링내의 모든 객체에 접근이 접근이 가능하다.
  • JSP Filter의 경우 주로 한글처리에 이용되고
  • interceptor의 경우 로그인 처리에 이용이 된다.

interceptor는 왜 로그인 처리에 이용되는가?

  • 만약 인터셉터를 이용하지 않고, 로그인 처리를 한다면,
    게시물 작성, 수정, 삭제 등 모든 요청마다 Controller에서 session을 통해
    로그인 정보가 남아 있는지를 확인하는 코드를 중복해서 입력해야 할 것이다.
  • 하지만, 인터셉터를 이용한다면 A,B,C 작업을 할 경우에는
    interceptor를 먼저 수행해 session에서 로그인 정보가 있는지 확인해 주는
    역할을 한다면, 중복 코드가 확 줄어들 수 있을 것이다.

interceptor를 지원하는 interface와 class, method

Spring에서 interceptor를 지원하기 위해서

  • HandlerInterceptor interface
  • HandlerInterceptorAdapter 추상 클래스를 지원한다.
    • 이친구는 위의 interface를 사용하기 쉽게 구현해 놓은 추상클래스.
  • 이때, HandlerInterceptorAdaptor는 3가지 메서드를 제공한다. 이 3가지 메서드를 오버라이딩해서 우리가 이용할 수 있다.
    ```
  1. public boolean preHandle(HttpServletRequest request, HttpServletResponse, Object Handler)
  • Controller로 요청이 들어가기 전!에 수행된다.
    • request, response, handle 등의 매개변수를 이용가능한데 우리가 아는
      HttpServletRequest, HttpServletResponse이고, 나머지 하나는
      이 preHandle() 메서드를 수행하고 수행될 컨트롤러 메서드에 대한 정보를 담고 있는
      handle이다.
  1. postHandle(HttpServletRequest, HttpServletResponse reponse, Object handler, ModelAndView modelAndView)
  • Controller의 메서드의 처리가 끝나 return되고 화면을 띄워주는 처리가 되기 직전에 이 메서드가
    수행된다.
  • ModelAndView 객체에 Controller에서 전달해 온 Model 객체가 전달됨으로 Controller에서 작업 후
    postHandle()에서 작업할 것이 있다면 ModelAndView를 이용하면 된다.
  • afterCompletion()
    • Controller가 수행되고 화면처리까지 끝난 뒤 호출된다.

```

728x90
반응형
LIST