javax.servlet.http
インタフェース HttpSession


public interface HttpSession

ユーザがWebサイト内の複数のページを訪れる際にユーザを識別したりユーザに関する情報を保存するための方法を提供します。

ServletコンテナはHTTPクライアントとHTTPサーバの間にセッションを生成するためにこのインタフェースを使用します。 セッションはユーザからの複数回の接続すなわちページリクエストに跨って、 指定された期間持続します。 通常1セッションはサイトをよく訪れる1ユーザに対応します。 サーバはCookieを利用したりURLを書き直したりといった様々な方法でセッションを維持します。

Servletはこのインタフェースを用いて次のようなことができます。

アプリケーションがセッションにオブジェクトを結び付けたりセッションからオブジェクトを削除したりする際に、 セッションはそのオブジェクトが HttpSessionBindingListenerを実装しているかどうかを調べます。 実装しているならば、Servletはそのオブジェクトに対してセッションに結び付けられたのかセッションから削除されたのかといった通知を行ないます。 通知は結び付けや削除メソッドが完了した後に送られます。 また、無効化されたり期限の切れたセッションの場合、 通知はセッションが無効になったか期限切れになった後に送られます。

分散Servletコンテナとして設定されているServletコンテナがVM間でセッションを移動させる時には、 HttpSessionActivationListener インタフェースを実装している全てのセッションの属性に対して通知が行なわれます。

Serlvetは例えばCookieが明示的に無効になっている場合などの、 クライアントがセッションに参加しないことを選ぶケースを扱うことができるべきです。 クライアントがセッションに参加するまではisNewtrueを返します。 クライアントがセッションに参加しないことを選んだ場合、 getSessionはリクエスト毎に異なるセッションを返します。 またisNewは常にtrueを返します。

セッション情報は現在のWebアプリケーション(ServletContext) でのみ参照可能です。 従って、あるコンテキストに保存された情報は他のコンテキストからは直接参照することはできません。

バージョン:
$Version$
作成者:
Various
関連項目:
HttpSessionBindingListener, HttpSessionContext

メソッドの概要
 Object getAttribute(String name)
          指定された名前でこのセッションに結びつけられているオブジェクトを返します。
 Enumeration getAttributeNames()
          このセッションに結びつけられている全てのオブジェクトの名前を表す StringオブジェクトのEnumeration オブジェクトを返します。
 long getCreationTime()
          このセッションが生成された時刻を返します。
 String getId()
          このセッションに割り当てられている一意な識別子を表す Stringオブジェクトを返します。
 long getLastAccessedTime()
          このセッションに関連したリクエストをクライアントが送った最後の時刻を返します。
 int getMaxInactiveInterval()
          クライアントがServletコンテナに最後にアクセスしてからこのセッションを保ち続ける最大の秒数を指定します。
 ServletContext getServletContext()
          このセッションが属しているServletContextオブジェクトを返します。
 HttpSessionContext getSessionContext()
          推奨されていません。 バージョン2.1以降、このメソッドは推奨されていません。 また、代替手段もありません。 このメソッドはJava Servlet API の将来のバージョンでは削除されるでしょう。
 Object getValue(String name)
          推奨されていません。 バージョン2.2以降、このメソッドは getAttribute(java.lang.String)に置き換えられています。
 String[] getValueNames()
          推奨されていません。 バージョン2.2以降、このメソッドは getAttributeNames() に置き換えられています。
 void invalidate()
          セッションを無効にし、結びつけられている全てのオブジェクトを解放します。
 boolean isNew()
          クライアントがこのセッションについてまだ知らない場合、 もしくはクライアントがセッションに参加しない場合に trueを返します。
 void putValue(String name, Object value)
          推奨されていません。 バージョン2.2以降、このメソッドは setAttribute(java.lang.String, java.lang.Object)に置き換えられています。
 void removeAttribute(String name)
          指定された名前でセッションに結びつけられているオブジェクトをセッションから削除します。
 void removeValue(String name)
          推奨されていません。 バージョン2.2以降、このメソッドは removeAttribute(java.lang.String)に置き換えられています。
 void setAttribute(String name, Object value)
          指定された名前でこのセッションにオブジェクトを結びつけます。
 void setMaxInactiveInterval(int interval)
          Servletコンテナがクライアントから最後にリクエストを受けてからこのセッションを無効化するまでの最大の秒数を指定します。
 

