Filter 와 Interceptor

배고픈 징징이 ㅣ 2023. 1. 19. 11:24

 

[Spring] 필터(Filter) vs 인터셉터(Interceptor) 차이 및 용도 - (1) - MangKyu's Diary (tistory.com)

 

 

[Filter vs Interceptor]
1. Filter는 Spring 범위 밖(Web Container)에서 처리되고,
    Interceptor는 Spring 범위 안(Spring Container)에서 처리된다.

2. Filter는 공통된 보안작업, 모든 요청에 대한 확인, 이미지&데이터 압축 및 문자열 인코딩
    Interceptor는 세부적인 보안작업, API 호출에 대한 확인, Controller로 넘겨주는 데이터 가공

 

3. Filter는 response, requset 파라미터를 조작할 수 있다.

    Interceptor는 response, requset 파라미터를 조작할 수 없다.​

 

//Filter의 경우 request, response 데이터를 다시 넘겨주기 때문에 조작 가능
public CustomFilter implements Filter {
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
        chain.doFilter(request, response);       
    }
}

//Interceptor의 경우 true를 넘겨주기 때문에 조작 불가능
public class CustomInterceptor implements HandlerInterceptor {
    default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        return true;
    }
}
/*
* Filter의 메소드
* init : 필터 객체 초기화 메소드
* doFilter : 초기화 후 url-pattern에 맞는 모든 HTTP 요청이 디스패처 서블릿으로 전달되기 전에 웹 컨테이너에 의해 실행되는 메소드
* destroy : 필터 객체를 서비스에서 제거하고 사용하는 자원을 반환하기 위한 메소드
*/
public interface Filter {
    public default void init(FilterConfig filterConfig) throws ServletException {}

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException;

    public default void destroy() {}
}

/*
* Interceptor의 메소드
* preHandle : Controller 호출 전 실행
* postHandle : Controller 호출 후 실행
* afterCompletion : 모든 작업이 실행된 후에 실행, Exception이 발생하더라도 실행되는 유일한 메소드
*/
public interface HandlerInterceptor {
    default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
        throws Exception {
        
        return true;
    }

    default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
        @Nullable ModelAndView modelAndView) throws Exception {
    }

    default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
        @Nullable Exception ex) throws Exception {
    }
}
반응형

'Java' 카테고리의 다른 글

@Valid - 객체 유효성체크  (0) 2023.01.19
API - MultipartFile 파일전송  (0) 2023.01.19
COLLECTION  (0) 2023.01.19
DTO, DAO, VO 란?  (0) 2023.01.19
정규식을 활용한 문자열 검사 Matcher & Pattern Class + StringBuffer Class  (0) 2023.01.19