JavaでCookieとSessionを管理する方法を初心者向けにやさしく解説

Java

はじめに

Java で Web アプリケーションを学び始めると、
必ず出てくるのが CookieSession です。

ですが、多くの人がここでつまずきます。

  • Cookie と Session の違いがあいまい
  • ログイン処理がなぜ動くのか分からない
  • なんとなく使っているが説明できない

原因はとてもシンプルで、
Web が本来どんな仕組みで動いているかを理解できていない
からです。

この記事では、
Java(Servlet)で Cookie と Session をどう管理するのか を、
図を思い浮かべながら理解できるように解説します。


Webはなぜ状態を覚えられないのか

まず大前提として、
Web の通信は 状態を持たない 仕組みです。

つまり、

  • リクエスト
  • レスポンス

は、それぞれ 毎回独立 しています。

サーバーは
「この人がさっき誰だったか」
を自動では覚えてくれません。

そこで登場するのが、
Cookie と Session です。


CookieとSessionの役割

Cookie と Session は、どちらも
状態を覚えるための仕組み です。

ただし、役割と保存場所がまったく違います。

ここを理解できると、
Web アプリの仕組みが一気に見えてきます。


Cookieの仕組みをイメージで理解する

Cookie は、
ブラウザ側に保存される小さなデータ です。

流れをイメージすると、こうなります。

サーバー → Cookieを渡す
ブラウザ → Cookieを保存
次のリクエスト → Cookieを自動で送信

つまり Cookie は、
毎回のリクエストにくっついて送られるメモ
のようなものです。


Cookieの特徴

Cookie には、次のような特徴があります。

  • ブラウザに保存される
  • 自動的に送信される
  • ユーザー側で見られる可能性がある

そのため、
重要な情報をそのまま入れるのは危険
です。


Java(Servlet)でCookieを扱う方法

Cookieを作成する

Servlet では、次のように Cookie を作ります。

Cookie cookie = new Cookie("userName", "sample");
response.addCookie(cookie);

これで、
ブラウザに Cookie が保存されます。


Cookieを取得する

リクエストから Cookie を取り出します。

Cookie[] cookies = request.getCookies();

配列として取得し、
名前を見て必要な Cookie を探します。


Cookieを削除する

Cookie を削除したい場合は、
有効期限を短くして上書きします。

ここも初心者が混乱しやすいポイントです。


Sessionの仕組みをイメージで理解する

Session は、
サーバー側に保存されるデータ です。

ただし、
サーバーはユーザーを直接識別できません。

そこで使われるのが Session ID です。


Sessionの流れを図で考える

イメージは次の通りです。

ブラウザ → リクエスト
サーバー → Session ID を発行
ブラウザ → Session ID を Cookie として保存
次回以降 → Session ID を送信

重要なのは、
Session ID だけが Cookie に入る
という点です。


Sessionはどこに保存されるのか

Session の中身は、

  • サーバーのメモリ
  • サーバー側の管理領域

に保存されます。

そのため、
ユーザーから直接見られることはありません

ここが、
Cookie との大きな違いです。


Java(Servlet)でSessionを扱う方法

Sessionを取得する

Servlet では、次のように Session を取得します。

HttpSession session = request.getSession();

Session がなければ作成され、
あれば既存のものが使われます。


値を保存する

Session に値を保存します。

session.setAttribute("loginUser", user);

ログイン情報を保存するのが、
典型的な使い方です。


値を取得する

保存した値は、次のように取得します。

Object user = session.getAttribute("loginUser");

Sessionを破棄する

ログアウト時などは、
Session を破棄します。

session.invalidate();

これで、
サーバー側の情報は消えます。


CookieとSessionの違いまとめ

項目CookieSession
保存場所ブラウザサーバー
安全性低い高い
保存できる量少ない比較的多い
主な用途識別情報ログイン状態

この違いを説明できると、
Web の基礎が分かっている人
として評価されます。


ログイン処理での正しい使い分け

ログイン処理では、
次のような使い分けが基本です。

  • Cookie:Session ID
  • Session:ログインユーザー情報

ユーザー情報そのものを
Cookie に入れてはいけません。

これは、
セキュリティ事故につながります。


初心者がよくハマる勘違い

Cookieに重要情報を入れてしまう

Cookie は、
ユーザー側で見られる可能性があります。

重要情報は
必ず Session に保存
しましょう。


Sessionがいつ切れるか分からない

Session は、
一定時間アクセスがないと無効になります。

「ずっと残るものではない」
という意識が大切です。


ブラウザを閉じたら全て消えると思っている

Cookie や Session の挙動は、
設定によって変わります。

ここを理解していないと、
予期しない動きになります。


Servletを理解していると強い理由

Cookie と Session の仕組みは、
Servlet を理解していると
とても分かりやすくなります。

これは、
Spring などのフレームワークでも
考え方は同じ です。


Javaが業務で強い理由

Java は、

  • 仕組みが明確
  • 長く使われている
  • 運用を前提に作られている

言語です。

Cookie と Session を正しく扱えることは、
業務システムで通用する力
そのものです。


まずは自己学習で土台を固めよう

Java Web の基礎を
体系的に理解したい人は、
まず

絶対にJavaプログラマーになりたい人へ。
👉 https://amzn.asia/d/3E1CYbv

で、考え方を整理するのがおすすめです。


実務や転職を考えているなら

  • Cookie と Session の説明が不安
  • ログイン処理を理解したい
  • Java プログラマーとして成長したい

そんな人には
サイゼントアカデミー がおすすめです。

👉 https://academy.cyzennt.co.jp

仕組みから丁寧にレビューしてもらえます。


まとめ

Cookie と Session は、

  • Web が状態を持たない問題を解決する
  • 役割がまったく違う
  • 正しく使い分けることが重要

というポイントを理解することが大切です。

この基礎が分かると、
Java Web 開発は一気に楽になります。

ぜひ、
仕組みから理解する学習
を続けていきましょう。

コメント

タイトルとURLをコピーしました