06. InitFilter 클래스 만들기
1) 개요
- 최상위 경로를 나타내는 ${contextPath}를 사용하기 위해 설정 필요
2) 클래스 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@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);
}
}