Filter
Filter
- 요청이 전달 전, 후 작업 처리 가능
- ContentCachingRequestWrapper / ContentCachingResponseWrapper
- 생성이유 : HttpServletRequest의 InputStream은 한 번만 읽고 그 이후는 IOException 발생
- HttpServletRequestWrapper(HttpServletRequest 인터페이스의 편리한 구현을 제공)의 구현체
입력 스트림에서 읽은 모든 콘텐츠를 캐시하고 바이트 배열을 통해 콘텐츠를 검색 - Spring Project에서 직접 관리하기에 안정성 향상
-
Implements Filter Method 3
- init()
- Web Container(Tomcat) 시작 시 필터 객체 생성, 이때 객체가 생성되면서 최초 한 번 호출
- FilterConfig 객체로 설정값 받아 작업 시 필요한 객체를 초기화에 사용
- destroy()
- 필터 객체가 제거될 때 실행
- 초기화 시 생성했던 자원 제거 및 종료
-
dofilter(ServletRequest request ,ServletResponse response , FilterChain chain)
- chain.doFilter() 메서드의 전후로 전처리 / 후처리
- 전처리 : Dispatcher-Servlet 통해 사용 전 처리할 작업은 chain.doFilter() 전 정의
- 후처리 : Dispatcher-Servlet 의해 사용 후 처리할 작업은 chain.doFilter() 후 정의
- copyBodyToResponse : 후처리에서 로깅 시 Body 값을 한 번만 읽을 수 있기에 캐싱해둬야 사용자 response View 가능
- init()
@Component : 직접 작성한 Class를 Bean 등록