🔥새해맞이 특별 라이브 선착순 신청🔥

TIL DAY3 - [서블릿 필터]

서블릿 필터

  • 웹과 관련된 공통 관심사를 처리할 때 주로 사용한다.
    • ex) 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 한다.
  • 스프링의 AOP로도 해결 가능하지만 웹과 관련된 관심사면 필터 혹은 인터셉터를 사용하는 것이 좋다.

필터의 흐름

  • HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러
  • 필터를 적용하면 필터 호출 후에 서블릿이 호출된다.
  • 그래서 모든 고객의 요청 로그를 남기는 요구사항에서 사용하면 된다.
  • 스프링을 사용하는 경우 여기서 말하는 서블릿은 Dispatcher Servlet으로 생각하면 된다.

필터 제한

  • 로그인 사용자: HTTP 요청 -> WAS -> 필터 -> 서블릿  -> 컨트롤러
  • 비 로그인 사용자: HTTP 요청 -> WAS -> 필터(적절하지 않은 요청으로 판단, 서블릿 호출 X)

필터 체인

  • HTTP 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨트롤러
  • 필터는 체인으로 구성되며 중간에 자유롭게 추가할 수 있다.
  • ex) 로그를 남기는필터 선적용 후 로그인 여부를 체크하는 필터를 적용

필터 인터페이스

  • 필터 인터페이스를 구현하고 등록하면 서블릿 컨테이너가 필터를 싱글톤 객체로 생성, 관리한다.
  • init(): 필터 초기화 메서드, 서블릿 컨테이너가 생성될 때 호출됨
  • doFilter(): 요청이 들어올 때 마다 호출되는 메서드, 필터의 핵심 로직을 구현하면 된다.
  • destroy(): 필터 종료 메서드, 서블릿 컨테이너가 종료될 때 호출됨

채널톡 아이콘