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


public interface HttpSession

複数ページにわたる要求により Web サイトの閲覧を行うユーザを一意に識別し、そのユーザについての情報を格納する方法を提供します。

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

このインタフェースによって、サーブレットは次のことを実行できます。

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

分散コンテナの場合、セッションが VM 間を移動すると、HttpSessionActivationListener インタフェースを実装しているすべてのセッション属性に対して通知が行われます。

サーブレットは、クッキーが意図的にオフにされた場合など、クライアントがセッションへの参加を選択しない場合に対処できるようにする必要があります。クライアントがセッションに参加するまで、isNewtrue を返します。クライアントがセッションに参加しない場合、getSession は各要求に対して別のセッションを返し、isNew は常に true を返します。

セッション情報の有効範囲は現在の Web アプリケーション (ServletContext) のみなので、1 つのコンテキスト内に格納された情報を、別のコンテキスト内で直接見ることはできません。

関連項目:
HttpSessionBindingListener, HttpSessionContext

メソッドの概要
 java.lang.Object getAttribute(java.lang.String name)
          指定された名前でこのセッションにバインドされたオブジェクトを返します。
 java.util.Enumeration getAttributeNames()
          このセッションにバインドされたすべてのオブジェクトの名前が格納された、String オブジェクトの Enumeration を返します。
 long getCreationTime()
          このセッションが作成された時刻を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で返します。
 java.lang.String getId()
          このセッションに割り当てられた一意の識別子が格納された文字列を返します。
 long getLastAccessedTime()
          このセッションに関連付けられた要求をクライアントが最後に送信した時刻を GMT 1970 年 1 月 1 日 0 時からのミリ秒数として返します。
 int getMaxInactiveInterval()
          クライアントのアクセスとアクセスの間に、サーブレットコンテナがこのセッションを保ち続ける最大の時間間隔を秒数で返します。
 ServletContext getServletContext()
          このセッションが属する ServletContext を返します。
 HttpSessionContext getSessionContext()
          推奨されていません。 バージョン 2.1 以降では、このメソッドは推奨されず、代替手段もありません。Java Servlet API の将来のバージョンでは削除されます。
 java.lang.Object getValue(java.lang.String name)
          推奨されていません。 バージョン 2.2 以降では、このメソッドは getAttribute(java.lang.String) に置き換えられています。
 java.lang.String[] getValueNames()
          推奨されていません。 バージョン 2.2 以降では、このメソッドは getAttributeNames() に置き換えられています。
 void invalidate()
          このセッションを無効化し、バインドされていたすべてのオブジェクトをアンバインドします。
 boolean isNew()
          クライアントがこのセッションについてまだ知らない場合、またはクライアントがセッションに参加しないことを選択した場合は、true を返します。
 void putValue(java.lang.String name, java.lang.Object value)
          推奨されていません。 バージョン 2.2 以降では、このメソッドは setAttribute(java.lang.String, java.lang.Object) に置き換えられています。
 void removeAttribute(java.lang.String name)
          指定された名前でバインドされたオブジェクトをこのセッションから削除します。
 void removeValue(java.lang.String name)
          推奨されていません。 バージョン 2.2 以降では、このメソッドは removeAttribute(java.lang.String) に置き換えられています。
 void setAttribute(java.lang.String name, java.lang.Object value)
          指定された名前を使用して、オブジェクトをこのセッションにバインドします。
 void setMaxInactiveInterval(int interval)
          サーブレットコンテナがこのセッションを無効化するまでの、クライアントの要求と要求の間の時間を秒数で指定します。
 

メソッドの詳細

getCreationTime

public long getCreationTime()
このセッションが作成された時刻を、GMT 1970年 1 月 1 日 0 時からのミリ秒単位で返します。
戻り値:
GMT 1970年 1 月 1 日 からのミリ秒単位で表した、このセッションが作成された時刻を示す long
例外:
java.lang.IllegalStateException - 無効化されたセッションでこのメソッドが呼び出された場合

getId

