Spring
Servlet Filter
윤승
2025. 4. 22. 23:47
Servlet Filter는 웹 애플리케이션에서 요청(request)과 응답(response)을 가로채어 사전/사후 처리를 할 수 있는 기능을 제공한다.
Filter는 서블릿 컨테이너(Tomcat 등)의 DispatcherServlet 이전에 동작한다.
주 역할:
- 인증/인가 체크
- 로깅
✅ Filter 동작 흐름
요청 흐름 (Request)
- 클라이언트가 서버로 HTTP 요청 전송
- WAS가 요청을 수신
- 등록된 Filter들이 설정된 순서대로 요청을 가로채 전처리 수행
- DispatcherServlet → Controller → Service → DB 등의 처리 진행
응답 흐름 (Response)
- Controller에서 처리한 결과가 응답으로 생성됨
- Filter들이 역순으로 응답 후처리 수행
- 최종적으로 클라이언트에게 응답 전달
✅ 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 이전에 처리할 수 있도록 지원한다.