HttpSessionとは?有効期限・getSessionの違い・セッションIDまで解説
2025-07-24 プログラム
まず、HttpSessionとはサーバがJavaサーブレットにおけるユーザーごとに一時的に覚えておくためのインターフェースです。
例えば、ネットショップで「ログインしたまま買い物する」とか「カートに商品を入れておく」とかですね。
今日はそんなHttpSessionについて、記事を書いていきます。
セッションの有効期限
デフォルトは30分(Tomcatなど)です。
<session-config>
<session-timeout>30</session-timeout> <!-- 単位: 分 -->
</session-config>
サーバ側で、上記のようなコードが設定されていて、自分で変更も可能です。
ただし、セッションの時間が長すぎると、その間情報を持ち続けなければならないので、サーバの処理速度や容量にも影響が出ます。
例外もありますが、多くは新しいリクエストがあるたびに有効期限を延長(リフレッシュ)します。
ここで、複雑なのは、新しいリクエストとは、サーバー側のセッションにふれること。
APIやAjax、サーブレット側でrequest.getSession()みたいなコードを実行すればリフレッシュされます。
ただし、htmlやcss、ただの画面遷移だけを行うようなjavaサーブレットではセッションは更新されません。
getSession(true) と getSession(false) の挙動
上でちょっとふれたrequest.getSession()ですが、これには似たようなコードが3種類あります。
メソッド | 意味 |
---|---|
request.getSession(true) | セッションがあれば返す。なければ新しく作る。 |
request.getSession() | request.getSession(true)と同じ |
request.getSession(false) | セッションがあれば返す。なければ null を返す。 |
これらのコードを使うことで、セッションの更新やセッションアウト、再設定を行い、プログラムの幅を持たせてくれます。
session.getId()
セッションには一意の ID(セッションID) が自動で付きます。
これを取得するコードが session.getId() です。
ブラウザのクッキー(JSESSIONID)に保存されて、サーバーは「このIDは誰のセッションか」を見てデータを取り出します。
最後に
HttpSession を正しく理解し、適切に扱うことで、セキュリティと利便性のバランスを取ったシステムを作ることができます。
ぜひ開発に活かしてみてください!