필터는 서블릿 API의 일부분으로, 웹 애플리케이션으 요청 및 응답을 가로채서 처리할 수 있는 컴포넌트.
스프링 MVC의Filter는 HTTP 요청과 응답을 조작할 수 있으며, 보통 인증, 로깅, 인코딩 설정 등과 같은 작업을 수행필터는 서블릿 컨테이너에서 관리되며,
javax.servlet.Filter인터페이스를 구현하여 사용
doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
👉 필터가 요청을 처리하고, 체인의 다음 필터 또는 서블릿으로 요청을 전달
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.FilterException;
import javax.servlet.FilterRequest;
import javax.servlet.FilterResponse;
import javax.io.IOExeotion;
public class LoggingFilter implements Filter {
@Override
public void init(FIlterConfig filterConfig) throws ServletException {
// 초기화 코드
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("Request received at " + System.currentTimeMillis());
chain.doFilter(request, response); // 다음 필터나 서블릿 호출
System.out.println("Response sent at " + System.currentTimeMillis());
}
@Override
public void destroy() {
// 정리 코드
}
}
👉 등록 방법 :
web.xml 또는 자바 기반 설정으로 등록할 수 있음자바 기반 설정 예시
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<LoggingFilter> loggingFilter() {
FilterRegistrationBean<LoggingFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new LoggingFilter());
registrationBean.addUrlPatterns("/*"); // 필터를 적용할 URL 패턴 설정
return registrationBean;
}
}
FilterRegistrationBean 을 통해 스프링에서 등록할 수도 있음.WebMvcConfigurer 를 구현한 설정 클래스에서 등록