0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JSP/Servlet にリクエスト・レスポンスにヘッダ設定などする前後処理を入れる Filter

Posted at

JSP/Servlet のリクエスト、レスポンスにヘッダ設定など共通的な処理を入れたいときがある
その際に javax.servlet.Filterimplements したクラスを作ることで前後処理をできるのでその簡易的な例です

Filter の実態を作る(これだけでOK)

  • Filterimplements したクラスを作る
  • @WebFilterurlPatterns に前後処理を入れたいパスを設定(/* で全部のパスが対象)
  • doFilter メソッドに前後処理を記載する, chain.doFilter で Servlet や他の Filter を処理する
SampleFilter
package presentation.servlet; //ここは環境に応じたパッケージでOK

import java.io.IOException;

import javax.servlet.Filter;
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;
import javax.servlet.http.HttpServletResponse;

/**
 * {@link SampleFilter}
 */
@WebFilter(urlPatterns = "/*")
public class SampleFilter implements Filter {

  /**
   * {@inheritDoc}
   */
  @Override
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    // 前処理
    System.out.println("before servlet");
    // Servlet, 他のFilter 処理
    chain.doFilter(request, response);
    // 後処理
    System.out.println("after servlet");
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public void init(FilterConfig filterConfig) throws ServletException {
    // フィルタ生成時の共通処理
  }

  /**
   * {@inheritDoc}
   */
  @Override
  public void destroy() {
    // フィルタ破棄時の共通処理
  }
}

ヘッダ設定の例

  @Override
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    ((HttpServletResponse) response).setHeader("Access-Control-Allow-Origin", "https://xxx.yyy.zzz.com");
    chain.doFilter(request, response);
  }

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?