AOPの性質に似インターセプタ、メインシナリオ:
- ログ:ログ情報、監視、統計情報のための情報を要求、などPVが計算されます。
- 権限チェック:検出は、そのようなログインとは、プロセッサを入力してログイン、ログインログインページに戻らないかどうかを検出します。
- パフォーマンスの監視:プロセッサへとプロセッサのうちの時間インターセプタを記録します。
- 一般的な動作であればインターセプタを使用して実施することができる複数のプロセッサを必要とする、情報を抽出するプロセスのその後の使用を容易にするように要求にクッキーにユーザ情報を読み取るだけでなく、ロケール、テーマ。
- OpenSessionView:Hibernateは、プロセッサはセッション内の開口部に入ると、セッションが終了した後に閉じられます。
インターセプタは、2つの方法で実装します:
org.springframework.web.servlet.HandlerInterceptor:迎撃プロセッサインタフェースを達成するために1。
- preHandle(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラ):プリコールバックメソッドは、コントローラを実行する前に、真次の処理(インターセプターまたはハンドラ)を行って戻ります。偽のブレーク実行を返し、インターセプタまたはプロセッサが応答を生成するためにREPONSEを操作することができる呼び出すことはありません。
- postHandle(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラのModelAndViewのModelAndView):コールバックメソッド処理後、ModeAndViewによって実行コントローラ(正面レンダリング)は表示するために処理または加工することができる後に、ヌルModeAndViewであってもよいです
- afterCompletion(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラは、例外EX):コールバックメソッド終了要求全体、ビューがレンダリングされコールバックされます。
2.後継インターセプターアダプタクラス:org.springframework.web.servlet.handler.HandlerInterceptorAdapter
インターセプタが必要と3つのインタフェースを書き換えることを達成するため、これらの三つの方法は、空気を達成するために行うために迎撃アダプタは、このクラス、必要に応じて3インターセプターに書き換える方法を継承することができます。
違い:
-
インターセプタアダプタ1-3複製方法を必要とするかもしれない3つの空実装方法のインターセプター・インターフェースを、作りました。
-
AsyncHandlerInterceptorインターセプタはafterConcurrentHandlingStarted()関数を提供するインタフェースアダプタ、非同期要求を処理するためのコントローラを実装します
プロジェクトの設定:
<! - 拦截器定义- > < 豆ID = "logInterceptor" クラス= "com.wang.interceptor.LogInterceptor" /> < 豆のid = "performanceInterceptor" クラス= "com.wang.interceptor.PerformanceInterceptor" /> < 豆ID = "testInterceptorAdapter" クラス= "com.wang.interceptor.TestInterceptorAdapter" /> < 豆のクラス= "org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" > <! - 拦截器配置、顺序执行- > <プロパティの名前は=「インターセプタ」> < リスト> < REF 豆= "logInterceptor" /> < REF 豆= "performanceInterceptor" /> < REF 豆= "testInterceptorAdapter" /> </ リスト> </ プロパティ> </ 豆>