본문 바로가기
프로그래밍/Back-end

Java의 인터셉터(Interceptor)와 필터(Filter)에 대해서!

by @GodWin 2024. 10. 10.

-




-
안녕하세요? 오늘은 Java의 인터셉터(Interceptor)와 필터(Filter)에 대해서 알아보도록 하겠습니다.



인터셉터(Interceptor)와 필터(Filter)는 요청과 응답을 가로채어 처리하는 메커니즘으로, 주로 웹 애플리케이션에서 사용됩니다. 이 둘은 비슷한 기능을 수행하지만, 사용되는 환경과 목적에 따라 다릅니다.


인터셉터 (Interceptor)

: 주로 Spring MVC와 같은 프레임워크에서 사용되는 컴포넌트로, 특정 요청에 대해 사전 및 사후 처리를 수행합니다.
: 요청이 컨트롤러에 도달하기 전에(사전 처리) 또는 컨트롤러에서 응답을 반환한 후(사후 처리) 동작합니다.
: 특정 메서드(컨트롤러) 호출 전후에 로직을 삽입할 수 있습니다.
: Spring의 DI(의존성 주입)를 통해 다양한 서비스와 의존성을 주입받을 수 있습니다.
: 트랜잭션 처리, 권한 검사, 로깅 등의 작업에 적합합니다.




필터 (Filter)

: Java EE의 서블릿 API에서 제공하는 기능으로, 클라이언트의 요청과 서버의 응답을 가로채는 데 사용됩니다.
: 서블릿이 요청을 처리하기 전에 요청을 가로채거나, 응답이 클라이언트에게 전달되기 전에 처리할 수 있습니다.
: 여러 필터를 연결하여 순차적으로 요청을 처리할 수 있습니다.
: 필터는 일반적으로 컨텍스트에 의존하지 않으며, 비즈니스 로직에 대한 직접적인 접근이 없습니다.
: 인증, 인가, 요청/응답 데이터 인코딩 등을 처리하는 데 유용합니다.





※ 인터셉터(Interceptor)와 필터(Filter)의 차이점

사용 환경 Spring MVC 등 Java EE 서블릿 API
처리 위치 요청 처리 전후 요청 처리 전후
의존성 DI 지원 일반적으로 DI 없음
사용 사례 트랜잭션 관리, 로깅, 권한 검사 인증, 인가, 요청/응답 변환





* 인터셉터(Interceptor) 사용 예제

ex) 인터셉터(Interceptor) 클래스(Class)

public class 인터셉터명 extends HandlerInterceptorAdapter {  

   boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
         throws Exception;
   }
   void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
         throws Exception;
   }
   void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
         throws Exception;
   }
}




ex) 서블릿(Servlet) xml

<mvc:interceptors>

   <mvc:interceptor>
      <mvc:mapping path="인터셉터적용액션" />
      <mvc:exclude-mapping path="인터셉터제외액션" />
      <bean class="인터셉터경로.인터셉터" />
   </mvc:interceptor>
</mvc:interceptors>





오늘은 Java의 인터셉터(Interceptor)와 필터(Filter)에 대해서 알아보
오늘도 즐거운 하루 되시길 바라겠습니다.