〜フィルタを使った実装の復習、学習記録用です。〜
###Filterとは
・フィルタは各コントローラーの前に共通して行いたい処理をまとめたクラス
・Spring Bootでは、web.xmlのような設定ファイルは不要で、コントローラやフィルタなどのクラスを実装し、アノテーションやBean定義を行なうだけで、容易にSpring Bootに追加したい機能(今回はフィルタ)を認識させることができます。
・クライアントからのリクエストおよびレスポンスに対して、リソース(サーブレット/JSP/HTMLなど)での処理の前および後に何らかの処理を行うオブジェクトの事です。
###Filterの実装
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アノテーション]
(https://qiita.com/RitaChan/items/d3504332664379ec5450)
Filterインターフェース
フィルターは、doFilter メソッドでフィルタリングを実行します。
・doFilterメソッド
Filterからオーバーライドされたメソッド
フィルタの対象となるリソースが呼び出されたときに実行されます。「FilterChain」は次のフィルタやリクエストの対象であるJSPページやサーブレットの処理を実行するのに使用されます。
・FilterChainインターフェース
どのサーブレットを呼び出そうとした時にこのフィルタが呼ばれ、このフィルタの次に呼び出すべきサーブレットは何かということを管理しています。フィルタの次に別のフィルタがさらに呼び出される場合もありますし、本来の目的のサーブレットが呼び出される場合もありますが、フィルタではあまり意識することなく、FilterChainインターフェースで定義されている"doFilter"メソッドを呼び出すだけで次のサーブレットへ処理を移してくれます。
フィルタ内の処理が終わった段階で"doFilter"メソッドを呼び出すことでフィルタとしての処理を終了します。
※FilterインターフェースとFilterChainインターフェースで同じ名前で定義されている"doFilter"メソッドをそれぞれ使うので注意
#####参考記事
https://qiita.com/NagaokaKenichi/items/630ce51bbe2b15589dd2