春ブーツHandlerInterceptorAdapter + WebMvcConfigurerAdapterの傍受を使用して

  最近、検査システムをやって、マイクロチャネルの小さなプログラムページは、バックエンドのためのデータは、インターセプタの使用上の自然な色調あるフロントエンド、バックエンドのインタフェースが行うようにしています。時間に追わビットが、これは構造、後で補足を書くことがちょうど約あります。

1.HandlerInterceptorAdapter

preHandleサービスプロセッサ処理サービスは、前処理の前に呼び出されます。
業務処理後postHandle呼び出し、後処理、
afterCompletion要求のDispatcherServletコールを処理する完全に終了された後、リソースをクリーンアップするために使用することができます。EXに従って判定した場合に異常が発生したか否かがヌルであってもよいです。
輸入org.springframework.web.servlet.ModelAndView。
輸入org.springframework.web.servlet.handler.HandlerInterceptorAdapter。
インポートのjavax.servlet.http.HttpServletRequest;
インポートのjavax.servlet.http.HttpServletResponse; 


/ ** 
 * @authorのスワン
  * / 
パブリック クラス LoginInterceptorは延びHandlerInterceptorAdapter { 
    @Override 
        パブリック ブール preHandle(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラ)がスロー例外{ 
            文字列のURL = 。request.getRequestURI()のtoString();
            System.out.println("preHandle:" + URL);
        返す ; 
    } 

    @Override 
    公共 ボイド postHandle(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラのModelAndViewのModelAndView)スロー例外{ 
        文字列のURL = request.getRequestURIを()のtoString()。
        System.out.println( "postHandle:" + URL);
        スーパー.postHandle(要求、応答、ハンドラ、のModelAndView)。
    } 

    @Override 
    公共 ボイド afterCompletion(HttpServletRequestのリクエスト、HttpServletResponseの応答、オブジェクト・ハンドラは、例外EX)がスロー例外{ 
        するSystem.out.println( "afterCompletion:" + EX)を、
        スーパー.afterCompletion(要求、応答、ハンドラ、EX); 
    } 
}

 

2.WebMvcConfigurerAdapterインターセプタを追加

  addInterceptorsは、必要なインターセプタインスタンスHandlerInterceptorインタフェースを実現します

 インターセプタを設定するためのaddPathPatternsパスフィルタルール

 excludePathPatterns:インターセプトする必要はありませんフィルタリングルールを設定するために使用

輸入org.springframework.context.annotation.Bean。
輸入org.springframework.context.annotation.Configuration。
輸入org.springframework.web.servlet.config.annotation.InterceptorRegistry。
輸入org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter。

/ ** 
 * @authorのスワン
  * / 
@Configuration 
    パブリック クラス InterceptorConfigは拡張WebMvcConfigurerAdapter { 
    @Override 
    公共 のボイドaddInterceptors(InterceptorRegistryレジストリ){ 
        registry.addInterceptor(loginInterceptor())を。addPathPatterns("/login/**").excludePathPatterns("/hello/**" ); 
    } 
    @Bean 
    公共 LoginInterceptor loginInterceptor(){ 戻り 新しいLoginInterceptorを();} 
}

3.テストセットインターセプターパス

輸入org.springframework.web.bind.annotation.GetMapping。
輸入org.springframework.web.bind.annotation.RequestMapping。
輸入org.springframework.web.bind.annotation.RestController。

/ ** 
 * @authorのスワン
  * / 
@RestController 
@RequestMapping( "/ログイン" のパブリック クラスUserControllerで{ 

    @GetMapping( "/テスト" 公共 ボイドテスト(){ 
        System.out.printlnは( "loginTest" ); 
    } 
}

ブラウザのリクエスト:HTTP:// localhostを:8080 /ログイン/テスト

输出:
preHandle: /ログイン/ テスト
loginTest 
postHandle: /ログイン/ テスト
afterCompletion:ヌル

4.テストインターセプト経路が設けられていません

輸入org.springframework.web.bind.annotation.GetMapping。
輸入org.springframework.web.bind.annotation.RequestMapping。
輸入org.springframework.web.bind.annotation.RestController。

/ ** 
 * @authorのスワンの
 *の@date 2019年6月13日
 * / 
@RestController 
@RequestMapping( "/ハロー" パブリック クラスHelloController { 
    @GetMapping( "/テスト" 公共  ボイド  試験(){ 
        System.out.printlnは( "helloTest" )。
    } 
}

ブラウザのリクエスト:HTTP:// localhostを:8080 /こんにちは/テスト

出力:
helloTest

 

ます。https://www.cnblogs.com/suwan1125/p/11016971.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34121304/article/details/93579866