2007年10月16日火曜日

HttpSession

セッション追跡
HTTP にはセッションはありませんので HTTP だけではセッションを追跡でいない。

セッション追跡のメカニズム

クッキーの使用

URL 書き換え
    クッキーを無効にしているブラウザへの対応。

SSL(Secure Sockets Layer) セッション

Java では javax.servlet.http.HttpSession インターフェースを使ってセッションを構成します。

セッションオブジェクトの取得
    HttpServletRequest#getSession
        現在のセッションを返す。
        現在のセッションがなければ新たに作成する。
    HttpServletRequest#getSession(boolean create)
        現在のセッションを返す。
        現在のセッションがなくて create が true なら新たに作成する。
        false を指定すると新たにセッションを作成しない。

セッションと属性
    セッションにオブジェクトをセット
    HttpSession#setAttribute(String name, Object value)
    セッションからオブジェクトを所得
    HttpSession#getAttribute(String name)
    HttpSession#getAttributeNames() は String オブジェクトの Enumeration を返す

セッションタイムアウト
    HttpSession#setMaxInactiveInterval(int interval)
    タイムアウト値を秒で設定する。
    -(ネガティブ)を設定するとタイムアウトしない。
又は
    web.xml の設定。タイムアウト値を分で設定。
   <session-config>
        <session-timeout>
            20
        </session-timeout>
    </session-config>
-(ネガティブ)または 0 を設定するとタイムアウトしない。

セッションオブジェクトの削除
HttpSession#invalidate メソッドを呼び出します。関連付けられているオブジェクトも削除します。

セッションが作成、破棄されたときに通知を受ける
    javax.servlet.http.HttpSessionListener

HttpSession オブジェクトはスレッドセーフではない。
    HttpSession オブジェクトはスレッドセーフではありません。
    
参照 スレッドの同期化

0 件のコメント: