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

JSPでのセッション管理の実装例:HttpSessionによるセッション情報の取得と表示方法

この記事では、JSPでHttpSessionオブジェクトを使用して、セッションの作成時刻や最終アクセス時刻などの情報を取得し、画面に表示する実践的な例を紹介します。リクエスト時にまだセッションが存在しない場合は、自動的に新しいセッションが関連付けられます。

サンプルコードの概要

以下のコードでは、主に次のような処理を行っています。

  • session.getCreationTime():セッションが作成された日時を取得
  • session.getLastAccessedTime():このページへの最終アクセス日時を取得
  • session.isNew():初回アクセスかどうかを判定し、新規ユーザーにはユーザーIDと訪問回数をセッションに保存
  • session.getAttribute() / setAttribute():訪問回数(visitCount)をカウントアップして更新

JSPコード例

以下のコードを main.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>

実行方法と結果の確認

上記のコードを 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 IDABCD
Number of visits(訪問回数)0

ポイント解説

この例のように、isNew() メソッドを使えば初回訪問者と再訪問者を区別でき、タイトル表示を切り替えることができます。また、ページをリロードするたびに訪問回数(Number of visits)が1ずつ増えていくことを確認できるでしょう。これは、セッションオブジェクトが同一ブラウザの複数リクエスト間で状態を保持しているためです。

この仕組みは、ログイン状態の維持、ショッピングカートの管理、ユーザーの行動履歴の追跡など、Webアプリケーションにおけるセッショントラッキングの基礎となる重要なテクニックです。

  1. Discordで画面共有時の音声が鳴らない問題を解決する10の対処法

    ゲームコミュニケーションの世界において、Discordは独自の地位を確立しています。無数のサーバーと高度に進化したチャットボットを備えたこのアプリは、競合他社を寄せ付けずに成長を続けています。数え切れないほどの称賛を受けるDiscordですが、他のあらゆるインターネットサービスと同様に、完璧ではありません。その中でも頻繁に報告されるのが、画面共有を試みた際に音声が機能しなくなるというエラーです。もしあなたが同じ問題に直面しているなら、この記事でPC上での「Discord画面共有の音声が動作しない」エラーの解決方法をご紹介します。 Discord画面共有の音声問題を解決する10の方法 なぜ画面共

  2. Windows 10でDiscordの画面共有ができない・真っ黒になる問題を解決する15の対処法

    Discordの画面共有機能は、ゲームを実況配信したり、友人と一緒に映画を楽しんだりできる便利な機能です。しかし、画面共有をしようとした際に画面が真っ黒になる、あるいは読み込みが永遠に終わらないといったトラブルに直面することがあります。 本記事では、Windows 10環境で発生する「Discordの画面共有が機能しない」「画面共有中に黒い画面が表示される」問題の原因と、具体的な解決策を順番に解説していきます。ぜひ最後までご覧ください。 Discordの画面共有が動作しなくなる主な原因 トラブルシューティングを行う前に、まず問題の原因となりやすい要素を把握しておきましょう。以下のような原因