Java의 Interceptor

단비·2023년 5월 19일
0

학습

목록 보기
57/66

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 기술 블로그

profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글