필터 (Filter) 란?
- J2EE 표준 스펙 기능이다.
- 스프링에서 활용할 때
Dispatcher Servlet
으로 요청이 전달되기 전에 요청에 대한 부가 로직을 작성할 수 있게 해준다. - 스프링 컨텍스트 밖에 존재하므로, 스프링 범위 밖에서 처리된다.
설명
resource
(서블릿 혹은 정적 컨텐츠) 를 요청하는 request
혹은 resource
를 반환하는 response
혹은 둘 다 에 관한 필터링 작업을 수행하는 오브젝트이다.
doFilter()
메서드에서 필터링을 수행한다. 모든 필터는 초기화 파라미터를 얻을 수 있는 FilterConfig
오브젝트에 접근 권한을 가지고 있다. 그리고 ServletContext
에 접근할 수 있는 참조를 얻을 수 있다. 이를 이용해 작업을 필터링하는 리소스를 로드할 수 있다.
필터는 웹 애플리케이션의 배포 설명자에서 구성된다.
필터로 설계하는 것들의 예는 아래와 같다.
- 인증 필터
- 로깅, 기록(Auditing) 필터
- 이미지 변환 필터
- 데이터 압축 필터
- 암호화 필터
- 토큰화 필터
- 리소스 접근 이벤트를 활성화하는 필터
- XSL/T 필터
- Mime-type 체인 필터
필터가 갖는 메서드
javax.servlet
의 Filter
인터페이스를 살펴보면 된다.
init(FilterConfig filterConfig)
: 웹 컨테이너에 의해 호출된다. 서비스에 배치되었다고 필터에게 나타내는 역할이다.doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
: chain 끝에 있는 리소스에 대한 클라이언트 요청으로 인해 매번 request/response 쌍이 chain 을 통해 넘어올 때 컨테이너에 의해 호출되는 메서드이다.destroy()
: 웹 컨테이너에 의해 호출된다. 서비스에서 빠진다고 필터에게 나타내는 역할이다.
반응형
'Java > 자바 잡지식' 카테고리의 다른 글
Filter, Interceptor, AOP 알아보기 (0) | 2022.05.10 |
---|---|
스프링의 Interceptor 란 무엇일까? [공식문서 번역] (0) | 2022.05.04 |
스프링의 @Value 애노테이션이란? (2) | 2022.05.01 |
DTO (Data Transfer Object) 란? (0) | 2022.04.27 |
Java EE 빈 검증 (Bean Validation) (0) | 2022.04.27 |