サーブレットの基礎知識

サーブレットにおけるセッション管理の実現

テンアートニ 野宗貴史
2001/2/2

 サーブレット(Servlet)におけるセッション管理を実現するには、HttpSessionを使用します。Cookieを使用してクライアント固有の情報をクライアント側に保持させるのとは違い、HttpSessionはサーバ側にクライアント固有の情報を保持します。HttpSessionの中には、任意のキーワードに結び付けてオブジェクトを格納することができます。例えば、USER_INFOというキーワードに対して、UserInfoクラスのインスタンスを格納し、SHOPPING_CARTというキーワードに対して、ShoppingCartクラスのインスタンスを格納することができます。逆に、USER_INFOというキーワードを指定して、格納されているオブジェクト(UserInfoクラスのインスタンス)を取り出すこともできます。

 上図は、ログイン処理を行い、商品を購入するようなHTTPのやりとりにおいて、クライアント固有の情報をHttpSessionに保管する場合の例です。まず、クライアントからサーバにログイン要求があり、それに対してサーバがHttpSessionを新規に作成します。このとき作成されたHttpSessionには、SessionIDというユニークな文字列ができ、サーバはこのSessionIDをCookieとしてクライアントに送信します。次に、クライアントからサーバにアクセスするときには、先ほどサーバから送信されたCookie(SessionID=ABCXYZ123)が付加されます。これにより、サーバは特定のHttpSession(SessionID=ABCXYZ123)を取り出し、クライアント固有の処理を続けることができます。

 このように、HttpSessionによるセッション管理を利用する利点は、クライアント固有の情報がサーバ側に格納されているため、より安全性が高い点です。また、Cookieが文字列情報しか格納できないのに対して、HttpSessionの場合は任意のオブジェクトが格納できることも利点です。

 

「Java Solution FAQ」



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間