1. ホーム
  2. Web プログラミング
  3. JSP プログラミング

jsp filter フィルタ機能と簡単な使用例

2022-01-16 06:54:27

この記事では、jspのフィルター機能の例と簡単な使用方法を説明します。参考までに、以下のように共有します。

フィルタの役割とは?

フィルタは、リクエストとレスポンスを動的にインターセプトして、リクエストやレスポンスに含まれる情報を変換したり、利用したりすることができます。

また、JavaServer Pages (JSP) ファイルや HTML ページにフィルタを添付することもできます。

  • バックエンドリソースにアクセスする前に、クライアントのリクエストをインターセプトします。
  • サーバーの応答をクライアントに送り返す前に処理する。

フィルタの実装は、java.servlet.Filter インターフェースクラスを実装しています。

簡単なフィルタークラスの例

package demo;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
ServletRequest; import javax.servlet;
public class DemoFilter implements Filter
private
  private String name=null;
  @Override
  public void destroy()
  {
  }
  @Override
  public void doFilter(ServletRequest arg0, ServletResponse arg1,
      FilterChain arg2) throws IOException, ServletException
  {
    arg0.setAttribute("name", "init text string : " + name);
    arg2.doFilter(arg0, arg1);
  }
  @Override
  public void init(FilterConfig arg0) throws ServletException
  {
    //get the configuration in the filter init-param in web.xml
    name = arg0.getInitParameter("name");
  }
}



フィルタークラスを書くだけでは十分ではない。web.xmlの中で、どのリクエストがフィルターの呼び出しを必要とするかを宣言する必要があります。

web.xml

  <! -- Declare a filter-->
  <filter>
  <! --filter's name-->
    <filter-name>demoFilter</filter-name>
  <! --filter class-->
    <filter-class>demo.DemoFilter</filter-class>
  <! -- Configuration required for this filter class -->
    <init-param>
      <param-name>name</param-name>
      <param-value>my name is tanyong</param-value>
    </init-param>
  </filter>

  <! -- for the matching url link in url-pattern Mapping to the corresponding filter filter identified by filter-name -- >
  <filter-mapping>
    <filter-name>demoFilter</filter-name>
    <! -- match mapping rules, I'm using here to go around inside the demoFilter filter for all requests -- >
    <url-pattern>/*</url-pattern>
  </filter-mapping>



この記事が、あなたのjspプログラミングのお役に立てれば幸いです。