Filter

서블릿 컨테이너(Tomcat) 레벨에서 HTTP 요청/응답을 가로채 공통 처리를 수행하는 컴포넌트로, Spring Context 밖에서 동작합니다.

동작 위치

클라이언트 요청
    ↓
[ Filter 1 ]  ← 여기 (서블릿 컨테이너)
[ Filter 2 ]
    ↓
DispatcherServlet
    ↓
Controller
    ↓
[ Filter 2 ]
[ Filter 1 ]
    ↓
클라이언트 응답

구현

@Component
public class LoggingFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain chain) throws IOException, ServletException {

        HttpServletRequest req = (HttpServletRequest) request;
        System.out.println("요청: " + req.getRequestURI());

        chain.doFilter(request, response);  // 다음 필터 또는 서블릿으로 전달

        System.out.println("응답 완료");
    }
}

chain.doFilter() 호출 전 → 요청 처리, 호출 후 → 응답 처리

핵심 특징

주요 사용 사례

Interceptor와 비교

→ Filter vs Interceptor

CSLOG에서 보기