Programming/Spring

[Servlet] 서블릿 실행 시간 측정 필터 만들기 (Servlet Performance Time Check Filter)

JeongKyun 2022. 2. 1.
반응형

서블릿에서 필터를 활용하여 모든 서블릿의 동작시간을 체크하는 로직을 정리해두려한다.

 

만약 필터 없이 페이지마다의 실행 속도를 체크하고 싶으면 해당 클래스마다

 

타이머 작업을 해줘야하는데 필터를 활용하여 모든 페이지의 퍼포먼스 시간을 체크할 때 사용하면 좋을 것이다.

 

package com.unittest.performance;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

/* 필터를 적용할 요청의 패턴 지정 - 모든 요청에 필터를 적용. */
@WebFilter(urlPatterns="/*")
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() {
		// 정리 작업
	}

}

 

" @WebFilter(urlPatterns = "/*") "

어떤 페이지를 들어가도 해당 필터를 한번 거치게 매핑 작업을 해주었다.

앞으로 구현할 때 위 처럼 공통적으로 체크할 부분이 있다면 필터를 활용하는것도 효과적일 것 같다.

 

 

댓글

💲 많이 본 글