on
[Spring] Servlet/JSP Filter에 대해 알아보자
[Spring] Servlet/JSP Filter에 대해 알아보자
Servlet Filter
Client로 부터 Server로 요청이 들어오기 전에 서블릿을 거쳐서 먼저 필터링 하는 것을 서블릿 필터라고 한다. 서블릿마다 공통된 로직을 처리하기위해서 Filter를 사용한다.
Filter 구조도 출처 : https://jun-itworld.tistory.com/28
공통적인 기능들을 서블릿이 호출되기 전에 수행(전처리)되게 하고 싶거나
서블릿이 호출 되고 난 뒤에 수행(후처리) 하고 싶으면 공통적인 기능들을 서블릿 필터로 구현하면 된다.
Filter Chain
필터가 한개 이상 있을 때를 Filter Chain이라고 한다.
Filter Chain 구조도 출처 : https://jun-itworld.tistory.com/28
Filter1의 전처리 -> Filter2의 전처리 -> Filter3의 전처리 -> 서블릿 호출 -> Filter3의 후처리 -> Filter2의 후처리 -> Filter1의 후처리 순으로 처리된다.
어떻게 쓰이나?
예제 - 수행시간 측정
// 필터를 적용할 요청의 패턴 지정 - 모든 요청에 필터를 적용. @WebFilter("/*") public class HttpFilter implements Filter { // Filter 인터페이스를 implements @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.println("[" + ((HttpServletRequest) request).getRequestURI() + "]"); System.out.println(" 소요시간 = " + (System.currentTimeMillis() - startTime + "ms")); } @Override public void destroy() { // 정리 작업 } }
전처리에서 현재시간을 저장하고 서블릿을 호출한 다음 후처리에서 현재시간 - 시작시간을 해서 소요시간을 설정한다.
from http://byungmin.tistory.com/66 by ccl(A) rewrite - 2021-12-31 11:01:10