public java.lang.String getId()
このセッションに割り当てられた一意の識別子が格納された文字列を返します。この識別子はサーブレットコンテナによって割り当てられ、実装に依存します。
戻り値:
このセッションに割り当てられた識別子を指定する文字列
例外:
java.lang.IllegalStateException - 無効化されたセッションでこのメソッドが呼び出された場合

getLastAccessedTime

public long getLastAccessedTime()
このセッションに関連付けられた要求をクライアントが最後に送信した時刻を GMT 1970 年 1 月 1 日 0 時からのミリ秒数として返します。返される時刻は実際にはコンテナが要求を受信した時刻を指します。

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

戻り値:
このセッションに関連付けられた要求をクライアントが最後に送信した時刻を GMT 1970 年 1 月 1 日からのミリ秒数で表現した long
例外:
java.lang.IllegalStateException - 無効化されたセッションでこのメソッドが呼び出された場合

getServletContext

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

setMaxInactiveInterval

public void setMaxInactiveInterval(int interval)
サーブレットコンテナがこのセッションを無効化するまでの、クライアントの要求と要求の間の時間を秒数で指定します。負の値を指定すると、セッションがタイムアウトになることはありません。
パラメータ:
interval - 秒数を指定する整数

getMaxInactiveInterval

public int getMaxInactiveInterval()
クライアントのアクセスとアクセスの間に、サーブレットコンテナがこのセッションを保ち続ける最大の時間間隔を秒数で返します。この間隔が経過した後に、サーブレットコンテナはセッションを無効化します。最大の時間間隔は、setMaxInactiveInterval メソッドで設定できます。負の値は、セッションがタイムアウトにならないことを示します。
戻り値:
このセッションが、クライアントの要求と要求との間で保持され続ける秒数を指定する整数
関連項目:
setMaxInactiveInterval(int)

getSessionContext

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


getAttribute

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

getValue

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

パラメータ:
name - オブジェクトの名前を指定する文字列
戻り値:
指定された名前のオブジェクト
例外:
java.lang.IllegalStateException - 無効化されたセッションでこのメソッドが呼び出された場合

getAttributeNames

public java.util.Enumeration getAttributeNames()
このセッションにバインドされたすべてのオブジェクトの名前が格納された、String オブジェクトの Enumeration を返します。
戻り値:
このセッションにバインドされたすべてのオブジェクトの名前が格納された、String オブジェクトの Enumeration
例外:
java.lang.IllegalStateException - 無効化されたセッションでこのメソッドが呼び出された場合

getValueNames

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

戻り値:
このセッションにバインドされたすべてのオブジェクトの名前が格納された、String オブジェクトの配列
例外:
java.lang.IllegalStateException - 無効化されたセッションでこのメソッドが呼び出された場合

setAttribute

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

セッションにバインドされるオブジェクトが HttpSessionBindingListener を実装している場合は、このメソッドが実行された後にコンテナが HttpSessionBindingListener.valueBound を呼び出します。次にコンテナは、Web アプリケーション内のすべての HttpSessionAttributeListener に通知します。

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

渡された値が null の場合の結果は、removeAttribute() を呼び出した場合と同じです。

パラメータ:
name - オブジェクトがバインドされる名前。null であってはならない
value - バインドされるオブジェクト
例外:
java.lang.IllegalStateException - 無効化されたセッションでこのメソッドが呼び出された場合

putValue

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

パラメータ:
name - オブジェクトがバインドされる名前。null であってはならない
value - バインドされるオブジェクト。null であってはならない
例外:
java.lang.IllegalStateException - 無効化されたセッションでこのメソッドが呼び出された場合

removeAttribute

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

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

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

removeValue

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

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

invalidate

public void invalidate()
このセッションを無効化し、バインドされていたすべてのオブジェクトをアンバインドします。
例外:
java.lang.IllegalStateException - すでに無効化されたセッションでこのメソッドが呼び出された場合

isNew

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


Copyright 2002 Sun Microsystems, Inc. All rights reserved.
使用には使用許諾契約が適用されます。