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에 참조 권한이 있다.

 

확인된 예들

  1. Authentication Filters
  2. Logging and Auditing Filters
  3. Image conversion Filters
  4. Data compression Filters
  5. Encryption Filters
  6. Tokenizing Filters
  7. Filters that trigger resource access events
  8. XSL/T filters
  9. 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' 카테고리의 다른 글

[SpringBoot] Rest-Service  (0) 2024.01.18

+ Recent posts