/*
이라면 servlet, jsp뿐만 아니라 이미지와 같은 모든 자원의 요청에 호출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() {}
}
init
필터 객체 초기화, 서비스에 추가하기 위한 메서드
Web Container가 1회 호출하여 필터 객체를 초기화 이후 요청은 doFilter를 통해 전/후에 처리된다.
doFilter
url pattern에 맞는 모든 HTTP 요청이 Dispatcher Servelt으로 전달되기 전/후에 web Container에 의해 실행되는 메서드
destroy
필터 객체를 서비스에서 제거, 자원 반환
Web Container에 의해 1회 호출
public interface HandlerInterceptor {
default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return true;
}
default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable ModelAndView modelAndView) throws Exception {}
default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
@Nullable Exception ex) throws Exception {}
}
preHandle
Controller가 호출되기 전에 실행, Controller 이전에 처리해야하는 전처리 작업이나 요청 정보를 가공, 추가하는 경우 사용
반환 타입 boolean - true이면 다음 단계로 진행, false면 작업 중단되고 이후 작업 진행X
postHandle
Cotroller 호출 후에 실행, Controller 이후에 처리해야하는 후처리 작업이 있을 때 사용
afterHandle
모든 뷰에서 최종 결과를 생성하는 일을 포함해 모든 작업이 완료된 후에 실행
Filter
관리 컨테이너 : 웹 컨테이너
Request/Response 조작 : O
용도 :
Interceptor
관리 컨테이너 : 스프링 컨테이너
Request/Response 조작 : X
용도 :