Java Servletフィルタ実装手順
2009/06/25 14:02Update
Java Servletフィルタは、J2EEの標準仕様で、リクエストとレスポンスを横取りして、共通する前処理及び後処理を行うことができます。本文はその実装手順について解説します。
Java Servletフィルタは、J2EE(SERVLET 2.3)標準で定義されています。そのため、TomcatやJBoss、WeblogicなどJ2EE(JavaEE)サーバもデフォルトで「Servletフィルタ」仕様を実装しています。
Servletフィルタについて、次の記事をご参照ください。
コアJ2EEパターン - Intercepting Filterパターン
以下はJava Servletフィルタの実装手順について解説します。
リクエストに対してフィルタを設置したい時、上のFilterから継承したクラスを定義します。
例:
これで、*.jsp のようなページがアクセスされる際に、MyFilterが呼ばされます。
Servletフィルタについて、次の記事をご参照ください。
コアJ2EEパターン - Intercepting Filterパターン
以下はJava Servletフィルタの実装手順について解説します。
1)javax.servlet.Filterインターフェースを実装するクラスを定義します。
public interface Filter
{
/** 初期化時呼び出される */
public abstract void init(FilterConfig filterconfig)
throws ServletException;
/** フィルタ処理(リクエストごとに呼び出される) */
public abstract void doFilter(ServletRequest servletrequest, ServletResponse servletresponse, FilterChain filterchain)
throws IOException, ServletException;
/** フィルタ消滅時呼び出される */
public abstract void destroy();
}
リクエストに対してフィルタを設置したい時、上のFilterから継承したクラスを定義します。
例:
package mypackage;
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.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyFilter implements Filter {
/**
* 後処理
*/
public void destroy() {
}
/**
* Filter実行
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
//ログや認証などの共通処理
//引き続き実装する(他のFilterやServlet)
chain.doFilter(request, response);
}
/**
* 初期処理
*/
public void init(FilterConfig config) throws ServletException {
//...
}
}
2)web.xmlにFilterクラスを登録する
<!-- 抜粋 --> <!-- Filter --> <filter> <filter-name>MyFilter</filter-name> <filter-class>mypackage.ApplicationFilter</filter-class> </filter> ... <!-- filter-mapping --> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
これで、*.jsp のようなページがアクセスされる際に、MyFilterが呼ばされます。
Sponsored Link
Comments
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)