JSPのpageディレクティブのsession属性を完全解説!初心者でもわかるHttpSessionとの関係と使い方
生徒
「JSPのpageディレクティブにsessionという属性がありますが、これはHttpSessionと関係があるんですか?」
先生
「関係があります。session属性は、そのJSPページでセッション機能を利用するかどうかを指定するための設定です。」
生徒
「何も指定しなかった場合はセッションを使えるんですか?」
先生
「通常は利用できる設定になっています。session属性をfalseにすると、そのJSPでは暗黙オブジェクトのsessionを利用できなくなります。それでは、JSPのpageディレクティブとsession属性の仕組みを順番に見ていきましょう。」
1. JSPのpageディレクティブとsession属性とは何か
JSPは、Javaを利用したWebアプリケーションでHTML画面を作成するために使われる仕組みです。Servletで処理した利用者情報、商品情報、検索結果などをJSPへ渡し、ブラウザへ表示する画面を作成できます。
JSPには、そのページ全体に関係する設定を指定するためのpageディレクティブがあります。pageディレクティブでは、文字コード、Javaクラスの読み込み、エラー処理、セッション利用など、JSPをどのような条件で動かすのかを設定できます。
その中でsession属性は、そのJSPページでセッション機能を利用するかどうかを指定するための属性です。Java ServletではHttpSessionを使って、ログイン中の利用者情報やショッピングカートなどを複数のリクエストにまたがって保持できます。
JSPでもセッション情報を参照することができ、その利用可否に関係するのがpageディレクティブのsession属性です。
<%@ page session="true" %>
<h1>会員ページ</h1>
この例では、そのJSPでセッションを利用する設定を明示しています。JSP初心者は、session属性をHttpSessionを利用するページかどうかを指定する設定だと考えると理解しやすいでしょう。
JSPのpageディレクティブにあるsession属性は、そのJSPでセッションに関係する暗黙オブジェクトを利用できるかどうかを設定するために使われます。
2. session属性のtrueとfalseの違いを理解しよう
pageディレクティブのsession属性には、セッションを利用する設定と利用しない設定があります。基本的にはtrueまたはfalseを指定します。
sessionをtrueにすると、そのJSPでは暗黙オブジェクトとして用意されるsessionを利用できます。ログイン中の利用者名やセッションに保存された商品情報などをJSPから参照できます。
<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
session="true"
%>
<h1>ログイン後のページ</h1>
一方、sessionをfalseにすると、そのJSPでは暗黙オブジェクトとしてのsessionを利用しません。
<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
session="false"
%>
<h1>公開ページ</h1>
<p>このページではセッションを利用しません。</p>
例えば、誰でも閲覧できる単純な案内ページなどでセッション情報をまったく利用しないのであれば、sessionをfalseにすることもできます。
| 設定 | 意味 | 主な考え方 |
|---|---|---|
| sessionがtrue | セッションを利用する | ログイン情報などをJSPで扱うページ |
| sessionがfalse | セッションを利用しない | セッション情報が不要なページ |
3. session属性を省略した場合の初期設定を覚えよう
JSPのpageディレクティブでsession属性を書かなかった場合にどうなるのかも、初心者が疑問に感じやすいポイントです。
通常、session属性を省略した場合はセッションを利用できる設定として扱われます。そのため、多くのJSPではsession属性を毎回明示的に書かなくても、session暗黙オブジェクトを利用できます。
<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
%>
<h1>会員情報</h1>
このようにsession属性が書かれていなくても、通常はセッションを利用できる状態です。そのため、既存のJSPを見たときにsession属性が見当たらないからといって、必ずセッションが利用できないわけではありません。
逆に、セッションを利用したくない場合はsessionをfalseにする必要があります。JSP初心者は、何も書かなければ通常はセッション利用可能、明確に利用しない場合はfalseと覚えると分かりやすいでしょう。
初心者向けの覚え方
session属性を省略した場合は通常セッションを利用できます。セッションが不要なJSPで明示的に利用しない設定にしたい場合はfalseを指定します。
4. JSPのsession暗黙オブジェクトとは何か
JSPには、あらかじめ利用できる便利なオブジェクトがあります。このようなものを暗黙オブジェクトと呼びます。requestやresponseなどと同じように、sessionも代表的なJSPの暗黙オブジェクトです。
session暗黙オブジェクトは、Java Servletで使われるHttpSessionに関係するオブジェクトです。Servlet側でセッションに保存した値をJSP側で取得したい場合などに利用できます。
例えばServletでログイン利用者の名前をセッションへ保存しているとします。
HttpSession session = request.getSession();
session.setAttribute("userName", "山田太郎");
request.getRequestDispatcher("/mypage.jsp")
.forward(request, response);
この処理では、userNameという属性名で利用者名をHttpSessionへ保存しています。JSP側ではセッションから同じ属性名を指定して取得できます。
<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
session="true"
%>
<%
String userName =
(String) session.getAttribute("userName");
%>
<p>ログイン利用者は<%= userName %>さんです。</p>
このように、Servlet側で作成したセッションとJSP側のsession暗黙オブジェクトは関連しています。Java ServletとJSPを別々に考えるのではなく、同じ利用者のセッション情報を共有する仕組みとして理解することが重要です。
5. EL式を使ってセッション属性を表示する方法
現在のJSPでは、JSPの中へJavaコードを直接書くよりも、Servletで処理を行い、JSPではEL式などを使って値を表示する方法が分かりやすい設計になります。
Servlet側でHttpSessionへ属性を保存しておけば、JSPではEL式を使って値を参照できます。これにより、JSPの中へgetAttributeなどのJavaメソッド呼び出しを直接書く量を減らせます。
HttpSession session = request.getSession();
session.setAttribute("userName", "佐藤花子");
request.getRequestDispatcher("/mypage.jsp")
.forward(request, response);
JSPでは、セッションに保存されている属性をEL式から参照できます。
<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
session="true"
%>
<h1>マイページ</h1>
<p>こんにちは、${sessionScope.userName}さん</p>
この例では、sessionScopeを使ってセッションスコープに保存されているuserNameを参照しています。Servlet側で保存した属性名とJSP側で参照する属性名を一致させることがポイントです。
JSP初心者は、まずServletでsetAttributeを使ってセッションへ値を保存し、JSPではEL式を使って表示する流れを練習すると、ServletとJSPの役割分担を理解しやすくなります。
JSPではsession暗黙オブジェクトを直接使う方法だけでなく、EL式からセッションスコープの属性を参照する方法もあります。
6. sessionをfalseにしたJSPで注意すること
pageディレクティブでsessionをfalseにした場合、そのJSPでは暗黙オブジェクトとしてのsessionを利用できなくなります。
そのため、sessionを使ったJavaコードがJSP内に残っている状態でsessionをfalseにすると、JSPの変換やコンパイル時に問題が発生する可能性があります。
<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
session="false"
%>
<h1>お知らせ</h1>
<p>このページではセッションを利用しません。</p>
このような公開ページで、ログイン情報やショッピングカートなどのセッション属性をまったく参照しないのであれば、sessionをfalseにすることができます。
一方、ログイン後のマイページや購入確認画面など、利用者ごとの情報をセッションから取得する必要があるJSPでsessionをfalseにすると、期待している処理ができなくなります。
session属性を設定するときは、単純にtrueとfalseの意味だけを覚えるのではなく、そのJSPが本当にセッション情報を必要としているのかを考えることが重要です。
sessionをfalseにするときの確認ポイント
- そのJSPでsession暗黙オブジェクトを使っていないか
- ログイン利用者の情報を参照していないか
- ショッピングカートをセッションから取得していないか
- セッション属性を表示する必要がないページか
7. request属性とsession属性の違いを理解しよう
Java ServletとJSPを学習すると、request属性とsession属性のどちらを利用すればよいのか迷うことがあります。この二つは、値を利用できる範囲が異なります。
request属性は、基本的に一回のリクエスト処理で利用する情報に向いています。例えば検索結果、入力エラーメッセージ、確認画面へ表示する一時的な情報などです。
一方、session属性は同じ利用者の複数のリクエストにまたがって利用したい情報に向いています。代表的なのがログイン利用者やショッピングカートです。
| 種類 | 主な利用範囲 | 向いている情報 |
|---|---|---|
| request属性 | 一回のリクエスト | 検索結果や画面表示用メッセージ |
| session属性 | 複数のリクエスト | ログイン利用者やショッピングカート |
pageディレクティブのsession属性を理解するときも、この違いを意識すると分かりやすくなります。JSPでセッション情報を必要とする場合はsessionを利用できる状態が必要ですが、一画面だけで使うデータを表示するために必ずセッションが必要というわけではありません。
何でもsessionへ保存すると、必要以上に長くデータを保持することになります。そのため、Servletで値を保存するときは、一回のリクエストだけで必要なのか、複数画面で継続して必要なのかを考えてrequestとsessionを使い分けましょう。
8. ログイン画面やショッピングカートでのsession属性の考え方
JSPのsession属性が特にイメージしやすいのが、ログイン機能やショッピングカートを持つWebアプリケーションです。
ログイン処理では、Servletが利用者を確認したあと、ログイン利用者の情報をHttpSessionへ保存することがあります。その後、商品一覧、マイページ、注文確認画面など複数のJSPで同じ利用者情報を利用できます。
ショッピングカートでも同様です。利用者が商品を追加したあと、別の商品ページへ移動してもカート内容を保持したい場合は、セッションを利用できます。
このようなJSPではセッション情報が必要になるため、sessionを利用できる設定にしておく必要があります。一方、会社概要や利用案内など、利用者ごとの情報が必要ない公開ページではセッションを使わない設計も考えられます。
sessionを利用する場面の考え方
- ログイン後の利用者情報を表示する
- 複数画面でショッピングカートを保持する
- 同じ利用者の状態を複数のリクエストで共有する
- セッションへ保存した属性をJSPで表示する
ただし、セッションは便利だからという理由だけですべてのデータを保存するものではありません。長期間必要のない情報や一回の画面表示だけで使う情報はrequest属性などを利用し、セッションには本当に継続して必要な情報を保存するという考え方が大切です。
9. session属性でエラーになるときの確認ポイント
JSPのpageディレクティブでsession属性を設定したあと、期待したようにセッション情報を取得できない場合は、いくつかのポイントを確認すると原因を見つけやすくなります。
まず確認したいのは、sessionをfalseにしていないかという点です。JSPでsession暗黙オブジェクトを利用したい場合にfalseを指定していると、そのままでは利用できません。
次に、Servlet側で本当にHttpSessionへ必要な値を保存しているかを確認しましょう。例えばloginUserという名前で保存したのであれば、JSP側でも同じ属性名を参照する必要があります。
また、ログアウト処理などですでにセッションが無効化されている場合、それまで保存されていた値をそのまま利用することはできません。HttpSessionの状態とJSPのsession属性を別々に考えず、一連のセッション管理として確認することが重要です。
JSPのsession属性で確認したいポイント
- pageディレクティブのsession設定が適切か
- セッションを利用するJSPでfalseになっていないか
- ServletでHttpSessionへ値を保存しているか
- 保存時と取得時の属性名が一致しているか
- ログアウトなどでセッションが無効になっていないか
- 一時的な値ならrequest属性のほうが適切ではないか
- JSPでJavaコードを直接書きすぎていないか
JSP初心者は、pageディレクティブのsession属性だけを単独で暗記するのではなく、ServletのHttpSession、setAttribute、getAttribute、EL式、request属性との違いまで一緒に理解すると、セッション管理の全体像をつかみやすくなります。
基本的な流れは、ServletでHttpSessionを取得し、必要な情報をセッション属性として保存し、JSPでその情報を利用するというものです。JSPでセッションを利用する場合は、pageディレクティブのsession属性がその利用に関係していることを覚えておきましょう。
また、session属性を省略した場合は通常セッションを利用できるため、既存のJSPにsessionの記述がなくても不思議ではありません。一方、sessionをfalseにしているJSPを見つけた場合は、そのページではセッション情報を利用しない設計になっている可能性があります。
JSPのpageディレクティブにあるsession属性を理解すると、ログイン機能、HttpSession、ショッピングカート、ServletからJSPへのデータ受け渡し、EL式、request属性とsession属性の違いなど、JavaのWebアプリケーションで重要な仕組みがつながって見えるようになります。単純にtrueとfalseを覚えるだけでなく、そのJSPがどの範囲の情報を必要としているのかを考えながら設定することが大切です。
まとめ
JSPのpageディレクティブに用意されているsession属性は、そのJSPページでセッション機能を利用するかどうかを指定するための設定です。Java ServletとJSPを使ったWebアプリケーションでは、ログインした利用者の情報やショッピングカートなど、複数のリクエストや複数の画面にまたがって保持したいデータを扱うことがあります。このような利用者ごとの情報を管理するときに利用されるのがHttpSessionです。
JSPのsession属性を理解するときは、pageディレクティブだけを単独で覚えるのではなく、ServletのHttpSessionと関連付けて考えることが大切です。Servlet側でセッションへ保存した利用者名や会員情報などをJSP側でも利用できるため、ログイン後のマイページ、商品一覧、注文確認画面、ショッピングカートなどを作成するときにセッションの仕組みが役立ちます。
pageディレクティブのsession属性には、基本的にtrueまたはfalseを指定します。trueの場合はJSPでsession暗黙オブジェクトを利用できます。falseの場合は、そのJSPでsession暗黙オブジェクトを利用しない設定になります。単純にtrueが正しくfalseが間違いということではなく、そのJSPでセッション情報が必要かどうかによって使い分けます。
session属性を省略した場合は通常セッションを利用できる
JSP初心者が覚えておきたい重要なポイントの一つが、session属性を省略した場合の動作です。pageディレクティブへsession属性を書かなかった場合でも、通常はセッションを利用できる設定として扱われます。そのため、既存のJSPファイルを確認したときにsession属性が見つからなくても、セッションが利用できないという意味ではありません。
<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
%>
<h1>会員ページ</h1>
<p>ログイン後の情報を表示します。</p>
このようにsession属性を明示していないJSPでも、通常はセッションを利用できます。一方で、そのページではセッションを使わないということを明確にしたい場合にはsessionをfalseにします。
<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
session="false"
%>
<h1>公開ページ</h1>
<p>このページではセッションを利用しません。</p>
会社概要や利用案内のように利用者ごとの情報を必要としないページでは、このような設定を検討できます。ただし、ログイン利用者やショッピングカートなどのセッション情報を利用するJSPでfalseを指定すると、期待した処理ができなくなるため注意が必要です。
JSPのsession暗黙オブジェクトとHttpSessionの関係
JSPには、あらかじめ利用できる暗黙オブジェクトがあります。requestやresponseなどと同じように、sessionも代表的な暗黙オブジェクトです。session暗黙オブジェクトは、Servletで利用するHttpSessionと関係しており、Servlet側で保存したセッション属性をJSP側から参照できます。
例えばログイン処理を担当するServletで利用者名をHttpSessionへ保存した場合、そのあと表示するJSPから同じ利用者名を取得できます。ServletからJSPへ画面が切り替わっても、同じ利用者のセッションとして情報を共有できるところが重要です。
HttpSession session = request.getSession();
session.setAttribute("userName", "山田太郎");
request.getRequestDispatcher("/mypage.jsp")
.forward(request, response);
Servlet側では、まずHttpSessionを取得してからsetAttributeを使い、userNameという属性名で利用者名を保存しています。この属性名は、あとからJSPや別のServletでデータを取り出すための名前になります。
JSP側で古い書き方を利用する場合は、session暗黙オブジェクトから同じ属性名を指定して値を取り出せます。
<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
session="true"
%>
<%
String userName =
(String) session.getAttribute("userName");
%>
<p>ログイン利用者は<%= userName %>さんです。</p>
Servlet側で保存するときの属性名と、JSP側で取得するときの属性名を一致させることが大切です。例えばServletではuserNameという名前で保存しているのに、JSPではuserやnameなど別の属性名を指定すると、期待している値を取得できません。
現在のJSPではEL式を使った表示も理解しておこう
JSPではsession暗黙オブジェクトを使ってJavaのメソッドを直接呼び出す方法もありますが、現在のJSPではEL式を使って値を表示する方法も重要です。Servlet側で処理を担当し、JSPでは画面表示を中心にすることで、JavaコードとHTMLが混ざりすぎることを防ぎやすくなります。
ServletでHttpSessionへ保存した属性は、JSPのEL式からセッションスコープを指定して参照できます。これにより、JSPの中へgetAttributeなどのJavaコードを直接書く量を減らせます。
<%@ page
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
session="true"
%>
<h1>マイページ</h1>
<p>こんにちは、${sessionScope.userName}さん</p>
この場合、sessionScopeはセッションに保存された属性を参照するために使われています。userNameはServlet側でsetAttributeを使って保存した属性名です。Servlet側でデータを準備し、JSP側ではEL式を使って表示するという流れを理解すると、Java ServletとJSPの役割分担が分かりやすくなります。
JSPのsession属性で覚えておきたい基本
- session属性はJSPでセッションを利用するかどうかに関係する
- sessionがtrueならsession暗黙オブジェクトを利用できる
- sessionがfalseならsession暗黙オブジェクトを利用しない
- session属性を省略した場合は通常セッションを利用できる
- ServletのHttpSessionとJSPのsession暗黙オブジェクトは関連している
- セッション属性はEL式から参照することもできる
request属性とsession属性は利用できる範囲が違う
Java ServletとJSPを学ぶと、request属性とsession属性のどちらへデータを保存すればよいのか迷うことがあります。この二つの大きな違いは、保存したデータを利用する範囲です。
request属性は、基本的に一回のリクエスト処理の中で利用するデータに向いています。例えば検索結果、入力内容、入力エラーメッセージ、画面へ一度だけ表示するメッセージなどです。ServletからJSPへフォワードして表示するだけなら、request属性で十分なことがあります。
一方、session属性は複数のリクエストや複数の画面にまたがって継続して利用したい情報に向いています。ログイン利用者の情報やショッピングカートの内容などが代表例です。
| 種類 | 利用する範囲 | 向いている情報 |
|---|---|---|
| request属性 | 一回のリクエスト | 検索結果や入力エラーなど |
| session属性 | 複数のリクエスト | ログイン利用者やショッピングカートなど |
何でもセッションへ保存すれば便利に見えるかもしれませんが、必要以上の情報をセッションへ保存すると、その情報を長く保持することになります。そのため、一回の画面表示だけで必要な値なのか、それとも利用者が別の画面へ移動したあとも必要なのかを考えて保存先を選ぶことが重要です。
ログイン機能ではsession属性の役割をイメージしやすい
JSPのsession属性を理解する代表的な例がログイン機能です。利用者がログインすると、Servlet側で利用者情報を確認し、ログインに成功した利用者の情報をHttpSessionへ保存することがあります。そのあと商品一覧やマイページへ移動しても、同じセッションから利用者情報を取得できます。
例えばログイン後のマイページで利用者名を表示したり、注文確認画面でログイン中の会員情報を利用したりする場合、複数のリクエストにまたがって情報を保持する必要があります。このような場面ではHttpSessionとJSPのsession属性との関係を理解しておくことが重要です。
ショッピングカートも同じ考え方です。利用者が一つの商品をカートへ追加し、そのあと別の商品ページへ移動した場合でも、カートの内容を保持したいことがあります。このような複数画面にまたがる情報はセッションと相性がよく、JSPで内容を表示する場合にはセッション情報を参照できます。
sessionをfalseにするときはページの役割を確認する
sessionをfalseに設定するときは、そのJSPで本当にセッション情報を使っていないかを確認しましょう。例えばsession暗黙オブジェクトから利用者情報を取得する処理が残っている状態でfalseに変更すると、JSPの変換やコンパイル時に問題が発生する可能性があります。
また、ログイン後のページだから必ずJSP内でsession暗黙オブジェクトを直接利用しなければならないという意味でもありません。どのようにServletとJSPを設計しているのかによってデータの渡し方は異なります。重要なのは、そのページでセッション機能が必要なのかを理解したうえで設定することです。
sessionをfalseにする前に確認したいポイント
- JSP内でsession暗黙オブジェクトを利用していないか
- ログイン利用者の情報をセッションから取得していないか
- ショッピングカートをセッションから参照していないか
- 複数の画面で継続して必要な情報がないか
- そのページが本当にセッションを必要としない画面か
セッション情報を取得できないときは順番に確認しよう
JSPで期待していたセッション情報が表示されない場合は、まずpageディレクティブのsession属性を確認します。sessionを利用する必要があるJSPなのにfalseが指定されていないかを確認しましょう。
次にServlet側の処理を確認します。HttpSessionを取得しているか、setAttributeを使って必要な値を保存しているか、保存した属性名が正しいかを確認します。そしてJSP側で参照している属性名がServlet側と一致しているかも重要です。
さらに、ログアウトなどによってセッションがすでに無効になっていないかも確認する必要があります。ログアウト処理でセッションを終了した場合、それまで保存されていた利用者情報を同じように利用することはできません。
JSPのpageディレクティブにあるsession属性だけを見るのではなく、Servletでセッションを作成した場所、属性を保存した場所、JSPで値を表示している場所、セッションを終了している場所という順番で処理を追いかけると、問題の原因を探しやすくなります。
JSP初心者は、session属性、HttpSession、setAttribute、getAttribute、EL式、sessionScope、request属性を別々の用語として暗記するのではなく、一連のデータの流れとして理解するとよいでしょう。Servletで継続して使いたい情報をセッションへ保存し、JSPで必要な情報を表示するという流れを意識すると、それぞれの役割が分かりやすくなります。
pageディレクティブのsession属性を正しく理解すると、ログイン状態の保持、会員情報の表示、ショッピングカート、ServletとJSPのデータ受け渡し、EL式によるセッション属性の参照など、JavaのWebアプリケーションで頻繁に登場する機能への理解がつながります。単にtrueとfalseの意味だけを覚えるのではなく、そのJSPでどの情報をどの範囲まで利用したいのかを考えて設定することが重要です。
生徒
「JSPのpageディレクティブにあるsession属性は、そのページでセッションを利用するかどうかに関係する設定なんですね。」
先生
「その通りです。trueならsession暗黙オブジェクトを利用でき、falseならその暗黙オブジェクトを利用しない設定になります。」
生徒
「session属性を書かなかった場合はどうなるんでしたか?」
先生
「省略した場合は通常セッションを利用できます。そのため、既存のJSPにsession属性が書かれていなくても、セッションを利用している場合があります。」
生徒
「ServletのHttpSessionとJSPのsession暗黙オブジェクトもつながっているんですね。」
先生
「はい。ServletでHttpSessionへ保存した属性を、JSP側から参照できます。ログイン利用者やショッピングカートのような情報を複数の画面で利用するときに役立ちます。」
生徒
「JSPではsessionから直接getAttributeするだけでなく、EL式も使えるんですよね。」
先生
「そうです。sessionScopeを使えば、セッションに保存された属性をEL式から参照できます。現在のJSPでは、Servletで処理を行い、JSPはEL式などを使って表示を担当する形も理解しておきましょう。」
生徒
「request属性とsession属性は、値を使える期間や範囲が違うんですね。」
先生
「その点が重要です。一回のリクエストだけで必要な検索結果やメッセージならrequest属性、複数の画面でも必要なログイン利用者やショッピングカートならsession属性というように使い分けます。」
生徒
「sessionをfalseにすればよいかどうかも、そのJSPがどんな情報を使うページなのかを見て判断するんですね。」
先生
「はい。ログイン情報などが必要なページで安易にfalseへ変更すると、セッション情報を利用できなくなる可能性があります。ページの役割を確認してから設定しましょう。」
生徒
「セッションの値が表示されないときは、session属性だけではなくServlet側のsetAttributeや属性名も確認すればいいんですね。」
先生
「その通りです。Servletでセッションを取得した場所、値を保存した場所、JSPで参照している属性名、セッションが無効になっていないかという順番で確認すると原因を整理しやすくなります。」
生徒
「pageディレクティブのsession属性を学ぶと、HttpSessionやEL式まで一緒に理解できるんですね。」
先生
「そうです。trueとfalseだけを暗記するのではなく、Servletで情報を保存し、JSPで表示し、必要に応じて複数のリクエストで共有するという流れまで理解すると、Javaのセッション管理が分かりやすくなります。」