Spring - filter
Filter 란 ?
Spring은 Client로부터 request를 받고, response를 줄 때 Filter를 거쳐서 전달해준다.
Filter는 웹 어플리케이션에서 관리되는 영역으로, Spring에 의해서 데이터가 변환 되기 전, Client가 보낸 순수한 요청, 응답 값을 확인할 수 있다.
Filter의 사용
절차
- Filter를 사용하기 위해 Filter를 implements한 클래스를 생성한다.
- WebFilter 어노테이션을 추가하고, 적용범위를 설정한다.
- default = 모든 url
- doFilter() 메서드를 오버라이드한다.
- SpringBootApplication 어노테이션이 추가된 메인부에 @ServletComponentScan을 추가해준다
doFilter() 메서드
메서드의 parameter로 FilterChain 타입의 chain을 받을 수 있다. chain.doFilter() 메서드를 기준으로 필터에 들어오기 전, 후를 구분할 수 있다.
< 전처리 >
다른 parameter 중 ServletRequest request, ServletResponse reponse가 들어온다.
위 Servlet 타입은 response, request를 단 1번만 사용할 수 있다. 들어온 요청을 log로 서버에 남기면 이를 다른 용도로 활용할 수 없는 것이다.
따라서 ContentCahchingRequestWrapper, ContentCachingResponseWrapper를 생성해준다.
- 생성자의 인자로 ServletRequest과 ServletResponse를 사용할 수 있다.
< 후처리 >
서버에는 사용자가 보낸 내용과, 요청을 보낸 uri를 확인하기 위해 get메서드를 통해 로그로 남겨주었다.
응답으로 보내주는 httpStatus와 content 또한 저장하며 log에 기록해주었다.
1. TalentAPI를 통해 객체에 맞는 데이터를 post 해준다.
2. Post한 값과, uri가 log로 찍힌다.
3. Response 한 값과 HttpStatus가 알맞게 log에 찍히는 것을 확인할 수 있다.
1 |
|
Spring - filter
install_url
to use ShareThis. Please set it in _config.yml
.