서블릿 필터(Servlet Filter)란?
Client로부터 Server로 요청이 들어오기 전, 서블릿을 거쳐 필터링 하는 것
- 공통적인 요청 전처리와 응답 후처리에 사용
• 인증, 로깅, 인코딩 등
• 전처리 / 후처리 코드의 중복 제거에 유용하다
- 보통 하나의 필터를 사용하지만 여러 개의 필터를 사용할 수 있다
• Filter1 전처리 → Filter2 전처리 → Servlet → Filter2 후처리 → Filter1 후처리
Filter 인터페이스
필터를 설정하는 FilterConfig, FilterChain, Filter 객체 필요
- FilterConfig, FilterChain 인터페이스를 상속받은 클래스들은 웹 컨테이너가 구현
- Filter에 필요한 건사용자 정의 필터 클래스는 javax.servlet.Filter 인터페이스를 구현
- Filter 인터페이스의 메서드
• init(FilterConfig config) : 서블릿 컨테이너가 필터 인스턴스를 초기화하기 위해 호출하는 메서드
• doFilter(ServletRequest res, ServletResponse res, FilterChain chain) : 필터에서 구현해야 할 로직을 작성하는 메서드
• destroy() : 필터 인스턴스를 종료시키기 전 호출하는 메서드
Filter의 적용 : @WebFilter
- @WebFilter : 필터를 등록하는 어노테이션. 적용할 URL 패턴을 지정
...
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.annotation.WebFilter;
// 필터를 적용할 요청의 패턴 지정 - 모든 요청에 필터를 적용.
@WebFilter("/*")
public class PerformanceFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
// 초기화 작업
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
// 1. 전처리 작업
long startTime = System.currentTimeMillis();
// 2. 서블릿 또는 다음 필터를 호출
chain.doFilter(request, response);
// 3. 후처리 작업
System.out.print("["+((HttpServletRequest)request).getRequestURI()+"]");
System.out.println(" 소요시간="+(System.currentTimeMillis()-startTime)+"ms");
}
@Override
public void destroy() {
// 정리 작업
}
}
📌 References
- https://velog.io/@bottlepark/Servlet-07.-Filter
Servlet Filter
Servlet Filter란? Client로 부터 Server로 요청이 들어오기 전에 서블릿을 거쳐서 필터링 하는 것을 서블릿 필터라고 한다. 지금까지 Servlet은 였다면 Filter는 이다. Filter의 가 더 부모클래스이다. 즉, 공
velog.io
'Web > Web' 카테고리의 다른 글
[Web] 서버 성능 테스트 종류와 도구 및 대규모 트래픽 상황 대비 (0) | 2024.05.03 |
---|---|
[Web] JSP란? JSP 호출과정 / 기본객체 / EL / JSTL (1) | 2024.02.01 |
[Web] 서블릿(Servlet)이란? JSP와 MVC 패턴으로의 변화 (1) | 2024.01.31 |
[Web] HTTP 응답 상태코드와 요청 메서드(GET / POST) (0) | 2024.01.31 |
[Web] WAS란? 동적 / 정적 콘텐츠, Tomcat 요청 처리 과정 (0) | 2024.01.10 |