///////
Search
🦠

Interceptor와 Filter의 차이점을 말해주세요.

Filter

Dispatcher Servlet에 요청이 전달되기 전, 후에 부가작업을 처리하는 객체
톰캣과 같은 웹 컨테이너에 의해 관리된다
인코딩 변환 처리, XSS 방어, LOG, 인증 등에 사용된다
Filter 실행 methods
init() - 필터 인스턴스 초기화
doFilter() - 체인을 따라 다음에 존재하는 필터로 이동한다. 체인의 가장 마지막에는 클라이언트가 요청한 최종자원이 위치한다
destroy() - 필터 인스턴스 종료

Interceptor

스프링 MVC가 제공하는 기능
Controller의 핸들러가 실행되기 전이나 후에 추가적인 작업 수행
필터 이후 실행
스프링 컨텍스트 내에 존재하기 때문에 모든 bean 객체에 접근 가능
세션 처리, 로그인 처리, 권한 체크, 프로그램 실행 시간 계산 등을 수행
인터셉터 실행 methods
preHandler() - 컨트롤러 메소드가 실행되기 전
postHandler() - 컨트롤러 메소드 실행 후 view 페이지 렌더링 전
afterCompletion() - view 페이지 렌더링 후
요약
1. 필터의 경우 웹 컨텍스트 안에서 실행되며, 인터셉터의 경우 스프링 컨텍스트 안에서 실행된다
2. 필터는 HttpServlet request / response 객체를 조작할 수 있지만 인터셉터는 불가능하다