サーブレットの基礎知識 |
|
セッション管理を実現する方法は幾つかありますが、そのうちの1つはCookieを使用する方法です。このCookieとは何かという点から説明を始めます。
Cookieは、“パラメータ名=値”という形式を持った文字列情報です。クライアント固有の情報をCookieに保管することで、サーバ側は各クライアントに対応した処理を行うことができます。Cookieは、サーバ側(CGIやサーブレット)で作成され、HTTPのヘッダに埋め込まれる形で、クライアントに送信されます。クライアント(ブラウザ)は、受け取ったCookieをメモリまたはハードディスクに保存します。クライアントがサーバにアクセスするときは、自動的に保存していたすべてのCookieがHTTPのヘッダに埋め込まれてサーバに送信されます。
上図は、ログイン処理を行い、商品を購入するようなHTTPのやりとりにおいて、クライアント固有の情報をCookieに保管する場合の例です。まず、クライアントからサーバにログイン要求があり、それに対してサーバから商品リストのHTMLを送信するときに、新たに作成したCookieを付加して送信します。このCookieには、“ClientID=XXXX0001”というようなクライアントを識別するための情報が格納されています。次に、クライアントが購入する商品を決定して、その情報をサーバに送信するときには、先ほどサーバから送信されたCookie(ClientID=XXXX0001)が付加されます。これにより、サーバ側では、特定のクライアント(ClientID=XXXX0001)の人が商品を購入するということが分かります。つまり、クライアント固有の処理が行えるということです。この後、サーバが次の画面をクライアントに送信するときに、新たに作成したCookie(ItemID=YYYY1234)を付加して送信します。その次に、クライアントからサーバにアクセスするときには、2つのCookie(ClientID,
ItemID)が付加されて送信されます。このように、クライアント固有の情報をCookieとして保管することで、セッション管理を実現することができます。
Cookieは便利な仕組みですが、実体はただの文字列情報であり、クライアントからサーバにアクセスするたびに送信されますので、盗聴されやすいという欠点もあります。従って、クライアント固有のあらゆる情報をCookieでクライアントに送信するのはあまり望ましくありません。
これを解決する方法は、「サーブレットにおけるセッション管理の実現」を参照してください。
「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に関する基礎知識を解説する。
|
|