필터
필터는 클라이언트에서 온 요청을 최초로 받고, 클라이언트로 보내는 응답의 최총 단계에 위치해있다. (클라이언트와 dispatcherservlet 사이) 그래서 클라이언트의 요청과 응답에 부가적인 정보를 붙이거나 처리를 해줄 때 사용한다. 주로 로깅이나 보안과 관련된 작업을 할 때 사용되며 인증, 인가 로직을 비즈니스 로직과 분리할 수 있다는 장점이 있다.
필터 체인
필터는 위의 사진처럼 여러개가 연결되어있는 상태로 사용할 수 있다.
chain.doFilter(request, response);
FilterChain에서는 doFilter를 사용하여 다음 필터로 정보를 넘기고, 여러 필터를 순차적으로 적용할 수 있는데 필터에 대해 제대로 이해를 못 했을 때 마지막 필터임에도 doFilter를 사용해야하는 이유가 궁금했다.
1. 서블릿으로 최종 요청 전달
마지막 필터는 서블릿으로 최종적인 요청을 넘겨주어야하는데 doFilter를 사용해서 넘겨줄 수 있다.
2. 응답 처리
반대로 서블릿에서 응답을 보내줄 때는 마지막 필터부터 순차적으로 필터를 통과해야하기 때문에 마지막 필터가 이전 필터로 응답을 전달 해 줄 때도 doFilter가 필요하다.
마지막 필터에도 doFilter가 존재해야 서블릿이 정상적으로 실행되며, 응답이 클라이언트에게 전달되기 전후에 필요한 모든 작업이 수행될 수 있다.
'개발 > Spring' 카테고리의 다른 글
[Spring] 영속성 컨텍스트와 지연로딩의 관계 (0) | 2024.05.23 |
---|---|
[Spring] Entity 연관관계 (0) | 2024.05.23 |
[Spring 입문] 3 layer architecture / IoC와 DI (0) | 2024.05.17 |
[Spring 입문] Database (DBMS / RDBMS) (0) | 2024.05.17 |
[Spring 입문] HTTP 데이터 객체로 처리하기 (0) | 2024.05.17 |