
웹 애플리케이션에서 요청/응답 처리를 더 세부적으로 제어하려면 Filter와 Interceptor를 활용합니다. 이 두 가지는 비슷한 역할을 하지만, 사용하는 환경과 적용 시점에서 차이가 있습니다.
Filter란?
Filter는 Servlet 스펙에서 제공하는 기능으로, 클라이언트 요청이 서블릿에 도달하기 전후에 특정 작업을 수행할 수 있게 해줍니다.
Filter의 주요 역할
- 요청/응답 변환: 요청 데이터 가공 또는 응답 데이터 수정.
- 보안 처리: 인증, 인가 로직 추가.
- 로깅: 요청/응답의 세부 정보 기록.
Filter 동작 흐름
- 클라이언트 요청이 들어옴.
- Filter가 요청을 가로채고 필요한 작업을 수행.
- 서블릿으로 요청 전달 또는 요청 차단.
- 서블릿 처리 후 응답이 다시 Filter를 거침.
간단한 Filter 코드 예시
import java.io.*;
import javax.servlet.*;
public class LoggingFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("Request received at: " + new java.util.Date());
chain.doFilter(request, response); // 다음 필터 또는 서블릿 호출
}
}
위 코드는 요청이 들어올 때마다 로그를 출력하는 Filter입니다.
Interceptor란?
Interceptor는 Spring Framework에서 제공하는 기능으로, Dispatcher Servlet을 통해 컨트롤러로 요청이 전달되기 전후에 작업을 수행할 수 있습니다.
Interceptor의 주요 역할
- 컨트롤러 전/후 작업 처리: 인증, 데이터 검증.
- 비즈니스 로직 적용: 요청 처리 전에 공통 로직 실행.
- 응답 후 처리: 리소스 해제, 후속 작업 수행.
Interceptor 동작 흐름
- Dispatcher Servlet이 요청을 수신.
- Interceptor의 preHandle 메서드 실행.
- 컨트롤러에서 요청 처리.
- Interceptor의 postHandle 및 afterCompletion 메서드 실행.
간단한 Interceptor 코드 예시
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.*;
public class AuthInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("PreHandle: 인증 확인");
return true; // true이면 요청 계속 진행
}
}
위 코드는 컨트롤러 실행 전에 인증 여부를 확인하는 Interceptor입니다.
Filter와 Interceptor 비교
특징 | Filter | Interceptor |
적용 레벨 | Servlet 스펙 기반 (전체 요청/응답 처리) | Spring MVC 레벨 (컨트롤러 전/후 처리) |
주요 목적 | 요청/응답 전반적 처리 | 컨트롤러 전후의 작업 처리 |
의존성 | Spring에 의존하지 않음 | Spring Framework의 일부 |
사용 시점 | 서블릿 호출 전후 | Dispatcher Servlet 호출 전후 |

'Back_End > Spring' 카테고리의 다른 글
비밀번호 해싱(Hashing) (1) | 2025.03.27 |
---|---|
@Component와 @Configuration 비교 (1) | 2024.12.26 |
스프링 핵심 개념: IoC, DI, AOP 알아보기 (2) | 2024.12.05 |
서블릿(Servlet)과 디스패처 서블릿(Dispatcher Servlet)이란? (4) | 2024.11.29 |
Eureka Server(유레카 서버)란? (3) | 2024.11.26 |