ホームページ  >  記事  >  Java  >  フィルターってどういう意味ですか?

フィルターってどういう意味ですか?

(*-*)浩
(*-*)浩オリジナル
2019-05-14 15:46:2946238ブラウズ

フィルターとは、クライアントとサーバーのリソース ファイル間のフィルターである「フィルター」を意味します。リソース ファイルにアクセスする前に、リクエストは一連のフィルターを通じて変更および判断されます。変更されないリクエストをインターセプトまたは変更します。中間のルールに準拠し、応答をフィルタリング、傍受、または変更することもできます。

フィルターってどういう意味ですか?

フィルターは、その名前が示すように、データのフィルター処理と前処理のプロセスです。なぜフィルターを導入するのでしょうか? Web サイトにアクセスすると、機密情報が送信されることがありますが、表示後に機密情報が * などの文字に置き換えられ、フィルター処理されています。

推奨コース: Java チュートリアル

これは単なる単純な例です。もちろん、このフィルターは非常に強力なので、その機能をこれに限定することはできません。データを前処理するだけでなく、送信されたリクエストを前処理することもできます。同時に、サーバーから返された応答を前処理することもできるため、サーバーへの負荷が大幅に軽減されます。たとえば、URL レベルの権限アクセス制御、機密単語のフィルタリング、応答情報の圧縮などの高度な機能が実装されています。フィルターを詳しく見てみましょう。

フィルタ テクノロジは、サーブレット 2.3 で新しく追加された機能です。 Servlet2.3 は 2000 年 10 月に Sun によってリリースされました。その開発者には多くの個人や企業グループが含まれており、Sun が提唱するコードのオープン性の原則が完全に反映されています。多くの参加者の協力により、servlet2.3 は以前よりもはるかに強力になり、パフォーマンスも大幅に向上しました。

1. コンセプト

フィルタリング機能は、クライアントからサーバーに送信されたリクエストをフィルター処理し、サーバーから返されたレスポンスを処理することもできます。これにより、ユーザーはリクエストを変更し、レスポンスを変更できるようになります。 Filter はサーブレットではないため、応答を生成できませんが、リクエストがサーブレットに到達する前に前処理することができ、応答がサーブレットから出たときに応答を処理することもできます。言い換えれば、フィルターは実際にはクライアントとサーブレットの間のトランスミッターであり、渡されるものを変更できます。

注: フィルターはリクエストとレスポンスをインターセプトするために使用され、レスポンスを生成することはできませんが、サーブレットはリクエストを処理し、レスポンスを生成するために使用されます。

2. 適用可能な場面

URL レベルの権限アクセス制御、機密ワードのフィルタリング、応答情報の圧縮などを実現します。

3. フィルターによるインターセプトの実装方法

クライアントがリクエストを行うと、フィルターは HttpServletRequest がサーブレットに到達する前にクライアントの HttpServletRequest をインターセプトします。必要に応じて HttpServletRequest を確認し、HttpServletRequest ヘッダーとデータを変更することもできます。フィルター内の doFilter メソッドを呼び出してリクエストを解放します。リクエストがサーブレットに到達すると、リクエストが処理され、HttpServletResponse が生成されてクライアントに送信されます。フィルターは、HttpServletResponse がクライアントに到達する前にそれをインターセプトします。必要に応じて HttpServletResponse を確認し、HttpServletResponse ヘッダーとデータを変更します。最後に、HttpServletResponse がクライアントに到達します。

4.フィルター インターフェイス

サーブレット API はフィルター インターフェイスを提供し、作成されるフィルターはこのインターフェイスを実装する必要があります。

5.フィルターのライフサイクル

(1) フィルター インターフェイスには 3 つの重要なメソッドがあります。

init() メソッド: 初期化パラメーター。フィルターの作成時に自動的に呼び出されます。初期化パラメータを設定する必要がある場合は、このメソッドに記述することができます。 doFilter() メソッド: doFilter は、実行されるリクエストがインターセプトされたときに実行されます。ここでは、リクエストとレスポンスの前処理を記述します。 destroy() メソッド: フィルターを破棄するときに自動的に呼び出されます。

(2) フィルタのライフサイクル

フィルタの作成と破棄は Web サーバーによって制御されます。

サーバーが起動すると、Web サーバーは Filter のインスタンス オブジェクトを作成し、その init メソッドを呼び出してオブジェクトの初期化関数を完了します。フィルター オブジェクトは 1 回だけ作成され、init メソッドは 1 回だけ実行されます。リクエストがインターセプトされると、doFilter メソッドが実行されます。複数回実行可能。サーバーがシャットダウンすると、Web サーバーはフィルター インスタンス オブジェクトを破棄します。

6.Filter オブジェクト—FilterConfig

フィルターを構成するとき、ユーザーは を使用してフィルターのいくつかの初期化パラメーターを構成できます。 Web コンテナ インスタンス Filter オブジェクトの init メソッドを呼び出すと、フィルタ初期化パラメータをカプセル化する filterConfig オブジェクトが渡されます。したがって、開発者がフィルターを作成する場合、filterConfig オブジェクトのメソッドを通じてフィルターの名前を取得できます。

String getFilterName(): フィルターの名前を取得します。 String getInitParameter(String name): デプロイメントの説明で指定された名前の初期化パラメータの値を返します。存在しない場合は、null を返します。Enumeration getInitParameterNames(): フィルターのすべての初期化パラメーターの名前の列挙コレクションを返します。 public ServletContext getServletContext(): サーブレット コンテキスト オブジェクトへの参照を返します。

7. フィルター チェーン—FilterChain

フィルターのグループは特定の Web リソースをインターセプトします。このフィルターのグループはフィルター チェーンと呼ばれます。フィルターの実行順序は、 (誰が最初に実行するか) に関連します。


以上がフィルターってどういう意味ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。