この記事では、Spring のフィルターとインターセプターの違いについて説明します。一定の参考値があるので、困っている友人は参考にしていただければ幸いです。
#Interceptor
Main 関数: ユーザーのログイン ステータスや権限の検証などのユーザー要求をインターセプトし、処理します。コントローラーリクエストは HandlerInterceptor を通じて処理されます。 Interceptor は 2 つの状況に分かれます 1 つはセッションをインターセプトする Spring の HandlerInterceptor インターフェイスを実装し、mvc のインターセプト キューに登録するpreHandle() メソッドは Handler を呼び出す前に実行されます.インターセプト (上の図のステップ 3)、ビューがレンダリングされる前に postHandle() メソッドが呼び出されます (上の図のステップ 5)、 afterCompletion()メソッドは、対応するメソッドを返す前に実行されます。もう 1 つはメソッドをインターセプトするもので、指定されたメソッドの呼び出しの前後に @Aspect アノテーションを使用してインターセプトする必要があります。
Filter
主な機能: 文字エンコーディングのフィルタリングとビジネス ロジックの判断主にユーザーのリクエストの前処理に使用され、論理的な判断も行うことができます。 フィルターは、リクエストがサーブレット コンテナーに入り、service() メソッドを実行する前にフィルターによってフィルター処理されます (上の図のステップ1)。これは springmvc フレームワークに依存しません。 Intcept と似ていますが、 servlet に依存するだけで済みます。フィルタの起動はWEBアプリケーションの起動とともに開始され、一度初期化するだけで次回以降は傍受可能です。
フィルターには次のタイプがあります: ユーザー認証フィルター: ユーザー要求をチェックし、要求に従って不正なユーザー要求をフィルターします; ログフィルター: 特定の特別なユーザー要求を記録します。 デコード フィルター: 非標準エンコードのリクエストをデコードします。フィルターとインターセプターの違い
1. フィルターは関数コールバック (doFilter() メソッド) に基づいていますが、インターセプターは Java リフレクション (AOP のアイデア) に基づいています。 。 2. フィルターはサーブレット コンテナに依存しますが、インターセプターはサーブレット コンテナに依存しません。 3. フィルターはほぼすべてのリクエストに対して機能しますが、インターセプターはアクション リクエストに対してのみ機能します。 4. インターセプターはアクションのコンテキストと値スタック内のオブジェクトにアクセスできますが、フィルターはアクセスできません。 5. アクションのライフサイクルでは、Interceptor は複数回呼び出すことができますが、Filter はコンテナの初期化時に 1 回しか呼び出すことができません。 6. フィルターはリクエストとレスポンスでのみ操作できますが、インターセプターはリクエスト、レスポンス、ハンドラー、modelAndView、例外で操作できます。 【関連する推奨事項:Java ビデオ チュートリアル ]
以上がSpring のフィルターとインターセプターの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。