インターセプトフィルタパターン2024 年の最新の入門チュートリアル。このコースでは 実現,ステップ1,ステップ2,ステップ3,ステップ4,ステップ5,ステップ6,ステップ7,ステップ8, について学習できます。
いくつかの前処理/後処理を行うためのアプリケーションまたは応答でを要求するためのフィルタパターン(インターセプトフィルタパターン)をインターセプト。 フィルタを定義し、リクエストに応じて、ターゲット・アプリケーションの実用化への要求の前に。 フィルタは、次に、適切なハンドラに要求を認証/許可/ロギングやトラッキングの要求を行うことができます。 以下は、このデザインパターンの実体です。
私たちは、クライアントがさまざまなオブジェクトなどのエンティティを表し、ターゲットをれるFilterChain、FilterManagerを作成します。 AuthenticationFilterとDebugFilterは、エンティティフィルタを表します。
InterceptingFilterDemoは、我々はインターセプトフィルターのデザインパターンを実証するために、クライアントクラスの使用を示します。
フィルタインターフェイスのフィルターを作成します。
Filter.java
パブリックインターフェイスフィルタ{ 公共ボイドは(文字列要求)を実行します。 }
エンティティフィルタを作成します。
AuthenticationFilter.java
パブリッククラスAuthenticationFilterは{フィルタを実装します ます。public void {(文字列要求)を実行 System.out.println( "認証要求:" +リクエスト)。 } }
DebugFilter.java
パブリッククラスDebugFilterは{フィルタを実装します ます。public void {(文字列要求)を実行 System.out.println( "リクエストログ:" +リクエスト)。 } }
ターゲットを作成します。
Target.java
パブリッククラスターゲット{ ます。public void {(文字列要求)を実行 System.out.println( "実行要求:" +リクエスト)。 } }
フィルタチェーンを作成します。
FilterChain.java
輸入はjava.util.ArrayList; 輸入java.util.Listに。 パブリッククラスれるFilterChain { プライベートリスト<フィルター>フィルター=新しいのArrayList <フィルター>(); プライベートターゲットターゲット。 公共ボイドかaddFilter(フィルター・フィルター){ filters.add(フィルター); } ます。public void {(文字列要求)を実行 {:(フィルターフィルターフィルター)のために filter.execute(リクエスト)。 } target.execute(リクエスト)。 } 公共ボイドがsetTarget(ターゲットターゲット){ this.target =ターゲット。 } }
フィルタマネージャを作成します。
FilterManager.java
パブリッククラスFilterManager { れるFilterChainフィルターチェーン; 公共FilterManager(ターゲットターゲット){ フィルターチェーン=新しいれるFilterChain(); filterChain.setTarget(ターゲット)。 } 公共ボイドのSetFilter(フィルター・フィルター){ filterChain.addFilter(フィルター); } 公共ボイドfilterRequest(文字列要求){ filterChain.execute(リクエスト)。 } }
クライアントのクライアントを作成します。
Client.java
パブリッククラスクライアント{ FilterManager filterManager; 公共ボイドsetFilterManager(FilterManager filterManager){ this.filterManager = filterManager。 } 公共ボイドのsendRequest(文字列要求){ filterManager.filterRequest(リクエスト)。 } }
インターセプトフィルターのデザインパターンを実証するために、クライアントを使用します。
FrontControllerPatternDemo.java
パブリッククラスInterceptingFilterDemo { 公共の静的な無効メイン(文字列[] args){ FilterManager filterManager =新しいFilterManager(新しいターゲット()); filterManager.setFilter(新しいAuthenticationFilter()); filterManager.setFilter(新しいDebugFilter()); クライアントクライアント=新しいクライアント(); client.setFilterManager(filterManager)。 client.sendRequest( "HOME")。 } }
出力を確認します。
認証要求:HOME リクエストログ:HOME 実行要求:HOME