filter
필수는 아닌데 알고 있으며 편할 때가 있다.
- 서버 기동 될 때, 객체 생성함
- 서블릿 수행 되기 전, 수행되고 나서 역활 할 수 있는 것
- 요청 왔을 때, 필터를 거쳐서 수행됨 (jsp, servlet, static file)
- 로그 필터 - ex) 회사가 앞으로 한달 동안만 사이트의 어느 시간 때에 요청이 많이 오는 지 확인할 때.
- 필터 갯수 제한 없음
- 몇 번째 필터냐에서 순서가 달라짐
- 순서는 필터의 이름 순서에 따라 달라진다. - 알파벳 순
- 한번 객체 생성되면 서버 죽을 때까지 유지됨
- 서버 기동될 때 객체 생성 해 놓는다.
- chain.doFilter : 다음 친구를 수행 시켜라. - 수행해야함.
- servlet수행 하기 전에 전처리 할 내용 앞에 적음
- 후 처리할 내용은 chain.doFilter호출 뒤에 적는다.
- 이거 안 하면 filter만 호출되고 응답해버림 (servlet안 해줌)
- first(servlet) 요청(request 선택)할 때만 filter하겠다.
- httpservlet은 클래스라서 자유로웠는데 filter는 인터페이스
- 다른 서블릿 요청할 때 수행 안 됨
package filter; import java.io.IOException; import javax.servlet.DispatcherType; 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; /** * filter 공부 * 2022.01.06 * init메소드가 맨 밑 - 알파벳 순 */ @WebFilter(dispatcherTypes = {DispatcherType.REQUEST } , urlPatterns = { "/first" }) public class FlowFilter implements Filter { public FlowFilter() { System.out.println("FlowFilter 객체 생성"); } public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("---- 서블릿 수행 전 생성"); chain.doFilter(request, response); System.out.println("---- 서블릿 수행 후 생성"); } // 필터가 객체 생성할 때 - 서버가 기동할 때(서버 죽을 때까지 유지) public void init(FilterConfig fConfig) throws ServletException { System.out.println("FlpwFilter 객체 초기화"); } }
-
- 모든 자원 시작할 때 filter시작
'study > JAVA 전문가' 카테고리의 다른 글
[linux] 톰캣 설치 (0) | 2022.01.26 |
---|---|
[HTML/CSS] (0) | 2022.01.11 |
[JSP] 방명록 프로그램 (0) | 2022.01.05 |
[JSP] EL (0) | 2022.01.05 |
[ServletJSP] 시험 준비 (0) | 2022.01.04 |