필터 패턴 가로채기

Intercepting filter pattern

인터셉팅 필터JavaEE 패턴으로, 코어 요청 처리 코드를 변경할 필요 없이 일반적인 서비스를 표준 방식으로 처리하기 위해 플러그형 필터를 생성한다.필터는 들어오는 요청과 발신 응답을 차단하여 사전 처리와 사후 처리가 가능하며, 이러한 필터는 기존 코드를 변경하지 않고도 눈에 띄지 않게 추가하거나 제거할 수 있다.[1]이 패턴은 전면 및 페이지 컨트롤러에 의한 실제 요청 실행 전후에 재사용 가능한 처리를 투명하게 적용한다.[2]

구조

필터 관리자, 필터 체인, 필터 및 대상은 패턴의 구성 요소다.

Intercepting filter patter class diagram
Intercepting filter patter sequence diagram

필터 관리자

이것은 필터 처리를 관리하고 적절한 필터로 필터 체인을 올바른 순서로 만들고 처리를 시작한다.[1]

필터 체인

필터 체인(Filter Chain)은 논리적 체인을 형성하도록 구성된 필터의 특정 시리즈다.[1]

필터

이것들은 대상에 매핑되는 개별 필터들이며 그 처리 과정은 필터 체인에 의해 조정된다.[1]

대상

이것은 클라이언트가 요청한 자원이다.[1]

결과들

다음과 같은 편익을 고려할 수 있다.

  • 재사용 가능성 향상:공통 코드는 플러그형 구성 요소에 집중되어 재사용률을 높인다.
  • 유연성 향상:일반적인 공통 구성요소를 선언적으로 적용 및 제거하여 유연성을 개선할 수 있다.[1][2]

불필요하게 긴 인터셉터와 필터 체인이 성능에 손상을 줄 수 있기 때문에 성능 저하가 우려될 수 있다.[2]

샘플코드

사용자 정의 필터 전략을 사용하는 필터에 대한 샘플 코드 구현은 다음과 같다.

필터 - 디버깅 필터 구현 코드:

공중의 계급 디버깅필터 기구들 프로세서 {   사유의 프로세서 표적으로 삼다;    공중의 디버깅필터(프로세서 myTarget) {     표적으로 삼다 = myTarget;   }    공중의 공허하게 하다 처형하다(서블릿요청 리큐,    서블릿 응답 재방송하다) 던지다 IOException,      서블릿Exception    {     //여기서 다음과 같은 일부 필터 처리 수행     // 요청 매개 변수 표시     표적으로 삼다.처형하다(리큐, 재방송하다);   } } 

[1]

필터 - 코어 프로세서 구현 코드:

공중의 계급 코어프로세서 기구들 프로세서 {   사유의 프로세서 표적으로 삼다;   공중의 코어프로세서()   {     (무효의);   }    공중의 코어프로세서(프로세서 myTarget)   {     표적으로 삼다 = myTarget;   }    공중의 공허하게 하다 처형하다(서블릿요청 리큐,        서블릿 응답 재방송하다) 던지다 IOException,        서블릿Exception   {     //여기서 코어 처리 수행   } } 

[1]

요청 처리 코드:

공중의 공허하게 하다 프로세스요청(서블릿요청 리큐,    서블릿 응답 재방송하다)    던지다 IOException, 서블릿Exception {   프로세서 프로세서 = 새로운 디버깅필터(      새로운 AuthenticationFilter(새로운 코어프로세서()));   프로세서.처형하다(리큐, 재방송하다);    //그런 다음 다음 다음 리소스로 디스패치하십시오.   // 표시할 보기   배차원.급파하다(리큐, 재방송하다); } 

[1]

필터 관리자 코드:

공중의 공허하게 하다 프로세스요청(서블릿요청 리큐,    서블릿 응답 재방송하다)    던지다 IOException, 서블릿Exception {   프로세서 프로세서 = 새로운 디버깅필터(      새로운 AuthenticationFilter(새로운 코어프로세서()));   프로세서.처형하다(리큐, 재방송하다);    //그런 다음 다음 다음 리소스로 디스패치하십시오.   // 표시할 보기   배차원.급파하다(리큐, 재방송하다); } 

[1]

필터 체인 코드:

공중의 계급 필터 체인 {   // 필터 체인      // 필터 적용     을 위해 (최종의 필터 여과하다 : 필터)     {       // 다양한 방법으로 요청 및 응답을 전달       // 필터       여과하다.처형하다(부탁한다, 반응하다);     }   } } 

[1]

참고 항목

참조

  1. ^ a b c d e f g h i j k "Core J2EE Patterns - Intercepting Filter". Oracle. Oracle. Retrieved 6 February 2016.
  2. ^ a b c Kayal, D. (2008). Pro Java EE Spring Patterns. New York: Apress. pp. 98–106.