フィルタとサーブレットの比較
主に次の4つの側面からそれらの違いを紹介し
ます。1。コンセプト。
2.ライフサイクル。
3.責任。
4.実行プロセス。
1.概念:
1。サーブレット:サーブレットは、サーバー側で実行されるJavaアプリケーションです。プラットフォームやプロトコルに依存しないという特徴があり、Webページを動的に生成できます。クライアント要求とサーバー応答の中間層で機能します。
2.フィルター:フィルターは、HTTP要求、応答、およびヘッダー情報を変換するために使用できる再利用可能なコードフラグメントです。サーブレットとは異なり、フィルターは要求または応答を生成できません。特定のリソースに対する要求を変更するか、特定のリソースからの応答を変更するだけです。
2.ライフサイクル:
1。サーブレット:サーブレットのライフサイクルは、Webサーバーのメモリにロードされたときに始まり、Webサーバーがサーブレットを終了または再ロードしたときに終了します。サーブレットがWebサーバーにロードされると、通常、Webサーバーがシャットダウンされるか、再度終了するまで、Webサーバーのメモリから削除されません。
(1)ロード:サーバーの起動時にサーブレットのインスタンスをロードします。
(2)初期化:Webサーバーの起動時、Webサーバーが要求を受信したとき、またはその間のある時点で開始します。init()メソッドは初期化作業の完了を担当します;
(3)、呼び出し:最初のアクセスから後続の複数の訪問まで、doGet()またはdoPost()メソッドのみを呼び出します;
(4)、破棄:サーバーが停止したときインスタンスを破棄するには、destroy()メソッドを呼び出します。
2、フィルター:(javax.servletパッケージのフィルターインターフェイスのinit()、doFilter()、destroy()の3つのメソッドを実装する必要があります。空の実装もOKです)
(1)、サーバーの起動時にフィルターインスタンスをロードします。 init()メソッドを呼び出してインスタンスを初期化します。
(2)リクエストのたびに処理するためにメソッドdoFilter()を呼び出すだけです。
(3)サーバーが停止しているときにdestroy()メソッドを呼び出して、インスタンスを破棄します。
3.責任
1.サーブレット:
顧客の要求の性質に基づいて動的コンテンツを含む完全なhtmlページを作成して返し
ます。既存のhtmlページに埋め込むことができるhtmlページの一部(htmlフラグメント)を作成します。
送信されたクライアントを読み取ります。非
表示のデータ、クライアントから送信された表示データの読み取り、
他のサーバーリソース(データベースやJavaアプリケーションを含む)との通信
、ステータスコードと応答ヘッダーを介したクライアントへの非表示のデータの送信。
2.フィルター:
フィルターは、要求がサーブレットに到達する前にユーザー要求を前処理するか、サーブレットを離れるときにhttp応答を処理できます。
サーブレットを実行する前に、まずフィルタープログラムを実行し、その前処理を実行します。
プログラムのニーズに応じて変更します。要求と応答;
サーブレットが呼び出された後、サーブレットの実行を傍受します
4、違い:
1.サーブレットプロセスは短いです。URLが送信された後、処理されてから、それ自体で指定されたページに返されるか、リダイレクトされます。これは主にビジネス処理前の制御に使用されます
。2。フィルタープロセスは線形です。URLが渡された後、チェックした後、元のプロセスは引き続き下向きに実行され、次のフィルター、サーブレットなどによって受信され、サーブレットが処理された後、 、受け継がれません。フィルタ機能は、プロセスを元の方法で続行するため、またはプロセスを主導するために使用できますが、サーブレット機能は、主にプロセスを主導するために使用されます。
filterを使用して、文字エンコードをフィルタリングしたり、ユーザーがログインしているかどうかを検出したり、ページのキャッシュを禁止したりすることができます。
5.実装フローチャート:
1、サーブレット:
2、フィルター:
リスナーとインターセプター、それらの4つの違いと接続があります
http://blog.csdn.net/hy6688_/article/details/38666569