코딩마을방범대

Java의 Interceptor 본문

💡 백엔드/Java

Java의 Interceptor

신짱구 5세 2023. 5. 28. 15:34
728x90

Interceptor

  • Client로부터 들어오는 요청( HttpRequest )을 Controller의 Handler로 도달하기 전에 가로채거나
    Controller로 부터 보내는 응답( HttpResponse )을 가로채는 역할
  • HandlerInterceptor에서 가로채어 원하는 추가적인 로직을 수행한 후에
    Controller의 Handler로 보낼 수 있도록 하는 Module
    ( Handler : Client가 요청한 url에 따라 실행되어야 할 Method )




사용 방법

1. HandlerInterceptor 인터페이스를 구현하는 방법

preHandle

  • HttpRequest를 컨트롤러의 Handler로 보내기 전에 실행하는 메소드

postHandle

  • 요청에 대한 응답을 View에 렌더링 하기 전에 호출되는 메소드
  • ModelAndView 정보를 알 수 있음
  • 특정 View ( 페이지 )에서 ModelAndView 값을 수정해야할 경우 사용

afterCompletion

  • View에 렌더링과 모든 동작이 끝난 후에 작동하는 메소드
public class userInterceptorImpl implements HandlerInterceptor{

    // 매개변수 Object는 핸들러의 정보를 의미함 ( RequestMapping, DefaultServletHandler )
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException. JwtException {
        
        ...
        
        // 반환값이 false라면 Handler로 보내지 않는다.
        return true;
    }
    
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception{
		...      
    }
    
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response,Object handler, Exception e) throws Exception {
    	...
    }
}

 

2. HandlerInterceptorAdapter 클래스를 상속받아 구현

preHandle

  • HttpRequest를 컨트롤러의 Handler로 보내기 전에 실행하는 메소드
public class userInterceptor extends HandlerInterceptorAdaper{

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws IOException, JwtException{
        
        ...
        
        // 반환값이 false라면 Handler로 보내지 않는다.
        return true;
    }
}






 

참고 사이트

AOP, Filter, Interceptor의 정의와 차이점 (2) - Interceptor 편 - Juwon
Spring boot환경에서 JWT 사용하기 - 민수's 기술 블로그

728x90