メソッドの詳細

getCreationTime

public long getCreationTime()
このセッションが生成された時刻を返します。 返される時刻は、1970年1月1日グリニッジ標準時00:00:00.000 からの経過時間をミリ秒で表した数値です。

戻り値:
このセッションが生成された時刻を表す long値。 この値は1970年1月1日グリニッジ標準時00:00:00.000 からの経過時間をミリ秒で表したもの
例外:
IllegalStateException - 無効なセッションについてこのメソッドの呼び出しが行なわれた場合

getId

public String getId()
このセッションに割り当てられている一意な識別子を表す Stringオブジェクトを返します。 識別子は実装依存であり、Servletコンテナによって割り当てられます。

戻り値:
セッションに割り当てられている識別子を表す文字列
例外:
IllegalStateException - 無効なセッションについてこのメソッドの呼び出しが行なわれた場合

getLastAccessedTime

public long getLastAccessedTime()
このセッションに関連したリクエストをクライアントが送った最後の時刻を返します。 この時刻はそのリクエストをコンテナが受け取るまでに記録されます。 返される時刻は、1970年1月1日グリニッジ標準時00:00:00.000 からの経過時間をミリ秒で表した数値です。

セッションに関連づけられている値を取得したり設定したりといったアクションをアプリケーションが受けても、 このアクセス時刻は更新されません。

戻り値:
クライアントがこのセッションに関連したリクエストを送った最終時刻を表すlong値。 返される値は、1970年1月1日グリニッジ標準時00:00:00.000 からの経過時間をミリ秒で表した数値
例外:
IllegalStateException - 無効なセッションについてこのメソッドの呼び出しが行なわれた場合

getServletContext

public ServletContext getServletContext()
このセッションが属しているServletContextオブジェクトを返します。

戻り値:
WebアプリケーションのServletContextオブジェクト
導入されたバージョン:
2.3

setMaxInactiveInterval

public void setMaxInactiveInterval(int interval)
Servletコンテナがクライアントから最後にリクエストを受けてからこのセッションを無効化するまでの最大の秒数を指定します。 負の値を与えるとセッションはタイムアウトしないようになります。

パラメータ:
interval - 秒数を表す整数値

getMaxInactiveInterval

public int getMaxInactiveInterval()
クライアントがServletコンテナに最後にアクセスしてからこのセッションを保ち続ける最大の秒数を指定します。 この最大秒数はsetMaxInactiveInterval メソッドで設定することができます。 この値が負の値である場合、セッションはタイムアウトしません。

戻り値:
クライアントからのリクエストの間に何秒間セッションを持続するかを表す数値
関連項目:
setMaxInactiveInterval(int)

getSessionContext

public HttpSessionContext getSessionContext()
推奨されていません。 バージョン2.1以降、このメソッドは推奨されていません。 また、代替手段もありません。 このメソッドはJava Servlet API の将来のバージョンでは削除されるでしょう。


getAttribute

public Object getAttribute(String name)
指定された名前でこのセッションに結びつけられているオブジェクトを返します。 指定された名前に結びつけられているオブジェクトが存在しない場合は nullを返します。

パラメータ:
name - オブジェクトの名前を表す文字列
戻り値:
指定された名前を持つオブジェクト
例外:
IllegalStateException - 無効なセッションについてこのメソッドの呼び出しが行なわれた場合

getValue

public Object getValue(String name)
推奨されていません。 バージョン2.2以降、このメソッドは getAttribute(java.lang.String)に置き換えられています。

パラメータ:
name - オブジェクトの名前を表す文字列
戻り値:
指定された名前を持つオブジェクト
例外:
IllegalStateException - 無効なセッションについてこのメソッドの呼び出しが行なわれた場合

getAttributeNames

