プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

JSPフィルターの使い方を徹底解説!IPアドレスとアクセス日時をログ出力する方法

JSPフィルターを使用すると、特定のリソースにアクセスされるたびに共通の処理を実行できます。以下の例では、クライアントが任意のJSPファイルにアクセスするたびに、そのクライアントのIPアドレスと現在の日時を出力する方法を示します。これはJSPフィルターの基本的な仕組みを理解するためのシンプルな例ですが、同じ考え方を応用すれば、より高度で洗練されたフィルターアプリケーションを作成することも可能です。

LogFilterの実装例

// 必要なJavaライブラリをインポート
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

// Filterインターフェースを実装
public class LogFilter implements Filter {
    public void init(FilterConfig config) throws ServletException {
        // 初期化パラメータを取得
        String testParam = config.getInitParameter("test-param");
        // 初期化パラメータを出力
        System.out.println("Test Param: " + testParam);
    }
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
    throws java.io.IOException, ServletException {

        // クライアントマシンのIPアドレスを取得
        String ipAddress = request.getRemoteAddr();
        // IPアドレスと現在のタイムスタンプをログに出力
        System.out.println("IP "+ ipAddress + ", Time "+ new Date().toString());
        // リクエストをフィルターチェーンの後続へ渡す
        chain.doFilter(request,response);
    }
    public void destroy( ) {
        /* WebコンテナがFilterインスタンスを
           サービスから削除する前に呼び出される */
    }
}

上記の LogFilter.java を通常の手順でコンパイルし、生成された LogFilter.class ファイルを <Tomcatインストールディレクトリ>/webapps/ROOT/WEB-INF/classes に配置してください。

web.xmlでのJSPフィルターのマッピング

フィルターは、サーブレットを定義してURLパターンにマッピングする場合とほぼ同じ要領で、web.xml ファイル内で定義したうえで、URLやJSPファイル名にマッピングします。デプロイメントディスクリプター(配備記述子)である web.xml に、以下のfilterタグのエントリを追加しましょう。

<filter>
    <filter-name>LogFilter</filter-name>
    <filter-class>LogFilter</filter-class>
    <init-param>
        <param-name>test-param</param-name>
        <param-value>Initialization Paramter</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>LogFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

この設定ではURLパターンに /* を指定しているため、このフィルターはすべてのサーブレットとJSPに適用されます。もし特定のサーブレットやJSPのみにフィルターを適用したい場合は、対象となるパスを個別に指定すればOKです。

フィルターのライフサイクル

JSPフィルターは、次の3つのメソッドからなるライフサイクルを持ちます。

  • init():フィルターの初期化時に一度だけ呼び出されます。web.xmlで定義した初期化パラメータはここで取得できます。
  • doFilter():マッピングされたURLへのリクエストごとに呼び出されます。前処理や後処理をここに実装し、chain.doFilter() で処理をチェーンの次へ委譲します。
  • destroy():Webコンテナがフィルターをサービスから取り除く前に一度だけ呼び出されます。リソースの解放などの後始末に使用します。

動作確認

設定が完了したら、任意のサーブレットまたはJSPを呼び出してみてください。Webサーバーのログに、アクセス元のIPアドレスと日時の記録が出力されていることが確認できるはずです。さらに Log4Jロガー を利用すれば、これらのログを独立したファイルに出力することもできます。

  1. Excelのテキストフィルターの使い方を5つの具体例で解説

    Excelのフィルター機能は、大規模なワークシートの中から条件に一致する情報だけを素早く効率的に抽出できる強力なツールです。フィルターはワークシート全体だけでなく、特定の1列や複数の列にも適用できます。フィルター適用時にExcelが表示するリストから選択する方法と、目的に合わせて条件をカスタマイズする方法の2通りがあり、テキストフィルターではフィルターメニュー内の検索ボックスやテキスト フィルターオプションを使って文字列を柔軟に検索できます。 Excelテキストフィルターの5つの活用例 ここでは、ある会社が顧客へ販売した製品情報をまとめたExcelワークシートを例に解説します。このワークシート

  2. Windows 10 / 11 でカラーフィルターを使う方法【画面の色味を自由に変更】

    PCの画面の色味に飽きてしまったことはありませんか?ご安心ください。Windowsに標準搭載されている「カラーフィルター」機能を使えば、画面の見た目を一瞬でガラリと変えることができます。 この記事では、PCでカラーフィルターを活用して、Windows体験をより豊かで鮮やかなものにするための手順を、Windows 10とWindows 11それぞれについて詳しく解説します。それでは始めましょう。 Windows 10でカラーフィルターを使用する方法 Windows 10でカラーフィルターを使って画面の配色を変更するには、以下の手順に従ってください。 スタートメニューの検索バーに「設定」と入力し