インターフェース HttpSession
サーブレットコンテナーはこのインターフェースを使用して、HTTP クライアントと HTTP サーバー間のセッションを作成します。セッションは、ユーザーからの複数の接続またはページリクエストにわたって、指定された期間持続します。通常、セッションは 1 人のユーザーに対応し、ユーザーは何度もサイトにアクセスします。サーバーは、Cookie の使用や URL の書き換えなど、さまざまな方法でセッションを維持できます。
このインターフェースにより、サーブレットは
- セッション ID、作成時刻、最終アクセス時刻など、セッションに関する情報を表示および操作する
- オブジェクトをセッションにバインドし、ユーザー情報を複数のユーザー接続で保持できるようにします
アプリケーションがセッションにオブジェクトを保存したり、セッションからオブジェクトを削除すると、セッションはオブジェクトが HttpSessionBindingListener を実装しているかどうかをチェックします。存在する場合、サーブレットはオブジェクトに、セッションにバインドされたか、セッションからアンバインドされたことを通知します。バインディングメソッドが完了すると、通知が送信されます。無効化または期限切れのセッションについては、セッションが無効化または期限切れになった後に通知が送信されます。
コンテナーが分散コンテナー設定で VM 間のセッションを移行すると、HttpSessionActivationListener インターフェースを実装するすべてのセッション属性が通知されます。
サーブレットは、Cookie が意図的にオフにされている場合など、クライアントがセッションへの参加を選択しない場合を処理できる必要があります。クライアントがセッションに参加するまで、isNew は true を返します。クライアントがセッションに参加しないことを選択した場合、getSession はリクエストごとに異なるセッションを返し、isNew は常に true を返します。
セッション情報のスコープは現在の Web アプリケーション(ServletContext)のみであるため、あるコンテキストに保存された情報は別のコンテキストでは直接表示されません。
このオブジェクトは、取得元の HTTP リクエストの範囲内でのみ有効です。そのリクエストの処理がコンテナーに戻ったら、このオブジェクトは使用しないでください。HTTP リクエストの範囲外でセッションにアクセスする必要がある場合は、#getAccessor() を介して行う必要があります。
- 作成者:
- Various
- 関連事項:
ネストされたクラスの要約
ネストされたクラス修飾子と型インターフェース説明static interfaceHTTP リクエストの範囲外でHttpSessionと対話するためのアプリケーションのアクセサー。メソッドのサマリー
修飾子と型メソッド説明default HttpSession.Accessorアプリケーションが HTTP リクエストのスコープ外でこのセッションと対話するためのメカニズムを提供します。getAttribute(StringSE name) このセッションで指定された名前でバインドされたオブジェクトを返します。名前でオブジェクトがバインドされていない場合はnullを返します。このセッションにバインドされたすべてのオブジェクトの名前を含むStringオブジェクトのEnumerationを返します。long1970 年 1 月 1 日 GMT 午前 0 時からミリ秒単位で測定された、このセッションが作成された時刻を返します。getId()このセッションに割り当てられた一意の識別子を含む文字列を返します。longクライアントがこのセッションに関連付けられたリクエストを最後に送信した時刻を、グリニッジ標準時 1970 年 1 月 1 日午前 0 時からのミリ秒数で返し、コンテナーがリクエストを受信した時間でマークします。intサーブレットコンテナーがクライアントアクセス間でこのセッションを開いたままにする最大時間間隔を秒単位で返します。このセッションが属する ServletContext を返します。voidこのセッションを無効にし、それにバインドされているオブジェクトのバインドを解除します。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メソッドで設定できます。ゼロ以下の戻り値は、セッションがタイムアウトしないことを示します。
- 戻り値:
- このセッションがクライアントリクエスト間で開いている秒数を指定する整数
- 関連事項:
getAttribute
このセッションで指定された名前でバインドされたオブジェクトを返します。名前でオブジェクトがバインドされていない場合はnullを返します。- パラメーター:
name- オブジェクトの名前を指定する文字列- 戻り値:
- 指定された名前のオブジェクト
- 例外:
IllegalStateExceptionSE- 無効化されたセッションでこのメソッドが呼び出された場合
getAttributeNames
EnumerationSE<StringSE> getAttributeNames()このセッションにバインドされたすべてのオブジェクトの名前を含むStringオブジェクトのEnumerationを返します。- 戻り値:
- このセッションにバインドされたすべてのオブジェクトの名前を指定する
StringオブジェクトのEnumeration - 例外:
IllegalStateExceptionSE- 無効化されたセッションでこのメソッドが呼び出された場合
setAttribute
指定した名前を使用して、オブジェクトをこのセッションにバインドします。同じ名前のオブジェクトがすでにセッションにバインドされている場合、オブジェクトは置き換えられます。このメソッドの実行後、新しいオブジェクトが
HttpSessionBindingListenerを実装する場合、コンテナーはHttpSessionBindingListener.valueBoundを呼び出します。その後、コンテナーは Web アプリケーションのHttpSessionAttributeListenerを通知します。HttpSessionBindingListenerを実装するこの名前のこのセッションにオブジェクトがすでにバインドされている場合、そのHttpSessionBindingListener.valueUnboundメソッドが呼び出されます。渡された値が null の場合、これは
removeAttribute()を呼び出すのと同じ効果があります。- パラメーター:
name- オブジェクトがバインドされている名前。null にすることはできませんvalue- バインドされるオブジェクト- 例外:
IllegalStateExceptionSE- 無効化されたセッションでこのメソッドが呼び出された場合
removeAttribute
指定された名前でバインドされたオブジェクトをこのセッションから削除します。指定した名前でバインドされたオブジェクトがセッションにない場合、このメソッドは何もしません。このメソッドの実行後、オブジェクトが
HttpSessionBindingListenerを実装している場合、コンテナーはHttpSessionBindingListener.valueUnboundを呼び出します。その後、コンテナーは Web アプリケーションのHttpSessionAttributeListenerを通知します。- パラメーター:
name- このセッションから削除するオブジェクトの名前- 例外:
IllegalStateExceptionSE- 無効化されたセッションでこのメソッドが呼び出された場合
invalidate
void invalidate()このセッションを無効にし、それにバインドされているオブジェクトのバインドを解除します。- 例外:
IllegalStateExceptionSE- このメソッドがすでに無効化されたセッションで呼び出された場合
isNew
boolean isNew()クライアントがセッションについてまだ知らない場合、またはクライアントがセッションに参加しないことを選択した場合、trueを返します。例: サーバーが Cookie ベースのセッションのみを使用し、クライアントが Cookie の使用を無効にした場合、セッションはリクエストごとに新しくなります。- 戻り値:
- サーバーがセッションを作成したが、クライアントがまだ参加していない場合は、
true - 例外:
IllegalStateExceptionSE- このメソッドがすでに無効化されたセッションで呼び出された場合
getAccessor
アプリケーションが HTTP リクエストのスコープ外でこのセッションと対話するためのメカニズムを提供します。- 戻り値:
- コンテナーは、このセッションに対して
HttpSession.Accessorを提供します。HTTP リクエスト外でアクセスがサポートされていない場合は、nullを提供します。 - 例外:
IllegalStateExceptionSE- 無効化されたセッションでこのメソッドが呼び出された場合