필터

사용자 인증과 같은 웹과 관련된 공통 관심 사항을 효과적으로 처리할 수 있도록 서블릿이 지원하는 기능이다.

여기서 말하는 서블릿은 DispatcherServlet  이 아닌 서블릿 기술 자체를 말한다.

필터는 스프링에 종속되지 않은 기술이므로org.springframework 패키지가 아닌 javax.servlet 패키지에 속해있다.

 

공통 관심사는 스프링의 AOP로도 해결할 수 있지만 아래와 같은 이유로 웹과 관련된 공통 관심사는

서블릿 필터 또는 스프링 인터셉터를 사용하는 것이 좋다. 

  • 웹과 관련된 공통 관심사를 처리할 때는 쿠키나 세션을 확인해야 하기 때문에 HTTP의 헤더나 URL의 정보들이 필요하다.
  • 서블릿 필터나 스프링 인터셉터는 HttpServletRequest 를 제공하기 때문에 이를 처리하기 용이하다.

 

필터 흐름

HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러

 

필터의 흐름은 위와 같다. 필터를 적용하면 필터가 호출 된 다음에 서블릿(DispatcherServlet )이 호출된다.

그래서 모든 고객의 요청 로그를 남기는 요구사항이 있다면 필터를 사용하면 된다.

필터는 특정 URL 패턴에 적용할 수 있다. URL 패턴을 ("/*") 이라고 하면 모든 요청에 필터가 적용된다.

 

필터 제한

로그인 사용자
HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러       

비 로그인 사용자
HTTP 요청 -> WAS -> 필터  <<< 적절하지 않은 요청, 서블릿 호출 X    

 

필터에서 적절하지 않은 요청이라고 판단하면 서블릿을 호출하지 않고 거기에서 끝낼수도 있다. 

 

필터 체인

HTTP 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨트롤러

 

필터는 체인으로 구성되는데 중간에 필터를 자유롭게 추가할 수 있다.

예를 들어서 로그를 남기는 필터를 먼저 적용하고 그 다음에 로그인 여부를 체크하는 필터를 만들 수 있다.

 

 

 

참고자료)

 

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의

웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있

www.inflearn.com

 

'백엔드 > Spring' 카테고리의 다른 글

ArgumentResolver  (0) 2023.09.29
Interceptor 써보기  (0) 2023.09.29
Interceptor  (0) 2023.09.29
BeanValidation 써보기  (0) 2023.09.22
@ModelAttribute 와 @RequestBody 써보기  (0) 2023.09.21

+ Recent posts