>  기사  >  Java  >  Spring에서 필터와 인터셉터의 차이점은 무엇입니까?

Spring에서 필터와 인터셉터의 차이점은 무엇입니까?

不言
不言앞으로
2019-04-03 16:50:2711150검색

이 기사에서는 Spring의 필터와 인터셉터의 차이점을 설명합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

Spring에서 필터와 인터셉터의 차이점은 무엇입니까?

Interceptor

주요 기능: 사용자 로그인 상태 확인, 권한 확인 등 사용자 요청을 가로채서 처리합니다. Controller 요청이 처리되는 한 HandlerInterceptor를 통해 이루어집니다.

인터셉터는 두 가지 상황으로 구분됩니다. 하나는 세션을 가로채고 스프링의 HandlerInterceptor 인터페이스를 구현한 후 이를 mvc의 가로채기 대기열에 등록하는 것입니다. 여기서 preHandle() 메서드는 핸들러를 호출하기 전에 가로채습니다(단계 3 위 그림) ), 뷰가 렌더링되기 전에 postHandle() 메서드가 호출되고(위 그림의 5 단계), afterCompletion() 메서드는 해당 응답을 반환하기 전에 실행됩니다. @Aspect 주석을 사용해야 하는 메소드를 Intercept에서 지정된 메소드에 대한 각 호출 전후에 차단합니다.

Filter

주요 기능: 문자 인코딩을 필터링하고 비즈니스 논리 판단을 내립니다. 주로 사용자 요청을 전처리하는 데 사용되며 논리적 판단도 할 수 있습니다.

Filter는 요청이 service() 메서드를 실행하기 위해 서블릿 컨테이너에 들어가기 전에 필터에 의해 필터링됩니다(위 그림의 1 단계). 이는 Intreceptor와 같은 springmvc 프레임워크에 의존하지 않고 의존하기만 하면 됩니다. 서블릿에서. 필터 시작은 WEB 애플리케이션 시작과 함께 시작됩니다. 한 번만 초기화하면 되며 나중에 차단할 수 있습니다.

필터에는 다음 유형이 있습니다.

사용자 인증 필터: 사용자 요청을 확인하고 요청에 따라 불법 사용자 요청을 필터링합니다.

로그 필터: 특정 특수 사용자 요청을 기록합니다.

디코딩 필터: 비표준 인코딩 디코딩 요청 .

Filter와 Interceptor의 차이점

1. Filter는 함수 콜백(doFilter() 메소드)을 기반으로 하는 반면 Interceptor는 Java Reflection(AOP 아이디어)을 기반으로 합니다.

2. 필터는 서블릿 컨테이너에 의존하지만 인터셉터는 서블릿 컨테이너에 의존하지 않습니다.

3. 필터는 거의 모든 요청에 ​​대해 작동하는 반면 인터셉터는 작업 요청에만 작동할 수 있습니다.

4. 인터셉터는 Action의 컨텍스트와 값 스택의 개체에 액세스할 수 있지만 Filter는 액세스할 수 없습니다.

5. 액션의 라이프사이클에서 Interceptor는 여러 번 호출할 수 있지만 Filter는 컨테이너가 초기화될 때 한 번만 호출할 수 있습니다.

6. 필터는 필터링 시 요청 및 응답에 대해서만 작동할 수 있으며, 인터셉터는 요청, 응답, 핸들러, modelAndView 및 예외에 대해 작동할 수 있습니다.

【관련 추천: Java 비디오 튜토리얼

위 내용은 Spring에서 필터와 인터셉터의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제