カテゴリ: Jakarta EE 更新日: 2026/02/01

Jakarta サーブレットで学ぶセッション管理とクッキー操作の基礎を徹底解説!Jakarta EE初心者向け入門

Jakarta サーブレットのセッション管理とクッキー操作の基礎
Jakarta サーブレットのセッション管理とクッキー操作の基礎

先生と生徒の会話形式で理解しよう

生徒

「先生、Jakarta サーブレットでユーザーのログイン状態を覚えておく方法ってありますか?」

先生

「もちろんあるよ。Jakarta EEのサーブレットでは、セッション管理やクッキーを使うことでユーザーごとの状態を保持できるんだ。」

生徒

「セッションとクッキーってよく聞くけど、違いが分かりません。」

先生

「それじゃあ、Jakarta サーブレットでのセッション管理とクッキー操作の基本を順番に説明していこう。」

1. Jakarta サーブレットでのセッション管理とは

1. Jakarta サーブレットでのセッション管理とは
1. Jakarta サーブレットでのセッション管理とは

Jakarta EEのWebアプリケーションでは、HTTPが本来ステートレス(状態を持たない)であるため、ユーザーがログインしたかどうかやカートの中身といった情報を保持する仕組みが必要です。その代表的な仕組みがセッション管理です。

Jakarta サーブレットでは、HttpSessionという仕組みを利用してユーザーごとのデータを保存します。セッションはサーバー側に保持され、ユーザーにはセッションIDが割り当てられます。このIDを元にサーバーは同じユーザーを識別することができます。


HttpSession session = request.getSession();
session.setAttribute("userName", "Taro");

このように記述すると、セッションにuserNameという情報が保存され、後から取り出すことができます。

2. セッションの利用例

2. セッションの利用例
2. セッションの利用例

例えばログイン機能を作るとき、ユーザー名や認証状態をセッションに保存すれば、リクエストごとに再度ログインを確認する必要がありません。ログイン後の画面ではセッションに保存したユーザー名を取り出して表示することができます。


String user = (String) session.getAttribute("userName");

こうすることで、ユーザー固有のデータを簡単に管理できます。

3. セッションの有効期限と管理

3. セッションの有効期限と管理
3. セッションの有効期限と管理

Jakarta サーブレットのセッションには有効期限があります。通常は30分ですが、アプリケーションの要件に合わせて変更できます。


session.setMaxInactiveInterval(600); // 600秒 = 10分

これにより、セッションの有効期限を制御できます。また、ログアウト処理ではセッションを無効化するのが一般的です。


session.invalidate();

これでセッションに保存されている情報が削除され、ユーザーはログアウト状態になります。

4. クッキーとは何か

4. クッキーとは何か
4. クッキーとは何か

クッキーは、ユーザーのブラウザに小さなデータを保存する仕組みです。Jakarta サーブレットでは、セッション管理に内部的にクッキーが使われていますが、開発者が直接クッキーを操作することもできます。

クッキーはユーザーの端末に保存され、次回以降のリクエストでも送信されます。そのため、ユーザーの好みや言語設定、ログインの保持などに利用されます。

5. Jakarta サーブレットでのクッキー操作

5. Jakarta サーブレットでのクッキー操作
5. Jakarta サーブレットでのクッキー操作

Jakarta サーブレットでクッキーを利用するにはCookieクラスを使います。例えばユーザー名を保存するクッキーを作成するには次のようにします。


Cookie cookie = new Cookie("userName", "Taro");
cookie.setMaxAge(60 * 60 * 24); // 1日間有効
response.addCookie(cookie);

保存されたクッキーは、次回のリクエストでサーバーに送信されます。サーバー側でクッキーを読み取るときは次のようにします。


Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (Cookie c : cookies) {
        if ("userName".equals(c.getName())) {
            String userName = c.getValue();
        }
    }
}

これで、クライアント側に保存されたデータをサーバーが再利用できます。

