Servlet(サーブレット)リファレンス(逆引き)

Servlet(サーブレット)リファレンス
 
Web struts.wasureppoi.com
フィルタークラス:javax.servlet.Filter
スポンサード リンク

フィルタークラスの作成するには、インタフェース「javax.servlet.Filter」を実装します。

フィルタークラスは、クライアントからリクエストを受け取ったら、サーブレットやJSPが起動する前に実行します。
その為、サーブレット実行前に環境設定、ログ収集、データ変換などの処理が実装されます。

フィルタークラスが実行されると、init()→doFilter()→destory()の順番でメソッドが実行されます。

javax.servlet.Filterクラスのメソッド
構文
 public void init( javax.servlet.FilterConfig フィルター設定 )
説明
initメソッドは、フィルタークラスの最初に実行され、初期化処理などを実装します。

構文
 public void doFilter( javax.servlet.ServletRequest リクエスト,
              javax.servlet.ServletResponse レスポンス,
              javax.servlet.FilterChain ) throws IOException, ServletException
説明
doFilterメソッドは、フィルタークラスのメイン処理を実行します。
処理の最後に、明示的にFilterChain#doFilter()を実行することで、次のフィルタークラスが実行されます。
次のフィルタークラスが無い場合は、サーブレットやJSPが実行されます。

構文
 public void destory( )
説明
destoryメソッドは、フィルタークラスの最後に実行され、終了処理などを実装します。

  
例1) フィルタークラスで、web.xmlに定義してある文字コードをセットする。

package smp;

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;

public class SetCharacterEncodingFilter implements Filter {
  protected String encoding = null;
  protected FilterConfig filterConfig = null;

  public void destroy() {
    this.encoding = null;
    this.filterConfig = null;
  }

  public void doFilter( ServletRequest request, ServletResponse response,FilterChain chain )
                 throws IOException, ServletException {
    if ( this.encoding != null ) {
      // 文字コードの設定
      request.setCharacterEncoding( encoding );
    }
    // 次のフィルターを実行する
    chain.doFilter( request, response );
  }

  public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
    // web.xmlから文字コードを取得
    this.encoding = filterConfig.getInitParameter("encoding");
  }

}


web.xml定義の抜粋

<filter>
   <filter-name>Set Character Encoding</filter-name>
   <filter-class>smp.SetCharacterEncodingFilter</filter-class>
   <init-param>
     <param-name>encoding</param-name>
     <param-value>EUC_JP</param-value>
   </init-param>
</filter>

<filter-mapping>
   <filter-name>Set Character Encoding</filter-name>
   <url-pattern>/*</url-pattern> <!-- 全てのリクエストでフィルターを起動する -->
</filter-mapping>



スポンサード リンク


フィルタークラス:javax.servlet.Filter
フィルターチェインの呼び出し:FilterChain#doFilter()
ServletContextを取得する:FilterConfig#getServletContext()
フィルター名を取得する:FilterConfig#getFilterName()
初期化パラメータを取得する:FilterConfig#getInitParameter()
初期化パラメータを全て取得する:FilterConfig#getInitParameterNames()

Servlet2へ
忘れっぽいエンジニアのJakarta Strutsリファレンス TOPへ