서블릿에서 필터를 활용하여 모든 서블릿의 동작시간을 체크하는 로직을 정리해두려한다.
만약 필터 없이 페이지마다의 실행 속도를 체크하고 싶으면 해당 클래스마다
타이머 작업을 해줘야하는데 필터를 활용하여 모든 페이지의 퍼포먼스 시간을 체크할 때 사용하면 좋을 것이다.
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 = "/*") "
어떤 페이지를 들어가도 해당 필터를 한번 거치게 매핑 작업을 해주었다.
앞으로 구현할 때 위 처럼 공통적으로 체크할 부분이 있다면 필터를 활용하는것도 효과적일 것 같다.
반응형
'Programming > Spring' 카테고리의 다른 글
[Spring] 전역 예외 처리 방법 (@ControllerAdvice, @ExceptionHandler) (0) | 2022.03.13 |
---|---|
[Spring] 쿠키와 세션의 차이점 (0) | 2022.03.13 |
[Spring] 세션(Session)이란? (개념 / 특징 / 사용법) (0) | 2022.03.13 |
[Spring] 쿠키(Cookie)란? (개념 / 특징 / 사용법) (0) | 2022.03.12 |
[IntelliJ] Community에서 Spring Initializr 설정하는 방법 (0) | 2022.01.16 |
댓글