public Enumeration getAttributeNames()
このセッションに結びつけられている全てのオブジェクトの名前を表す StringオブジェクトのEnumeration オブジェクトを返します。

戻り値:
このセッションに結びつけられている全てのオブジェクトの名前を表す Stringオブジェクトの Enumeration
例外:
IllegalStateException - 無効なセッションについてこのメソッドの呼び出しが行なわれた場合

getValueNames

public String[] getValueNames()
推奨されていません。 バージョン2.2以降、このメソッドは getAttributeNames() に置き換えられています。

戻り値:
このセッションに結びつけられている全てのオブジェクトの名前を表す Stringオブジェクトの配列
例外:
IllegalStateException - 無効なセッションについてこのメソッドの呼び出しが行なわれた場合

setAttribute

public void setAttribute(String name,
                         Object value)
指定された名前でこのセッションにオブジェクトを結びつけます。 同じ名前を持つオブジェクトが既にこのセッションに結びつけられている場合、 そのオブジェクトを置き換えます。

セッションに結びつけようとしているオブジェクトが HttpSessionBindingListenerを実装している場合は、 このメソッドが呼び出された後にコンテナは HttpSessionBindingListener.valueBound メソッドを呼び出します。 さらにコンテナはWebアプリケーションが持つ全ての HttpSessionAttributeListenerに通知します。

指定された名前を持つオブジェクトが既にこのセッションに結びつけられている場合、 そのオブジェクトがHttpSessionBindingListener を実装しているならば、 そのオブジェクトに対して HttpSessionBindingListener.valueUnbound メソッドが呼び出されます。

オブジェクトとしてnullが指定された場合は removeAttribute()が呼び出されたのと同じ動作をします。

パラメータ:
name - オブジェクトをセッションに結びつける際の名前。 nullであってはいけません
value - セッションに結びつけるオブジェクト
例外:
IllegalStateException - 無効なセッションについてこのメソッドの呼び出しが行なわれた場合

putValue

public void putValue(String name,
                     Object value)
推奨されていません。 バージョン2.2以降、このメソッドは setAttribute(java.lang.String, java.lang.Object)に置き換えられています。

パラメータ:
name - オブジェクトをセッションに結びつける際の名前。 nullであってはいけません
value - セッションに結びつけるオブジェクト。 nullであってはいけません
例外:
IllegalStateException - 無効なセッションについてこのメソッドの呼び出しが行なわれた場合

removeAttribute

public void removeAttribute(String name)
指定された名前でセッションに結びつけられているオブジェクトをセッションから削除します。 指定された名前で結びつけられているオブジェクトがセッションに存在しない場合は何もしません。

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

パラメータ:
name - セッションから削除するオブジェクトの名前
例外:
IllegalStateException - 無効なセッションについてこのメソッドの呼び出しが行なわれた場合

removeValue

public void removeValue(String name)
推奨されていません。 バージョン2.2以降、このメソッドは removeAttribute(java.lang.String)に置き換えられています。

パラメータ:
name - セッションから削除するオブジェクトの名前
例外:
IllegalStateException - 既に無効なセッションについてこのメソッドの呼び出しが行なわれた場合

invalidate

public void invalidate()
セッションを無効にし、結びつけられている全てのオブジェクトを解放します。

例外:
IllegalStateException - 既に無効なセッションについてこのメソッドの呼び出しが行なわれた場。

isNew

public boolean isNew()
クライアントがこのセッションについてまだ知らない場合、 もしくはクライアントがセッションに参加しない場合に trueを返します。 例えば、サーバがクッキーを用いたセッションだけを利用しており、 クライアントがクッキーを使用しない設定になっている場合は、 リクエスト毎にセッションが生成されます。

戻り値:
サーバがセッションを生成したがクライアントがセッションに参加しない場合、true
例外:
IllegalStateException - 既に無効なセッションについてこのメソッドの呼び出しが行なわれた場合


このドキュメントは、Ja-Jakarta Project により翻訳されました。コメントがある場合は、jajakarta-report@jajakarta.good-day.netまでお願いします。

Copyright © 1999-2002 The Apache Software Foundation. All Rights Reserved.