GenericFilterBean을 기반으로 작성된 추상 클래스

클라이언트의 한 번 요청에 대해 내부적으로 동일한 서블릿 필터를 여러번 거칠 경우 한 번 반응하도록 설계되어있다.

Override • OncePerRequestFilter : doFilterInternal()

• GenericFilterBean : doFilter()

GenericFilterBean은 내부적으로 동일한 필터를 여러 번 통과하더라도 통과한 수 만큼 내부 로직이 실행된다.

OncePerRequestFilter는 내부적으로 동일한 필터를 여러 번 통과하더라도 첫 한 번만 내부 로직이 실행된다.

즉 OncePerRequestFilter는 forward시에 한 번만 로직을 실행 한다.

image.png

위와 같이 forword시에는 필터를 2번 탔지만 OncePerRequestFilter는 한 번만 동작한다.

image.png

redirect는 다른 경로로 재 요청하라는 의미임. 그러므로 요청이 2번 발생 함. OncePerRequestFilter는 2번 모두 실행 됨.