Spring

Servlet Filter

윤승 2025. 4. 22. 23:47

Servlet Filter는 웹 애플리케이션에서 요청(request)과 응답(response)을 가로채어 사전/사후 처리를 할 수 있는 기능을 제공한다.

Filter는 서블릿 컨테이너(Tomcat 등)의 DispatcherServlet 이전에 동작한다.

 

주 역할:

  • 인증/인가 체크
  • 로깅

✅ Filter 동작 흐름

요청 흐름 (Request)

  1. 클라이언트가 서버로 HTTP 요청 전송
  2. WAS가 요청을 수신
  3. 등록된 Filter들이 설정된 순서대로 요청을 가로채 전처리 수행
  4. DispatcherServlet → Controller → Service → DB 등의 처리 진행

응답 흐름 (Response)

  1. Controller에서 처리한 결과가 응답으로 생성됨
  2. Filter들이 역순으로 응답 후처리 수행
  3. 최종적으로 클라이언트에게 응답 전달

Filter의 기본 구조

init(): 필터 초기화, 애플리케이션 시작 시 1회 호출

doFilter(): 요청/응답 시 필터 동작의 핵심 메서드

destroy(): 애플리케이션 종료 시 호출되어 리소스 정리

public interface Filter {
    default void init(FilterConfig filterConfig) throws ServletException {}
    void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException;
    default void destroy() {}
}
  • chain.doFilter() 호출 전 → 요청 전처리
  • chain.doFilter() 호출 후 → 응답 후처리

 

Filter는 클라이언트의 요청과 서버의 응답을 가로채어 전처리 또는 후처리를 수행할 수 있는 서블릿 기반의 컴포넌트로, 인증, 인가, 로깅, 인코딩 설정 등 다양한 공통 기능을 DispatcherServlet 이전에 처리할 수 있도록 지원한다.