06_InitFilter 클래스 만들기

김정욱·2023년 4월 24일
0

Spring

목록 보기
10/13
post-thumbnail

1) 개요

최상위 경로를 나타내는 ${contextPath}를 사용하기 위해 설정 필요

2) 클래스 작성

@WebFilter(filterName="initFilter", urlPatterns="/*") 
public class InitFilter extends HttpFilter implements Filter {
       
	/* print 구문 사용하지 않고 -> Logger 사용 */ 
	// Logger 객체 생성 (해당 클래스에 대한 log를 출력하는 객체)
	
	private Logger logger = LoggerFactory.getLogger(InitFilter.class);
	
	public void init(FilterConfig fConfig) throws ServletException {
		// logger를 이용해서 출력하는 방법
		// trace - debug - info - warn - error
		
		// debug : 개발의 흐름 파악 (이게 실행이 되었는지, 파라미터가 현재 무엇인지 확인할 때)
		// info : 메소드 실행
		
		// 이 필터가 생성이 되었다 라는 정보를 출력하고 싶다! info가 제일 적절함
		logger.info("초기화 필터 생성");
    }
    
	// 필터가 파괴될 때 실행 (서버는 켜져있는데 백엔드 코드가 수정되었을 때)
	public void destroy() {
		logger.info("초기화 필터 파괴");
	}

	public void doFilter(ServletRequest request, ServletResponse response, 
    				FilterChain chain) throws IOException, ServletException {
		
		// application 내장 객체 얻어오기
		ServletContext application = request.getServletContext();
		
		// 최상위 주소 얻어오기
		String contextPath =  ( (HttpServletRequest)request ).getContextPath();
									// 다운캐스팅
		
		// 세팅
		application.setAttribute("contextPath", contextPath);
		
		chain.doFilter(request, response);
	
	}

}
profile
절박한 마음을 갖고 하루를 보내자!!

0개의 댓글