https://javadoc.io/doc/javax.servlet/javax.servlet-api/latest/index.html
javax.servlet-api 4.0.1 javadoc (javax.servlet)
Latest version of javax.servlet:javax.servlet-api https://javadoc.io/doc/javax.servlet/javax.servlet-api Current version 4.0.1 https://javadoc.io/doc/javax.servlet/javax.servlet-api/4.0.1 package-list path (used for javadoc generation -link option) https:/
javadoc.io
javax.servlet에서 제공하는 filter에 대해 알아보자.
일단 filter는 Interface이므로 implement하고 메소드를 override하여 커스텀필터를 만들 수 있다.
import javax.servlet.*;
import java.io.IOException;
public class customFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//모든 request, response가 오므로, 뭔가 인증이나 권한체크를 한다!
}
@Override
public void destroy() {
}
}
documentation )
필터는 the request to a resource 또는 the response from a resource 혹은 두 상황 모두에서 필터링을 제공한다.
doFilter 메소드에서 필터링을 한다. 모든 필터는 FilterConfig object에 접근할 수 있고,ServletContext에 참조 권한이 있다.
확인된 예들
- Authentication Filters
- Logging and Auditing Filters
- Image conversion Filters
- Data compression Filters
- Encryption Filters
- Tokenizing Filters
- Filters that trigger resource access events
- XSL/T filters
- Mime-type chain Filter
doFilter 메소드는,
void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException,
ServletException
chain의 끝에 리소스에 client의 request로 request/response 쌍이 chain을 지날때마다 container에서 호출된다. 이 메소드로 통고된 FilterChain은 Filter가 chain의 다음 entity로 접근할 수 있을지 허락한다.
chain.doFilter() 을 통해 다음 entity를 깨우거나 request의 실행을 막아 접근이 불가능하게 한다.
init메소드나 destroy메소드는 기본적으로 뭔가 수행하지 않는다. custom하여 사용은 할 수 있겠지만
init메소드는 filter가인스턴스화 되었을때 한번 호출되고, destroy는 filter의 doFilter메소드에 모든 쓰레드가 종료되거나 제한시간이 경과한 후일 때만 호출된다.
'정보 > Framework' 카테고리의 다른 글
Flutter 관련 (0) | 2024.10.25 |
---|---|
[SpringBoot] Rest-Service (0) | 2024.01.18 |