パッケージ jakarta.servlet.http

インターフェース HttpSession


public interface HttpSession
複数のページリクエストにわたってユーザーを識別したり、Web サイトにアクセスしたり、そのユーザーに関する情報を保存したりする方法を提供します。

サーブレットコンテナーはこのインターフェースを使用して、HTTP クライアントと HTTP サーバー間のセッションを作成します。セッションは、ユーザーからの複数の接続またはページリクエストにわたって、指定された期間持続します。通常、セッションは 1 人のユーザーに対応し、ユーザーは何度もサイトにアクセスします。サーバーは、Cookie の使用や URL の書き換えなど、さまざまな方法でセッションを維持できます。

このインターフェースにより、サーブレットは

  • セッション ID、作成時刻、最終アクセス時刻など、セッションに関する情報を表示および操作する
  • オブジェクトをセッションにバインドし、ユーザー情報を複数のユーザー接続で保持できるようにします

アプリケーションがセッションにオブジェクトを保存したり、セッションからオブジェクトを削除すると、セッションはオブジェクトが HttpSessionBindingListener を実装しているかどうかをチェックします。存在する場合、サーブレットはオブジェクトに、セッションにバインドされたか、セッションからアンバインドされたことを通知します。バインディングメソッドが完了すると、通知が送信されます。無効化または期限切れのセッションについては、セッションが無効化または期限切れになった後に通知が送信されます。

コンテナーが分散コンテナー設定で VM 間のセッションを移行すると、HttpSessionActivationListener インターフェースを実装するすべてのセッション属性が通知されます。

サーブレットは、Cookie が意図的にオフにされている場合など、クライアントがセッションへの参加を選択しない場合を処理できる必要があります。クライアントがセッションに参加するまで、isNew は true を返します。クライアントがセッションに参加しないことを選択した場合、getSession はリクエストごとに異なるセッションを返し、isNew は常に true を返します。

セッション情報のスコープは現在の Web アプリケーション(ServletContext)のみであるため、あるコンテキストに保存された情報は別のコンテキストでは直接表示されません。

このオブジェクトは、取得元の HTTP リクエストの範囲内でのみ有効です。そのリクエストの処理がコンテナーに戻ったら、このオブジェクトは使用しないでください。HTTP リクエストの範囲外でセッションにアクセスする必要がある場合は、#getAccessor() を介して行う必要があります。

