この記事では、スプリングブートでのインターセプターの使用を紹介します。通常、インターセプターのクロスドメイン処理を処理し、プロジェクトへのドメインクロスアクセスを可能にします。インターセプターの使用に関する詳細については、公式Webサイトを参照してください。
カスタムインターセプターを実装する手順:
1.クラスを作成し、HandlerInterceptorインターフェイスを実装します。
2。javaクラスを作成して、webmvcconfigureradapterを継承し、addInterceptorsメソッドをオーバーライドします。
2。スプリング管理にカスタムインターセプターを渡し、インターセプターチェーンにオブジェクトを手動で追加します(AddInterceptorsメソッドに追加)。
インターセプタークラスを作成します
パッケージcom.example.springboot.config.intercepter; import org.springframework.stereotype.component; Import org.servlet.handlerInterceptor; Import org.springframework.web.servlet.modelandview; Import.havax.erervlet.http.httptptptptp.httptptptptptptptp.httptptptp.httptp.http.httptp.http.htptptp.htptptp.http. javax.servlet.http.httpservletResponse;/** * @descカスタムインターセプター、 @componentを使用してspringのライフサイクルを管理できるようにします * @author wangsh * @date wangsh * @date 2018/5/6 17:06 * @return */ @ @ @ @ @componentpublic class testintercepter empter {@overridepreter bofretreverリクエスト、httpservletResponse応答、オブジェクトハンドラー)スロー{System.out.println( ">>> prehandle >>>>>>>>>>>> [コントローラーメソッド呼び出しの前)"); SetCrossDomain(応答); true; // true返品が下向きに実行され続ける場合にのみ、falseを返して現在のリクエストをキャンセルします} @override public void posthandle(httpservletrequestリクエスト、httpservletresponse応答、httpservletresponse応答、httpservletresponse応答、httpservletresponse応答、モデルハンドラー、モデルアンドビューモデルアンドビュー)は例外をスローします{//リクエストは処理された後、レンダリングの後( system.out.println( ">>> posthandle >>>>>>>>>>>>>>> *リクエストが処理された後は呼び出しますが、ビューがレンダリングされる前(コントローラーメソッドが呼び出された後)"); } @Override public void aftercompletion(httpservletrequestリクエスト、httpservletresponse応答、オブジェクトハンドラー、例外ex)スロー例外{//リクエスト全体が終了した後、つまり、対応するビューをレンダリングする(主にリソースクリーニングのために)。 System.out.println( ">>> posthandle >>>>>>>>>>>>>>は、リクエスト全体が終了した後、つまり、DispatcherServletが対応するビューをレンダリングした後(主にリソースクリーニング用)と呼ばれます。 } / *** @param @param応答ファイルの設定ファイル* @return void return type* @throws* @title:setcrossdomain* @description:todo(set cross-domain問題)* / private void setcrossdomain(htttpservletresponse response){response.addher( "アクセスコントロール - アロウ-origin"); Response.Addheader( "Access-Control-Allow-Methods"、 "post、get"); Response.Addheader( "Access-Control-allow-credentials"、 "true"); }}インターセプターチェーンにカスタムインターセプターを追加します
パッケージcom.example.springboot.config.config;インポートcom.example.springboot.config.intercepter.testintercepter; Import org.springframework.beans.factory.annotation.autowired; Import org.springframework.context.annotation.configuration.configuration; Web.servlet.config.annotation.interceptorregistry; Import org.springframework.web.servlet.config.annotation.webmvcconfigureradapter;/** * registerbean */ @configurationpublic computurationpublicorconfig extendess web configurationpublig edsssseds webcconfunfigureradtortor TestInterceptor; @Override public void addInterceptors(interceptorregistry registry){registry.addinterceptor(testinterceptor); }}コントローラークラスを作成します
パッケージcom.example.springboot.config.conroller; Import org.springframework.web.bind.annotation.requestmapping; Import org.springframework.web.bind.annotation.restcontroller;@restcontroller@requestmapping( "/user")public class usercontroller "/"/user "/"/requestmapp hello(){return "hello"; }}スタートアップサービスクラスを作成します
パッケージcom.example.springboot.config; Import org.springframework.boot.springApplication; Import org.springframework.boot.autoconfigure.springbootapplication; @springbootapplicationpublicクラスSpringbootconfigapplication { SpringApplication.run(SpringBootConfigApplication.Class、args); }}サービステストを開始し、http:// localhost:8088/hello browserにアクセスして、次のようにログを印刷すると、インターセプターが通過したことがわかります。
要約します
上記は、エディターが導入したスプリングブート構成インターセプターの使用の詳細な説明です。私はそれが誰にでも役立つことを願っています。ご不明な点がございましたら、メッセージを残してください。編集者は、すべての人に時間内に返信します!