この記事では Springboot のフィルターとインターセプターの実装方法 (コード) を紹介します。必要な方は参考にしていただければ幸いです。
フィルターとインターセプターはどちらも AOP プログラミングのアイデアを表現したもので、アクセス許可のチェックやログ記録などを実装できます。この 2 つは類似点もありますが、相違点は次のとおりです。
フィルターはサーブレット仕様であり、Web プログラムでのみ使用できますが、インターセプターは Spring 仕様であり、Web プログラムでのみ使用できます。 Web プログラム、アプリケーション プログラムでも使用できます。
フィルターはサーブレットで定義され、サーブレット コンテナーに依存します。インターセプターは Spring で定義され、Spring コンテナーに依存します。
インターセプターは Spring コンポーネントであり、Spring によって管理され、Spring 構成ファイルで構成されているため、任意の Spring リソースを使用できます。たとえば、サービス、データ ソースなどは IOC コンテナを通じてインターセプタに挿入できますが、フィルタはできません。
フィルターはサーブレットの前後でのみ機能しますが、インターセプターはメソッドの前後、例外がスローされる前後に深く掘り下げることができます。より奥行きのあるものを使用してください。
Spring でフィルター Filter を実装する
方法 1: springboot によって提供される FilterRegistrationBean を使用してカスタム フィルターを登録します
public class MyFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("MyFilter init..."); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { //站点图标/favicon.ico filter会执行2次 HttpServletRequest request=(HttpServletRequest) servletRequest; System.out.println(request.getRequestURI()); System.out.println("MyFilter dofilter..."); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }
Springboot にフィルターを登録します
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean registrationBean(){ FilterRegistrationBean myfilter=new FilterRegistrationBean(new MyFilter()); myfilter.addUrlPatterns("/*"); return myfilter; }
ここでデモを実行すると、debug で do filter が 2 回実行されることがわかります。これはブラウジングによるものです。サイト アイコンはサーバーからの要求に応じて管理され、URI を通じて見つけることができます。正規表現を使用して、独自のニーズに応じて適切に制御できます。
方法 2: サーブレット アノテーションの定義フィルター
@Component @WebFilter(filterName = "myFilter2",urlPatterns = "/*") public class MyFilter2 implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { System.out.println("myFilter2 init..."); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("myFilter2 dofilter ..."); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }
サーブレット アノテーションを使用して宣言されたフィルターには、実行中にリクエストが 1 つだけあります。これは、スプリング構成フィルターを使用する場合とは異なります。
Spring でのインターセプターの実装
インターセプターは主にカスタム クラスを使用して HandlerInterceptor を統合します。 preHandle が true を返すとプログラムは実行を継続し、false を返すとリクエストは中断されます。
#
public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("/preHandler"); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception { System.out.println("postHandler"); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception { System.out.println("afterCompletion"); } }プログラム内でインターセプターを構成し、インターセプト ルールを宣言します
@Configuration public class InterceptorConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyInterceptor()).addPathPatterns("/*"); } }操作結果
以上がspringbootでのフィルターとインターセプターの実装方法の紹介(コード)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

Dreamweaver Mac版
ビジュアル Web 開発ツール
