パッケージ 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)のみであるため、あるコンテキストに保存された情報は別のコンテキストでは直接表示されません。

    作成者:
    Various
    関連事項:
    HttpSessionBindingListener
    • メソッドのサマリー

      すべてのメソッド   インスタンスメソッド   抽象メソッド  
      修飾子と型 メソッド 説明
      ObjectSEgetAttribute​(StringSE name)
      このセッションで指定された名前でバインドされたオブジェクトを返します。名前でオブジェクトがバインドされていない場合は null を返します。
      EnumerationSE<StringSE>getAttributeNames()
      このセッションにバインドされたすべてのオブジェクトの名前を含む String オブジェクトの Enumeration を返します。
      longgetCreationTime()
      1970 年 1 月 1 日 GMT 午前 0 時からミリ秒単位で測定された、このセッションが作成された時刻を返します。
      StringSEgetId()
      このセッションに割り当てられた一意の識別子を含む文字列を返します。
      longgetLastAccessedTime()
      クライアントがこのセッションに関連付けられたリクエストを最後に送信した時刻を、グリニッジ標準時 1970 年 1 月 1 日午前 0 時からのミリ秒数で返し、コンテナーがリクエストを受信した時間でマークします。
      intgetMaxInactiveInterval()
      サーブレットコンテナーがクライアントアクセス間でこのセッションを開いたままにする最大時間間隔を秒単位で返します。
      ServletContextgetServletContext()
      このセッションが属する ServletContext を返します。
      voidinvalidate()
      このセッションを無効にし、それにバインドされているオブジェクトのバインドを解除します。
      booleanisNew()
      クライアントがセッションについてまだ知らない場合、またはクライアントがセッションに参加しないことを選択した場合、true を返します。
      voidremoveAttribute​(StringSE name)
      指定された名前でバインドされたオブジェクトをこのセッションから削除します。
      voidsetAttribute​(StringSE name, ObjectSE value)
      指定した名前を使用して、オブジェクトをこのセッションにバインドします。
      voidsetMaxInactiveInterval​(int interval)
      サーブレットコンテナーがこのセッションを無効化するまでのクライアントリクエスト間の時間を秒単位で指定します。
    • メソッドの詳細

      • 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 メソッドで設定できます。

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

        戻り値:
        このセッションがクライアントリクエスト間で開いている秒数を指定する整数
        関連事項:
        setMaxInactiveInterval(int)
      • 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 - このメソッドがすでに無効化されたセッションで呼び出された場合