Java ServletによるHTTPセッション

HTTPセッション

  • セッションとは、画面遷移間で一連の処理であることを識別する仕組みのこと
  • HTTPの仕様にはセッションがないため、クライアント/サーバ間で取り決めたセッションIDをやりとりすることによりセッションを実現する
    • 一連の処理の開始時(例えばログイン時)に、サーバー側でセッションIDを割り振り、クライアントへ渡す。(“セッションIDに付随する情報”は、サーバー側で保持する)
    • クライアントがサーバーへ要求を送るときには、割り振られたセッションIDも一緒に送る。これにより、サーバー側では同一セッションであることを認識できる。(サーバー側で保持した“セッションIDに付随する情報”が継続して使える)
    • サーバー側としては、異なるセッションIDが来たら、別セッションと認識する。

Java ServletによるHTTPセッションの実現

  • HttpServletRequest#getSession() で HttpSession インスタンスを得ることができる。
  • HttpSession#setAttribute(String name, Object value) で指定された名前でこのセッションにオブジェクトを結びつける。
  • HttpSession#getAttribute(String name) で指定された名前でこのセッションに結びつけられているオブジェクトを取得できる。
  • HttpSession#invalidate() を呼ぶとセッションを無効にし、結びつけられている全てのオブジェクトを解放する

f:id:yamataka548:20140624123334p:plain