Spring MVCのインターセプタはサーブレット開発におけるフィルタに似ており、プロセッサの前処理と後処理に使用されます。インターセプタを一定の順序でチェーン状に接続したものをインターセプタチェーンと呼びます。インターセプトされたメソッドまたはフィールドにアクセスすると、インターセプター チェーン内のインターセプターが、以前に定義された順序で呼び出されます。インターセプターは、AOP のアイデアを具体的に実装したものでもあります。
違い | フィルター | インターセプター |
使用範囲 | # はサーブレット仕様の一部であり、任意の Java Web プロジェクトで使用できます | は SpringMVC フレームワーク独自のものであり、SpringMVC が使用されている場合のみです フレームワーク プロジェクトのみが使用できます |
インターセプト範囲 | URL パターンで /* を構成した後、 アクセスされるすべてのリソースをインターセプトできます | /** を構成した後 |
カスタマイズされたインターセプトの手順:
① HandlerInterceptor インターフェイスを実装するインターセプター クラスを作成します
public class MyHandlerInterceptor1 implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { System.out.println("preHandle running..."); return true; } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { System.out.println("postHandle running..."); } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { System.out.println("afterCompletion running..."); } }
② インターセプターの設定
<!--配置拦截器--> <interceptors> <interceptor> <mapping></mapping> <bean></bean> </interceptor> </interceptors>
③ インターセプターのインターセプト効果のテスト(ターゲットメソッドの記述)
@RequestMapping("/quick23") @ResponseBody public ModelAndView quickMethod23() throws IOException, ParseException { System.out.println("目标方法执行...."); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("name","modelname"); modelAndView.setViewName("index"); return modelAndView; }
(アクセスURL)
http :/ /localhost:8080/project/quick23
コンソールでの結果の印刷
手順は次と同じです。上記のように、MyHandlerInterceptor2 オペレーションを記述する前に、実行シーケンスをテストするだけです。
説明 | |
メソッドはリクエスト処理の前に呼び出されます。このメソッドの戻り値はブール型です。false が返された場合は、リクエストが終了したことを意味します。後続のインターセプタとコントローラは再度実行されません。戻り値が When値が true の場合、次のインターセプターの preHandle メソッドが引き続き呼び出されます。 | |
このメソッドは、現在のリクエストが処理された後に呼び出されます。ただし、preHandle メソッドの戻り値は true の場合にのみ呼び出すことができ、DispatcherServlet がレンダリング用のビューを返す前に呼び出されるため、このメソッドでコントローラーが処理された後に ModelAndView オブジェクトを操作できます。 | |
このメソッドは、リクエスト全体が完了した後、つまり、DispatcherServlet が対応するビューをレンダリングした後に実行されます。メソッドは呼び出される前に true になります。 |
以上がJavaのSpringMVCインターセプターの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。