LoginSignup
1
1

More than 3 years have passed since last update.

Filterクラスの作成

Posted at

Filterクラスとは

  • フィルタを設定するとサーブレットのdoPost(),doGet()の前後でFilterクラスに設定した処理を実行することができる
  • 複数のサーブレットで同じ処理をする場合など、共通の処理をまとめることができる
  • 1つのサーブレットに複数のフィルタをかけることも可能
    • ログインフィルタ
    • 権限フィルタ 等

Filterの実装

@WebFilterアノテーションを付与する

WebFilter
@WebFilter("/*") // フィルタを設定するサーブレットのURLパターンを指定

java.servlet.Filter インターフェースを実装する

Filter
import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

// すべてのサーブレットクラスに設定する場合は("/*")
@WebFilter("/*")
public class Filter implements javax.servlet.Filter {
    // デフォルトコンストラクタ
    public Filter() {}

    // インスタンス化された直後に実行される処理
    public void init(FilterConfig fConfig) throws ServletException {}

    // インスタンスが破棄される直前に実行される処理
    public void destroy() {}

    // 設定したサーブレットクラスをリクエストした時に実行される処理
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        // doFilter()の前に書くとサーブレット実行の前処理となる
        request.setCharacterEncoding("UTF-8");
        chain.doFilter(request, response);
        // doFilter()の後に書くとサーブレット実行の後処理となる
        // ~~~~
    }
}

EclipseからFilterクラスを作成する場合

新規→フィルタを選択すると簡単に実装できる

1
1
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
1
1