public interface WebRequestInterceptorWebRequest 抽象化に基づいて構築することにより、サーブレットリクエストおよびポートレットリクエスト環境に適用することができます。このインターフェースは、MVC スタイルのリクエスト処理を前提としています。ハンドラーが実行され、一連のモデルオブジェクトが公開されてから、そのモデルに基づいてビューがレンダリングされます。または、ハンドラーは、ビューをレンダリングせずにリクエストを完全に処理することもできます。
非同期処理のシナリオでは、メインスレッドが postHandle および afterCompletion コールバックをレンダリングまたは呼び出さずに終了するときに、ハンドラーが別のスレッドで実行される場合があります。ハンドラーの同時実行が完了すると、モデルのレンダリングを続行するためにリクエストがディスパッチされ、この契約のすべてのメソッドが再度呼び出されます。その他のオプションとコメントについては、org.springframework.web.context.request.async.AsyncWebRequestInterceptor を参照してください
このインターフェースは、一般的なリクエストインターセプターの依存関係を可能な限り最小限に抑えるために、意図的に最小限に抑えられています。
注 : このインターセプタはサーブレット環境のリクエスト処理全体に適用されますが、デフォルトでは、ポートレットビューの準備とレンダリングを行うポートレット環境のレンダリングフェーズにのみ適用されます。 アクションフェーズにも WebRequestInterceptors を適用するには、HandlerMapping の "applyWebRequestInterceptorsToRenderPhaseOnly" フラグを "false" に設定します。あるいは、そのようなニーズのために、ポートレット固有の HandlerInterceptor メカニズムの使用を検討してください。
ServletWebRequest, DispatcherServlet, AbstractHandlerMapping.setInterceptors(java.lang.Object...), HandlerInterceptor| 修飾子と型 | メソッドと説明 |
|---|---|
void | afterCompletion(WebRequest request, ExceptionSE ex) リクエスト処理の完了後、つまりビューのレンダリング後のコールバック。 |
void | postHandle(WebRequest request, ModelMap model) 呼び出しが成功した後、ビューのレンダリングの前に(もしあれば)リクエストハンドラーの実行をインターセプトします。 |
void | preHandle(WebRequest request) 呼び出しの前にリクエストハンドラーの実行をインターセプトします。 |
void preHandle(WebRequest request) throws ExceptionSE
コンテキストリソース(Hibernate セッションなど)を準備し、リクエスト属性またはスレッドローカルオブジェクトとして公開できます。
request - 現在の Web リクエスト ExceptionSE - エラーの場合 void postHandle(WebRequest request, @Nullable ModelMap model) throws ExceptionSE
ハンドラーの実行が成功した後にコンテキストリソースを変更することができます(たとえば、Hibernate セッションのフラッシュ)。
request - 現在の Web リクエスト model - ビューに公開されるモデルオブジェクトのマップ(null の場合があります)。必要に応じて、公開されたモデルの分析やモデル属性の追加に使用できます。ExceptionSE - エラーの場合 void afterCompletion(WebRequest request, @Nullable ExceptionSE ex) throws ExceptionSE
メモ: このインターセプターの preHandle メソッドが正常に完了した場合にのみ呼び出されます!
request - 現在の Web リクエスト ex - ハンドラーの実行時にスローされる例外(ある場合)ExceptionSE - エラーの場合