6. セッションとクッキーの違い

6. セッションとクッキーの違い
6. セッションとクッキーの違い

セッションとクッキーは似ている部分もありますが、大きな違いがあります。セッションはサーバー側にデータを保持し、クライアントには識別用のIDだけが渡されます。一方、クッキーはデータ自体がユーザーのブラウザに保存され、リクエストごとに送信されます。

そのためセキュリティ上の重要な情報はセッションに保存し、ユーザー設定のように軽量で公開しても問題ない情報はクッキーに保存するといった使い分けが行われます。

7. Jakarta EEアプリケーションでの実践的な活用

7. Jakarta EEアプリケーションでの実践的な活用
7. Jakarta EEアプリケーションでの実践的な活用

Jakarta EEの実際のアプリケーション開発では、セッションとクッキーを組み合わせることで便利な機能を提供できます。例えばショッピングサイトでは、ログイン情報はセッションで管理し、カートの中身や閲覧履歴などはクッキーを利用して保持することが考えられます。

さらに、Jakarta サーブレットを利用することで、セッションやクッキーを効率的に操作し、ユーザー体験を向上させることができます。

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Jakarta サーブレットのセッション管理とは、具体的にどのような仕組みで動いているのでしょうか?初心者にもわかりやすく教えてください。

Jakarta EEのWebアプリケーション開発において、セッション管理は非常に重要な役割を果たします。本来、Web通信に使われるHTTPプロトコルは「ステートレス」と呼ばれ、一度のリクエストとレスポンスが終わると、サーバーはクライアントの状態を忘れてしまう性質を持っています。これではログイン状態の維持やショッピングカートの機能が実現できません。そこで、Jakarta サーブレットでは「HttpSession」というインターフェースを利用して、サーバー側にユーザーごとのデータ保存領域を確保します。ユーザーが最初にアクセスした際、サーバーは固有のセッションIDを発行し、それを目印にすることで、次回のアクセス時にも「同じユーザーからのリクエストである」と識別できる仕組みになっています。
関連記事:
カテゴリの一覧へ
新着記事
New1
Jakarta EE
Jakarta EEとクラウドネイティブ開発の相性とは?初心者向けにわかりやすく解説
New2
Jakarta EE
JakartaEE JSPのリクエスト属性とスコープの基本を徹底解説!初心者向け入門ガイド
New3
Play Framework
Play Frameworkのビューテストを徹底解説!Twirlテンプレートの品質を高める方法
New4
Jakarta EE
JakartaEE フィルタで認証と認可を実装する方法を初心者向けに解説!サーブレットのセキュリティ入門
人気記事
No.1
Java&Spring記事人気No1
Jakarta EE
Jakarta EEとSpringの比較|どちらを選ぶべきか?初心者向けに徹底解説!
No.2
Java&Spring記事人気No2
Play Framework
Play Frameworkのビューを共通化!テンプレート間のインクルード方法を徹底解説
No.3
Java&Spring記事人気No3
Play Framework
Play Frameworkプロジェクト作成直後にやるべき初期設定ガイド!初心者でも安心
No.4
Java&Spring記事人気No4
Play Framework
Play Frameworkで多言語対応(i18n)を徹底解説!Twirlテンプレートでの使い方
No.5
Java&Spring記事人気No5
Play Framework
Play FrameworkでCSSやJavaScriptを読み込む方法を徹底解説!静的リソースの組み込みガイド
No.6
Java&Spring記事人気No6
Jakarta EE
Jakarta サーブレットのHttpServletRequestを徹底解説!初心者でもわかる基本操作と使い方
No.7
Java&Spring記事人気No7
Jakarta EE
Jakarta EEの標準仕様とAPI一覧を完全解説!初心者でもわかるエンタープライズJavaの基本
No.8
Java&Spring記事人気No8
Jakarta EE
Jakarta EEとJava EEアプリの互換性を完全解説!移行で困らないための基礎知識