作成者:
Various
関連事項:
  • ネストされたクラスのサマリー

    ネストされたクラス
    修飾子と型
    インターフェース
    説明
    static interface
    HTTP リクエストの範囲外で HttpSession と対話するためのアプリケーションのアクセサー。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    アプリケーションが HTTP リクエストのスコープ外でこのセッションと対話するためのメカニズムを提供します。
    このセッションで指定された名前でバインドされたオブジェクトを返します。名前でオブジェクトがバインドされていない場合は null を返します。
    このセッションにバインドされたすべてのオブジェクトの名前を含む String オブジェクトの Enumeration を返します。
    long
    1970 年 1 月 1 日 GMT 午前 0 時からミリ秒単位で測定された、このセッションが作成された時刻を返します。
    このセッションに割り当てられた一意の識別子を含む文字列を返します。
    long
    クライアントがこのセッションに関連付けられたリクエストを最後に送信した時刻を、グリニッジ標準時 1970 年 1 月 1 日午前 0 時からのミリ秒数で返し、コンテナーがリクエストを受信した時間でマークします。
    int
    サーブレットコンテナーがクライアントアクセス間でこのセッションを開いたままにする最大時間間隔を秒単位で返します。
    このセッションが属する ServletContext を返します。
    void
    このセッションを無効にし、それにバインドされているオブジェクトのバインドを解除します。
    boolean
    クライアントがセッションについてまだ知らない場合、またはクライアントがセッションに参加しないことを選択した場合、true を返します。
    void
    指定された名前でバインドされたオブジェクトをこのセッションから削除します。
    void
    指定した名前を使用して、オブジェクトをこのセッションにバインドします。
    void
    サーブレットコンテナーがこのセッションを無効化するまでのクライアントリクエスト間の時間を秒単位で指定します。
  • メソッドの詳細

    • getCreationTime

      long getCreationTime()
      1970 年 1 月 1 日 GMT 午前 0 時からミリ秒単位で測定された、このセッションが作成された時刻を返します。
      戻り値:
      このセッションがいつ作成されたかを指定する long。1/1/1970 GMT 以降のミリ秒で表されます
      例外:
      IllegalStateExceptionSE - 無効化されたセッションでこのメソッドが呼び出された場合
    • getId

      StringSE getId()
      このセッションに割り当てられた一意の識別子を含む文字列を返します。識別子はサーブレットコンテナーによって割り当てられ、実装に依存します。
      戻り値:
      このセッションに割り当てられた識別子を指定する文字列
    • getLastAccessedTime

      long getLastAccessedTime()
      クライアントがこのセッションに関連付けられたリクエストを最後に送信した時刻を、グリニッジ標準時 1970 年 1 月 1 日午前 0 時からのミリ秒数で返し、コンテナーがリクエストを受信した時間でマークします。

      セッションに関連付けられた値の取得や設定など、アプリケーションが実行するアクションは、アクセス時間に影響しません。

      戻り値:
      クライアントがこのセッションに関連付けられたリクエストを最後に送信した時間を表す long。1/1/1970 GMT からのミリ秒単位で表されます
      例外:
      IllegalStateExceptionSE - 無効化されたセッションでこのメソッドが呼び出された場合
    • getServletContext

      ServletContext getServletContext()
      このセッションが属する ServletContext を返します。
      戻り値:
      Web アプリケーションの ServletContext オブジェクト
      導入:
      Servlet 2.3
    • setMaxInactiveInterval

      void setMaxInactiveInterval(int interval)
      サーブレットコンテナーがこのセッションを無効化するまでのクライアントリクエスト間の時間を秒単位で指定します。

      ゼロ以下の interval 値は、セッションがタイムアウトしないことを示します。

      パラメーター:
      interval - 秒数を指定する整数
    • getMaxInactiveInterval

      int getMaxInactiveInterval()
      サーブレットコンテナーがクライアントアクセス間でこのセッションを開いたままにする最大時間間隔を秒単位で返します。この間隔の後、サーブレットコンテナーはセッションを無効にします。最大時間間隔は、setMaxInactiveInterval メソッドで設定できます。

      ゼロ以下の戻り値は、セッションがタイムアウトしないことを示します。

      戻り値:
      このセッションがクライアントリクエスト間で開いている秒数を指定する整数
      関連事項:
    • getAttribute

      ObjectSE getAttribute(StringSE name)
      このセッションで指定された名前でバインドされたオブジェクトを返します。名前でオブジェクトがバインドされていない場合は null を返します。
      パラメーター:
      name - オブジェクトの名前を指定する文字列
      戻り値:
      指定された名前のオブジェクト
      例外:
      IllegalStateExceptionSE - 無効化されたセッションでこのメソッドが呼び出された場合
    • getAttributeNames

      EnumerationSE<StringSE> getAttributeNames()
      このセッションにバインドされたすべてのオブジェクトの名前を含む String オブジェクトの Enumeration を返します。
      戻り値:
      このセッションにバインドされたすべてのオブジェクトの名前を指定する String オブジェクトの Enumeration 
      例外:
      IllegalStateExceptionSE - 無効化されたセッションでこのメソッドが呼び出された場合
    • setAttribute

      void setAttribute(StringSE name, ObjectSE value)
      指定した名前を使用して、オブジェクトをこのセッションにバインドします。同じ名前のオブジェクトがすでにセッションにバインドされている場合、オブジェクトは置き換えられます。

      このメソッドの実行後、新しいオブジェクトが HttpSessionBindingListener を実装する場合、コンテナーは HttpSessionBindingListener.valueBound を呼び出します。その後、コンテナーは Web アプリケーションの HttpSessionAttributeListener を通知します。

      HttpSessionBindingListener を実装するこの名前のこのセッションにオブジェクトがすでにバインドされている場合、その HttpSessionBindingListener.valueUnbound メソッドが呼び出されます。

      渡された値が null の場合、これは removeAttribute() を呼び出すのと同じ効果があります。

      パラメーター:
      name - オブジェクトがバインドされている名前。null にすることはできません
      value - バインドされるオブジェクト
      例外:
      IllegalStateExceptionSE - 無効化されたセッションでこのメソッドが呼び出された場合
    • removeAttribute

      void removeAttribute(StringSE name)
      指定された名前でバインドされたオブジェクトをこのセッションから削除します。指定した名前でバインドされたオブジェクトがセッションにない場合、このメソッドは何もしません。

      このメソッドの実行後、オブジェクトが HttpSessionBindingListener を実装している場合、コンテナーは HttpSessionBindingListener.valueUnbound を呼び出します。その後、コンテナーは Web アプリケーションの HttpSessionAttributeListener を通知します。

      パラメーター:
      name - このセッションから削除するオブジェクトの名前
      例外:
      IllegalStateExceptionSE - 無効化されたセッションでこのメソッドが呼び出された場合
    • invalidate

      void invalidate()
      このセッションを無効にし、それにバインドされているオブジェクトのバインドを解除します。
      例外:
      IllegalStateExceptionSE - このメソッドがすでに無効化されたセッションで呼び出された場合
    • isNew

      boolean isNew()
      クライアントがセッションについてまだ知らない場合、またはクライアントがセッションに参加しないことを選択した場合、true を返します。例: サーバーが Cookie ベースのセッションのみを使用し、クライアントが Cookie の使用を無効にした場合、セッションはリクエストごとに新しくなります。
      戻り値:
      サーバーがセッションを作成したが、クライアントがまだ参加していない場合は、true 
      例外:
      IllegalStateExceptionSE - このメソッドがすでに無効化されたセッションで呼び出された場合
    • getAccessor

      default HttpSession.Accessor getAccessor()
      アプリケーションが HTTP リクエストのスコープ外でこのセッションと対話するためのメカニズムを提供します。
      戻り値:
      コンテナーは、このセッションに対して HttpSession.Accessor を提供します。HTTP リクエスト外でアクセスがサポートされていない場合は、null を提供します。
      例外:
      IllegalStateExceptionSE - 無効化されたセッションでこのメソッドが呼び出された場合