ホームページ  >  記事  >  Java  >  JavaのSpringMVCインターセプターの使い方

JavaのSpringMVCインターセプターの使い方

WBOY
WBOY転載
2023-05-13 14:55:061363ブラウズ

インターセプタの役割

Spring MVCのインターセプタはサーブレット開発におけるフィルタに似ており、プロセッサの前処理と後処理に使用されます。インターセプタを一定の順序でチェーン状に接続したものをインターセプタチェーンと呼びます。インターセプトされたメソッドまたはフィールドにアクセスすると、インターセプター チェーン内のインターセプターが、以前に定義された順序で呼び出されます。インターセプターは、AOP のアイデアを具体的に実装したものでもあります。

インターセプターとフィルターの違い

違い フィルター インターセプター
使用範囲 # はサーブレット仕様の一部であり、任意の Java Web プロジェクトで使用できます は SpringMVC フレームワーク独自のものであり、SpringMVC が使用されている場合のみです フレームワーク プロジェクトのみが使用できます
インターセプト範囲 URL パターンで /* を構成した後、 アクセスされるすべてのリソースをインターセプトできます /** を構成した後 では、すべてのリソースをインターセプトすることもできますが、 タグを渡すことでリソースを除外できます。 intercepted

インターセプターのクイック スタート

カスタマイズされたインターセプトの手順:

① 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

コンソールでの結果の印刷

JavaのSpringMVCインターセプターの使い方

複数のインターセプター操作

手順は次と同じです。上記のように、MyHandlerInterceptor2 オペレーションを記述する前に、実行シーケンスをテストするだけです。

インターセプター メソッドの説明

##メソッド名説明preHandle()メソッドはリクエスト処理の前に呼び出されます。このメソッドの戻り値はブール型です。false が返された場合は、リクエストが終了したことを意味します。後続のインターセプタとコントローラは再度実行されません。戻り値が When値が true の場合、次のインターセプターの preHandle メソッドが引き続き呼び出されます。postHandle()このメソッドは、現在のリクエストが処理された後に呼び出されます。ただし、preHandle メソッドの戻り値は true の場合にのみ呼び出すことができ、DispatcherServlet がレンダリング用のビューを返す前に呼び出されるため、このメソッドでコントローラーが処理された後に ModelAndView オブジェクトを操作できます。 afterCompletion()
このメソッドは、リクエスト全体が完了した後、つまり、DispatcherServlet が対応するビューをレンダリングした後に実行されます。メソッドは呼び出される前に true になります。

以上がJavaのSpringMVCインターセプターの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。