차단 필터 패턴
응용 프로그램을 요청 또는 응답 필터 패턴 (차단 필터 패턴)을 차단하는 몇 가지 전처리 / 후 처리를 할 수 있습니다. 필터를 정의하고, 요청에 따라 상기 타겟 애플리케이션의 실제적인 적용에 대한 요청 이전. 필터는 인증 / 권한 부여 / 로깅 또는 추적 요청, 적절한 핸들러에 다음 요청을 할 수 있습니다. 다음은이 설계 패턴의 실체이다.
- 필터 (필터) - 전 또는 요청 요청 핸들러의 실행은 특정 작업을 수행하는 후 필터.
- 필터 체인 (필터 체인) - 복수의 필터와, 소정의 시퀀스에있는 대상에서 이러한 필터의 구현 체인 필터.
- 대상 - 대상 객체 요청 처리기입니다.
- 필터 관리자 (필터 관리자) - 필터 관리자 필터 및 필터 체인.
- 클라이언트 (고객) - 클라이언트 객체는 요청을 전송 객체를 대상입니다.
실현
우리는FilterChain는,FilterManager, 대상, 클라이언트는 다양한 개체와 같은 개체를 나타냅니다 만듭니다.AuthenticationFilter및DebugFilter 엔티티필터를 나타냅니다.
InterceptingFilterDemo,우리는 인터셉트 필터 설계 패턴을 보여클라이언트 클래스의사용을 입증한다.
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