前の記事では、Servletの概念を学び、この研究では、フィルタフィルタ、その名のとおり、フィルタは、Servletの間にある、傍受し、Servletの要求のためにブラウザをフィルタリングすることができます、また、ブラウザの応答のServletを変更することができます。
どのようにそれをフィルタを実装するには、ここで私は、図から見ることができるように、フィルタを実現するために、あなたに出されたマップ間の関係のフィルタサブクラスを置く、あなたは直接、フィルタインターフェイスを実装することができますまた、Httpリクエストのために彼のサブクラスを継承することができます、あなたは直接HttpFilterを継承することができます。
次に、フィルタを実装する方法を説明します:
方法1:@WebFilterアノテーションと@ServletComponentScanアノテーションを使用します。
方法2:@Componentアノテーションを使用
ウェイ3:FilterRegistrationBeanを使用して
上記のリクエストを呼び出すと、コンソールの下に再び次のような結果が表示されます。
要件1 ---- フィルタの実行順序を指定します。
アプリケーションで複数のフィルタを定義し、それらのフィルタの実行順序を指定する場合は、@Component アノテーションと FilterRegistrationBean しか使用できません。この使用方法の詳細については、以下の図を参照してください:
要件 2 ----- フィルターの検証に失敗し、例外をスローします。
実際のプロジェクトでは、通常、統一された戻り値の情報形式を定義し、例外がスローされた場合、それはグローバルな統一された例外ハンドラを介して行われるので、フロントエンドは、戻り値の結果を受信する同じ形式であるように、具体的な例は次のとおりです:
Filter内の例外はグローバル例外ハンドラによって捕捉されないため、望ましい統一された形式に処理されないことがわかります。これは、FilterがSpringコンテキスト内にないためで、統一された形式に処理するには、次のコードに示す具体例を書き換えるしかありません:
異なる実装の比較
- Componentの方法はもっともシンプルですが、すべてのリクエストをフィルタリングします。残りの2つの方法は任意のルートに対してフィルタリングできます。
- WebFilter の実装を使う場合、順序を指定することはできません。
springで提供されるフィルタ
上記では、どのようなフィルタ、およびフィルタを実装する方法について説明しましたが、私はあなたが、実際には、実際のプロジェクトでは、長い間、一般的に使用されるクロスドメイン処理フィルタなどのフィルタで使用されているかわからない、具体的な例を以下に示しますが、実際には、CorsFilterの本質は、フィルタであり、興味のあるパートナーは、ソースコードを見に行くことができます、その性質は、そのはFilterインターフェースの実装です。
この表は、すべてのフィルタを提供するために春ですが、フィルタの独自の定義では、実際にOncePerRequestFilterを実装することによって実現することができます。 具体的には何を実装するだけでなく、どのように各フィルタは、どのような用途を持って、詳細に次の記事になります。





