HttpSession#invalidate()
現在のセッションを無効にし、関連づけられているオブジェクトを開放。
HttpSession#removeAttribute(String name)
指定したオブジェクトを開放。
以下はweb.xmlでのHttpSessionに例です。
<session-config> <session-timeout>30</session-timeout> </session-config>
<session-timeout>には(最後のアクセスからの)セッションの有効期限 を分単位で指定します。
HttpServletで利用されるHTTPプロトコルは
ステートレス(状態のない)プロトコルですが、
Webサイトなどでは状態を持ちたい場合があります。
例えば、オンラインショップでのショッピングカートでは、
あるユーザがカートに入れたアイテム情報を保持しておきたいです。
これはHttpSessionによって実現できます。
HttpSessionはクライアントのクッキー(Cookies)情報を利用する ことで実現されています。 リクエストのクッキーを見て、対応するHttpSessionオブジェクトを 取得します。
たまにクッキーが利用できない場合があります。
それは、ブラウザ側で"クッキーをオフにする"設定をしてる場合、
あるいは携帯電話のブラウザなどのクッキーの仕組みがない場合です。
この場合はURLリライティング(Rewritten URLs)
を使うことで、HttpSessionを実現することができます。
出力したいURL、例えば"hoge.html"に対し、
encodeURL("hoge.html")を通すと、URLの後ろにセッションIDのついた
"hoge.html?jsessionid=1234"というURLを作成できます。
サーブレットでは(内部的に)リクエストのセッションIDを見て、対応するHttpSessionオブジェクトを取得します。
ステートを保持する方法としては、その他に、HTMLのHIDDENパラメータ(Hidden Variables) を使う方法などもありますが、 わざわざ使う理由も少ないでしょう。