サーブレットの基礎知識 |
|
セッション管理はなぜ必要なのでしょうか? 結論から先にいうと、HTTPプロトコルがステートレスだから、というのが答えになります。このHTTPプロトコルがステートレスであるという意味から説明します。
![]() |
上図は、クライアント(Webブラウザ)が<img>タグの含まれているHTMLファイルを要求し、サーバがHTMLファイルとGIFファイルを返す場合のHTTPのやりとりの例です。まず、クライアントからHTMLファイルの要求があり、それに対してサーバからHTMLファイルが送信されます。次に、クライアントは送られてきたHTMLファイルを調べ、<img>タグを見つけると、今度はGIFファイルの要求を行い、それに対してサーバからGIFファイルが送信されます。
HTTPプロトコルは1つの要求の送信とそれに対する1つの結果の受信で1セットですので、結果の受信が終了した時点で、その接続は切断されてしまいます。そのため、HTMLファイルとGIFファイルの2つを取得するためには、2回要求を行う必要があります。また、1回目の要求と2回目の要求はそれぞれ別の接続となりますので、2つの要求の間に継続性がありません。そのため、サーバ側では1回目と2回目の要求が同じクライアントから行われたのかどうかが分かりません。これが、HTTPプロトコルが状態を保持できない、すなわちステートレスであるということです。
HTMLファイルやGIFファイルなどの静的ファイルを扱う場合には状態の保持は必要ありませんが、サーブレット(Servlet)のように動的に処理するような場合には、状態の保持が必要になります。例えば、最初の画面でログインして、次の画面から買い物を行い、最後にログアウトをする場合、ログインしてからログアウトするまでを同一セッションとして扱う必要があります。同一セッションとして扱うとは、だれがログインしたのか、だれが買い物をしているのかというようにクライアントを識別し、各クライアントの状態に応じた画面を出力することです。HTTPがステートレスなため、このようなセッション管理を行う必要があります。
![]() |
「Java Solution FAQ」 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
![]() |
||
|
||
![]() |
Java Agile 記事ランキング
- AIにJavaと開発環境について聞いてみた――AIコーディング時代に必要なプログラミング脳を強化しよう
- “Hello World”が3行で収まる、Oracleが「Java 24」を提供開始
- 「GitHub Copilot for Eclipse」(パブリックプレビュー)リリース、GitHub CopilotでEclipseの開発体験はどう変わる?
- Spring BootとSpring MVCの違い 両者の特徴と使い分けのポイントとは
- COBOL/メインフレームのJava/マイクロサービス化サービスをデロイト トーマツが発表 どう実現しているのか
- PlayStation Network開発チームは「増え続けるスクラムチームの管理問題」をどう解決したのか
- 「Spring」「Spring Boot」「Spring Framework」、それぞれの特徴とは
- Spring BootアプリをAWSにデプロイするには?
- Springにおける「RestController」と「Controller」の違いとは
- 今こそ「Java」を学びたくなる10個の理由