Latest web development tutorials

차단 필터 패턴

응용 프로그램을 요청 또는 응답 필터 패턴 (차단 필터 패턴)을 차단하는 몇 가지 전처리 / 후 처리를 할 수 있습니다. 필터를 정의하고, 요청에 따라 상기 타겟 애플리케이션의 실제적인 적용에 대한 요청 이전. 필터는 인증 / 권한 부여 / 로깅 또는 추적 요청, 적절한 핸들러에 다음 요청을 할 수 있습니다. 다음은이 설계 패턴의 실체이다.

  • 필터 (필터) - 전 또는 요청 요청 핸들러의 실행은 특정 작업을 수행하는 후 필터.
  • 필터 체인 (필터 체인) - 복수의 필터와, 소정의 시퀀스에있는 대상에서 이러한 필터의 구현 체인 필터.
  • 대상 - 대상 객체 요청 처리기입니다.
  • 필터 관리자 (필터 관리자) - 필터 관리자 필터 및 필터 체인.
  • 클라이언트 (고객) - 클라이언트 객체는 요청을 전송 객체를 대상입니다.

실현

우리는FilterChain는,FilterManager, 대상, 클라이언트는 다양한 개체와 같은 개체를 나타냅니다 만듭니다.AuthenticationFilterDebugFilter 엔티티필터를 나타냅니다.

InterceptingFilterDemo,우리는 인터셉트 필터 설계 패턴을 보여클라이언트 클래스의사용을 입증한다.

차단 필터 패턴 UML 다이어그램

1 단계

필터 인터페이스 필터를 만듭니다.

Filter.java

공용 인터페이스 필터 {
   공공 무효가 (문자열 요청)을 실행;
}

2 단계

엔티티 필터를 만듭니다.

AuthenticationFilter.java

공용 클래스 AuthenticationFilter는 필터 {구현
   공공 무효 {(문자열 요청)을 실행
      에서 System.out.println ( "인증 요청 :"+ 요청);
   }
}

DebugFilter.java

공용 클래스 DebugFilter는 필터 {구현
   공공 무효 {(문자열 요청)을 실행
      에서 System.out.println ( "요청 로그 :"+ 요청);
   }
}

3 단계

대상을 만듭니다.

Target.java

공용 클래스 대상 {
   공공 무효 {(문자열 요청)을 실행
      에서 System.out.println ( "실행 요청"+ 요청);
   }
}

4 단계

필터 체인을 만듭니다.

FilterChain.java

수입 인 java.util.ArrayList;
가져 오기를 java.util.List;

공용 클래스 FilterChain {
   개인 목록 <필터> 필터 = 새로운 ArrayList를 <필터> ();
   개인 대상 대상;

   공공 무효의 AddFilter를 (필터 필터) {
      filters.add (필터);
   }

   공공 무효 {(문자열 요청)을 실행
      {(필터 필터 필터)에 대한
         filter.execute (요청);
      }
      target.execute (요청);
   }

   공공 무효 setTarget (대상 대상) {
      this.target = 대상;
   }
}

5 단계

필터 관리자를 만듭니다.

FilterManager.java

공용 클래스 FilterManager {
   FilterChain filterChain;

   공공 FilterManager (대상 대상) {
      filterChain = 새로운 FilterChain ();
      filterChain.setTarget (대상);
   }
   공공 공극에는, setFilter (필터 필터) {
      filterChain.addFilter (필터);
   }

   공공 무효 filterRequest (문자열 요청) {
      filterChain.execute (요청);
   }
}

6 단계

클라이언트 클라이언트를 만듭니다.

Client.java

공용 클래스 클라이언트 {
   FilterManager filterManager;

   공공 무효 setFilterManager (FilterManager filterManager) {
      this.filterManager = filterManager;
   }

   공공 무효있는 sendRequest (문자열 요청) {
      filterManager.filterRequest (요청);
   }
}

7 단계

인터셉트 필터 디자인 패턴을 보여주기 위해클라이언트를 사용합니다.

FrontControllerPatternDemo.java

공용 클래스 InterceptingFilterDemo {
   공공 정적 무효 메인 (문자열 []에 args) {
      FilterManager filterManager = 새로운 FilterManager (새 대상 ());
      filterManager.setFilter (새 AuthenticationFilter ());
      filterManager.setFilter (새 DebugFilter ());

      클라이언트 클라이언트 = 새로운 클라이언트 ();
      client.setFilterManager (filterManager);
      client.sendRequest ( "HOME");
   }
}

8 단계

출력을 확인합니다.

인증 요청 : HOME
요청 로그 : HOME
실행 요청 : HOME