LoginSignup
2
2

More than 3 years have passed since last update.

Filter Spring boot 共通処理

Last updated at Posted at 2021-03-07

〜フィルタを使った実装の復習、学習記録用です。〜

Filterとは

・フィルタは各コントローラーの前に共通して行いたい処理をまとめたクラス
・Spring Bootでは、web.xmlのような設定ファイルは不要で、コントローラやフィルタなどのクラスを実装し、アノテーションやBean定義を行なうだけで、容易にSpring Bootに追加したい機能(今回はフィルタ)を認識させることができます。
・クライアントからのリクエストおよびレスポンスに対して、リソース(サーブレット/JSP/HTMLなど)での処理の前および後に何らかの処理を行うオブジェクトの事です。

Filterの実装

filter.java
package com.hoge.app.filter

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

import org.springframework.stereotype.Component;

@Component //コンポーネントアノテーションをつける
public class hogeFilter implements Filter {
  @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("Filterが実行されました");
        chain.doFilter(request, response);
    }

    @Override
    public void destroy() {

    }
}

@Componentアノテーション

Filterインターフェース
フィルターは、doFilter メソッドでフィルタリングを実行します。

・doFilterメソッド
Filterからオーバーライドされたメソッド
フィルタの対象となるリソースが呼び出されたときに実行されます。「FilterChain」は次のフィルタやリクエストの対象であるJSPページやサーブレットの処理を実行するのに使用されます。

・FilterChainインターフェース
どのサーブレットを呼び出そうとした時にこのフィルタが呼ばれ、このフィルタの次に呼び出すべきサーブレットは何かということを管理しています。フィルタの次に別のフィルタがさらに呼び出される場合もありますし、本来の目的のサーブレットが呼び出される場合もありますが、フィルタではあまり意識することなく、FilterChainインターフェースで定義されている"doFilter"メソッドを呼び出すだけで次のサーブレットへ処理を移してくれます。
フィルタ内の処理が終わった段階で"doFilter"メソッドを呼び出すことでフィルタとしての処理を終了します。
※FilterインターフェースとFilterChainインターフェースで同じ名前で定義されている"doFilter"メソッドをそれぞれ使うので注意

参考記事

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2