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 객체를 조작할 수 있지만 인터셉터는 불가능하다