[java] 서블릿 필터의 역할과 사용법
서블릿 필터란?
서블릿 필터는 Java 웹 애플리케이션에서 들어오는 요청과 관련하여 사전 또는 사후 처리 작업을 수행하는 기능을 하는 컴포넌트입니다. 서블릿 필터는 요청이 서블릿에 도달하기 전에 요청을 가로채고 변조하는 등의 작업을 할 수 있으며, 응답이 클라이언트로 전송되기 전에 응답을 가로채고 변조하는 등의 작업도 수행할 수 있습니다.
서블릿 필터의 사용법
서블릿 필터를 사용하기 위해서는 다음과 같은 단계를 거쳐야 합니다:
javax.servlet.Filter
인터페이스를 구현하는 필터 클래스를 작성합니다.doFilter
메서드를 구현하고 필터에서 수행할 작업을 정의합니다.web.xml
파일에 필터를 등록합니다.
다음은 서블릿 필터의 간단한 사용 예시입니다.
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter(filterName = "MyFilter", urlPatterns = {"/*"})
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 필터 초기화 작업
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
// 필터에서 수행할 작업
System.out.println("Request intercepted by MyFilter");
// 다음 필터로 체인을 이어나가거나, 최종적으로 요청을 해당 서블릿으로 전달합니다.
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
// 필터 종료 작업
}
}
위의 예시 코드에서는 모든 URL 패턴에 대해 MyFilter
라는 필터를 적용하고 있습니다. 필요에 따라 URL 패턴을 변경하실 수 있습니다.
서블릿 필터의 활용 예시
서블릿 필터를 사용하여 다음과 같은 작업을 수행할 수 있습니다:
- 요청/응답 데이터의 인코딩 설정
- 인증과 권한 부여
- 요청/응답의 로깅
- 캐싱
- 예외 처리
서블릿 필터는 웹 애플리케이션 개발에서 매우 유용하게 사용될 수 있으며, 복잡한 웹 애플리케이션 개발 시에 필수적인 요소입니다.
참고 자료
- Oracle Java EE Documentation: Java Servlet Filter
- Baeldung: Servlet Filter
- Mkyong: Servlet Filter Example