이 처럼 애플리케이션 여러 로직에서 공통으로 관심이 있는 것을 공통 관심사 라고 함.
AOP 로도 해결이 가능하지만 , 웹과 관련된 공통 관심사의 경우 서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다.
필터는 서블릿이 지원하는 수문장.
필터의 흐름
Http 요청 -> WAS -> 필터 -> 서블릿 -> 컨테이너
필터가 호출된다음 서블릿이 호출
/* 라고 할시에 모든 요청에 필터 적용
특정 URL 패턴에 적용이 가능하다.
Http 요청 -> WAS -> 필터(적절하지 않은 요청이라 판단시 서블릿 호출 X)
Http 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨테이너
필터 인터페이스
public interface Filter {
public default void init(FilterConfig filterConfig) throws ServletException
{}
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException;
public default void destroy() {}
}