ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Servlet/JSP Filter에 대해 알아보자
    프로그래밍/Spring 2021. 12. 31. 10:50

    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() {
            // 정리 작업
        }
    }

    전처리에서 현재시간을 저장하고 서블릿을 호출한 다음 후처리에서 현재시간 - 시작시간을 해서 소요시간을 설정한다.

     

     

    댓글

Designed by Tistory.