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

JSPのセッションを使ってWebページへのアクセス時間を追跡する方法

この記事では、JSPのHttpSessionオブジェクトを利用して、セッションの作成時刻最終アクセス時刻を取得し、Webページへのアクセス状況を追跡する方法を解説します。リクエストを受け取った時点でまだセッションが存在しない場合は、自動的に新しいセッションが生成され、そのリクエストに関連付けられます。

サンプルコード

以下は、セッションの作成時刻・最終アクセス時刻・ユーザーID・訪問回数を取得して表示するJSPの完全な例です。

<%@ page import = "java.io.*,java.util.*" %>
<%
    // セッションの作成時刻を取得
    Date createTime = new Date(session.getCreationTime());

    // このWebページへの最終アクセス時刻を取得
    Date lastAccessTime = new Date(session.getLastAccessedTime());

    String title = "Welcome Back to my website";
    Integer visitCount = new Integer(0);
    String visitCountKey = new String("visitCount");
    String userIDKey = new String("userID");
    String userID = new String("ABCD");

    // 新規訪問者かどうかを判定
    if (session.isNew() ) {
        title = "Welcome to my website";
        session.setAttribute(userIDKey, userID);
        session.setAttribute(visitCountKey, visitCount);
    }
    visitCount = (Integer)session.getAttribute(visitCountKey);
    visitCount = visitCount + 1;
    userID = (String)session.getAttribute(userIDKey);
    session.setAttribute(visitCountKey, visitCount);
%>
<html>
    <head>
        <title>Session Tracking</title>
    </head>
    <body>
        <center>
            <h1>Session Tracking</h1>
        </center>
        <table border = "1" align = "center">
            <tr bgcolor = "#949494">
                <th>Session info</th>
                <th>Value</th>
            </tr>
            <tr>
                <td>id</td>
                <td><% out.print( session.getId()); %></td>
            </tr>
            <tr>
                <td>Creation Time</td>
                <td><% out.print(createTime); %></td>
            </tr>
            <tr>
                <td>Time of Last Access</td>
                <td><% out.print(lastAccessTime); %></td>
            </tr>
            <tr>
                <td>User ID</td>
                <td><% out.print(userID); %></td>
            </tr>
            <tr>
                <td>Number of visits</td>
                <td><% out.print(visitCount); %></td>
            </tr>
        </table>
    </body>
</html>

コードのポイント

  • session.getCreationTime() … セッションが作成された時刻をミリ秒で取得します。
  • session.getLastAccessedTime() … クライアントがこのセッションに最後にアクセスした時刻を取得します。
  • session.isNew() … 新しく作成されたセッションかどうかを判定し、初回訪問者にはユーザーIDと訪問回数を登録します。

上記のコードを main.jsp という名前で保存し、ブラウザから https://localhost:8080/main.jsp にアクセスしてください。初回アクセス時には、次のような結果が表示されます。

実行結果(初回アクセス)

Welcome to my website

セッション情報

セッション情報
id0AE3EC93FF44E3C525B4351B77ABB2D5
Creation Time(作成時刻)Tue Jun 08 17:26:40 GMT+04:00 2010
Time of Last Access(最終アクセス時刻)Tue Jun 08 17:26:40 GMT+04:00 2010
User ID(ユーザーID)ABCD
Number of visits(訪問回数)0

続けて、同じJSPにもう一度アクセスしてみてください。今度は「再訪問者」として認識され、次のような結果が表示されます。

実行結果(2回目以降のアクセス)

Welcome Back to my website

セッション情報

情報の種類
id0AE3EC93FF44E3C525B4351B77ABB2D5
Creation Time(作成時刻)Tue Jun 08 17:26:40 GMT+04:00 2010
Time of Last Access(最終アクセス時刻)Tue Jun 08 17:26:40 GMT+04:00 2010
User ID(ユーザーID)ABCD
Number of visits(訪問回数)1

このように、セッションオブジェクトを活用することで、ユーザーがいつサイトを訪れ、何回アクセスしたのかを簡単に追跡できます。セッションIDと作成時刻は変わらず、訪問回数だけが「0」から「1」に増加している点に注目してください。これは、setAttribute()で保存した値が同一セッション内の複数リクエスト間で保持されていることを示しています。アクセスカウンターやログイン状態の管理など、さまざまな用途に応用できる基本的なテクニックです。

  1. JSPでタイムゾーンを使用する方法|JSTL fmt:timeZoneタグの使い方を解説

    JSTL(JSP Standard Tag Library)の<fmt:timeZone>タグは、そのタグ本体(ボディ)内に記述されたすべてのタグに対して、適用するタイムゾーンを指定するために使用します。国際化対応のWebアプリケーションでは、ユーザーの地域ごとに日付や時刻を表示し分ける必要があるため、このタグが非常に役立ちます。 属性 <fmt:timeZone>タグには、以下の属性があります。 属性説明必須デフォルト値valueタグ本体内に適用するタイムゾーンはいなし 使用例 次のサンプルコードでは、java.util.TimeZone.getAvailableID

  2. Pythonでファイルの最終アクセス時間・更新日時を取得する方法

    Pythonでは、標準ライブラリの os.path モジュールを使うことで、ファイルのタイムスタンプ(最終更新日時や最終アクセス時間)を簡単に取得できます。これらの関数はクロスプラットフォームでサポートされているため、Windows、macOS、Linux のどの環境でも同じコードが動作します。 ファイルの最終更新日時を取得する(os.path.getmtime) ファイルの最終更新日時(modification time)を取得するには、os.path.getmtime(path) を使用します。戻り値は、エポック(1970年1月1日 00:00:00 UTC)からの経過秒数を表す浮動小数点