セッション管理のクラスとインターフェイスのメソッド一覧

 


 


前述のように、HttpSessionHttpSessionBindingListener及びHttpSessionContext(廃止されている)の3つのインターフェイスとHttpSessionBindingEventのクラスがAPIとして用意されている。これらのメソッドの一覧を示す。この表はサーブレット2.2版のAPIドキュメント(http://java.sun.com/products/servlet/2.2/javadoc/index.html)を翻訳したものであるので、不明な個所は原書を参照されたい。

セッション管理関連メソッド一覧

public interface HttpServletRequest extends ServletRequest

このインターフェイスにこのクライアントへのセッションの取得とその状況を得るメソッドが含まれているので、その部分のみを再掲した。

public HttpSession getSession()

この要求に対応する現在のセッションを返す。この要求がセッションを持たないときは新しいセッションを作る。

public HttpSession getSession(boolean create)

この要求に対応した現在のHttpSessionを返すか、現行のセッションが存在せず、かつcreatetrueのときは、新しいセッションを返す。createfalsで、かつこの要求が有効(varid)HttpSessionを有さないときは、このメソッドはnullを返す。セッションが正しく維持されるためにはこのメソッドを応答がコミットされる前に呼ばねばならない

true – 必要な場合は新規のセッションをこの要求に生成する。

false – 現在セッションが存在していないときはnullを返す。

public boolean isRequestedSessionIdValid()

指定されたセッションIDがまだ有効かを返す。

public boolean isRequestedSessionIdFromCookie()

要求されたセッションIDがクッキーでなされているかどうかを返す。

public boolean isRequestedSessionIdFromURL()

要求されたセッションIDURIでなされているかどうかを返す。

public boolean isRequestedSessionIdFromUrl()

2.1版で使用不可となっており、代わりにisRequestedSessionIdFromURL()を使用のこと。

public interface HttpServletResponse extends ServletResponse

このインターフェイスにこのクライアントへのセッションの取得とその状況を得るメソッドが含まれているので、その部分のみを再掲した。

public java.lang.String encodeURL(java.lang.String url)

指定のURLsession IDを含めた形にエンコードする。もしエンコードの必要がなければ入力したURLがそのまま返される。エンジンはsession ID URLに含めるべきか否かのロジックを持つ。例えば、ブラウザがクッキを受け付けたりセッション管理がオフになったりしていればURLエンコーディングは不必要である。確実なセッション管理を得るためには、このメソッドを通したURLをブラウザに渡すべきである。でないと、クッキーをサポートしないブラウザにURL再書き込みをさせられない。

url: エンコードするURL

Returns: エンコードされたURL,またはそのまま

public java.lang.String encodeRedirectURL(java.lang.String url)

SendRedirectメソッドに使うために指定したURLをエンコードする。 もしエンコードの必要がなければ入力したURLがそのまま返される。エンジンはsession ID URLに含めるべきか否かのロジックを持つ。通常のリンクにエンコードするかいなかの判断が必要なのでencodeURLメソッドとは区別される。HttpServletResponse.sendRedirectメソッドに送る全てのURLはこのメソッドを通すべきである。でないと、クッキーをサポートしないブラウザにURL再書き込みをさせられない。

url: エンコードするURL

Returns: エンコードされたURL,またはそのまま

public interface HttpSession

ひとつ以上のページに亘ってあるウェブサイトに訪問あるいは要求したりしているユーザの識別と、そのユーザに関する情報を蓄積する手段を提供する。サーブレット・コンテナはHTTPクライアントとHTTPサーバ間のセッションを生成するのに本インターフェイスを使う。セッションはそのユーザからの一回以上の接続またはページ要求に亘って一定の時間継続する。セッションは通常はこのサイトに何回も訪問する一人のユーザに対応する。サーバはクッキーやURL再書き込みなどのいろんな手段でセッションを維持する。このインターフェイスは、

-     セッション識別子、生成時刻、最後にアクセスした時刻などのセッションに関する情報の読み出しと変更

-     オブジェクトをセッションにバインドして、そのユーザ情報が複数のユーザ接続においても継続できるようにする

アプリケーションがオブジェクトをあるセッションにストアしたり反対にセッションから削除する際は、そのセッションはそのオブジェクトがHttpSessionBindingListenerをインプリメントしているかどうかをチェックする。もしそうであると、そのサーブレットは該オブジェクトに対しすでにそれがバインドされたとかそのセッションからバイドが外されてしまったとかの通知を行う。

サーブレットはクライアントでクッキーが意図的に使用不可にされているなど、クライアントがセッションに参加しないことを選択している場合に対処できなければならない。そのクライアントがセッションに参加する前はisNew trueを返す。クライアントがセッション不参加の選択をしているときは、getSessionは各要求ごとに異なったセッションを返し、isNewは常にtrueを返す。

セッション情報は現在のウェブ・アプリケーション(ServletContext)の範囲でのみ適用され、ひとつのコンテキストにストオアされている情報は、他のコンテキストからは直接は不可視である。

public long getCreationTime()

 

本セッション生成された時刻をJanuary 1, 1970の真夜中からのミリ秒のlong型で返す。無効(invalid)なセッションでこのメソッドを呼ぶとjava.lang.IllegalStateExceptionがスローされる。

public java.lang.String getId()

本セッションに付与された唯一無二の識別子を含む文字列を返す。識別子はサーブレット・コンテナが付与し、インプリメントに依存する。

public long getLastAccessedTime()

このセッションでクライアントが最後に要求を送信した時刻をJanuary 1, 1970の真夜中からのミリ秒のlong型で返す。本セッションに関わる値の取得や設定などのアプリケーションが行うアクションに対してはこの時間は影響を受けない。

public void setMaxInactiveInterval(int interval)

サーブレット・コンテナがこのセッションを無効としないクライアントの要求間のインターバルをint値の秒で設定する。マイナスの値を設定すると永久にタイムアウトを生じない。

public int getMaxInactiveInterval()

サーブレット・コンテナが本セッションを維持するクライアントのアクセスとアクセスの間の最大時間をint値の秒で返す。このインターバルを超えるとサーブレット・コンテナはこのセッションを無効とする。

public HttpSessionContext getSessionContext()

使用してはいけない。2.1版でこのメソッドは使用禁止とされており代替はない。将来の版ではこのメソッドは削除される。

public java.lang.Object getAttribute(java.lang.String name)

本セッションにバインドされている指定した名前のオブジェクトを返す。その名前のオブジェクトがバインドされていないときはnullを返す。nameはそのオブジェクトの名前を指定する文字列である。このメソッドが無効(invalid)となっているセッションで呼ばれたときはjava.lang.IllegalStateExceptionをスローする。

public java.lang.Object getValue(java.lang.String name)

2.2版でこのメソッドは使用禁止となっており、getAttribute(java.lang.String)で置き換えられている。

public java.util.Enumeration getAttributeNames()

本セッションにバインドされている全てのオブジェクトの名前を含むStringオブジェクトの列挙型を返す。このメソッドが無効(invalid)となっているセッションで呼ばれたときはjava.lang.IllegalStateExceptionをスローする。

public java.lang.String[] getValueNames()

2.2版でこのメソッドは使用禁止となっており、getAttributeNames()で置き換えられている。

public void setAttribute(java.lang.String name, java.lang.Object value)

指定した名前であるオブジェクトを本セッションにバインドする。このセッションに同じ名前のオブジェクトが既にバインドされているときはオブジェクトは置き換えられる。このメソッドを実行し、このオブジェクトが HttpSessionBindingListenerを実装しているときは、コンテナはHttpSessionBindingListener.valueBoundを呼ぶ。

name: それでこのオブジェクトをバインドする名前で、nullは不可。

value: バインドするオブジェクトでnullは不可。

このメソッドが無効(invalid)となっているセッションで呼ばれたときはjava.lang.IllegalStateExceptionをスローする。

public void putValue(java.lang.String name, java.lang.Object value)

2.2版でこのメソッドは使用禁止となっており、setAttribute(java.lang.String, java.lang.Object)で置き換えられている。

public void removeAttribute(java.lang.String name)

指定した名前でバインドされているオブジェクトを削除する。指定した名前のオブジェクトがバインドされていないときは本メソッドは何もしない。このメソッドが呼ばれ、またそのオブジェクトが HttpSessionBindingListenerを実装しているときは、サーブレット・コンテナはHttpSessionBindingListener.valueUnboundを呼ぶ。

name: それでこのオブジェクトをバインドする名前。

このメソッドが無効(invalid)となっているセッションで呼ばれたときはjava.lang.IllegalStateExceptionをスローする。

public void removeValue(java.lang.String name)

2.2版でこのメソッドは使用禁止となっており、setAttribute(java.lang.String, java.lang.Object)で置き換えられている。

public void invalidate()

本セッションを無効とし、これにバインドされている全てのオブジェクトをバインドから外す。このメソッドが無効(invalid)となっているセッションで呼ばれたときはjava.lang.IllegalStateExceptionをスローする。

public boolean isNew()

クライアントがまだこのセッションを知らないとき、またはクライアントがセッションに参加しない選択をしているときにtrueを返す。例えば、サーバがクッキー・ベースのセッションだけを使っていて、かつクライアントがクッキーの使用を不可としているときは、セッションは各要求ごとにnewの状態となる。

true: サーバがセッションを生成したがクライアントがまだこのセッションに参加していない。

このメソッドが無効(invalid)となっているセッションで呼ばれたときはjava.lang.IllegalStateExceptionをスローする。

public class HttpSessionBindingEvent

extends java.util.EventObject

HttpSessionBindingListenerを実装しているオブジェクトに対してこのオブジェクトがそのセッションにバインドされたり反対にバインドが外されたときに送出する。セッションはHttpSession.putValueを呼ぶことでオブジェクトをバインドし、HttpSession.removeValueを呼ぶことでバインドを外す。

HttpSessionBindingEvent(HttpSession session, java.lang.String name)

オブジェクトに対してそれがバインドされたかバインドから外されたということを通知するイベントを生成する。このイベントを受信するには、そのオブジェクトはHttpSessionBindingListenerを実装していなければならない。

session – オブジェクトをバインドまたはバインドから外すセッション

name – それでオブジェクトをバインドまたはバインドから外される名前

public java.lang.String getName()

それでオブジェクトがセッションからバインドまたはバインドから外されている名前を文字列で返す。

public HttpSession getSession()

そこにオブジェクトがバインドされているかそこからオブジェクトがバインドをとかれたかしているセッションを返す。

public interface HttpSessionBindingListener

extends java.util.EventListener

 

オブジェクトがセッションにバインドされたりまたバインドから外されたときに通知を受信できるようにする。このオブジェクトへはHttpSessionBindingEventのオブジェクトで通知される。

public void valueBound(HttpSessionBindingEvent event)

このオブジェクトにこれがあるセッションにバインドされたことを通知し、そのセッションを知る。

event – そのセッションを識別するイベント

 

public void valueUnbound(HttpSessionBindingEvent event)

このオブジェクトにこれがあるセッションからのバインドが外されたことを通知し、そのセッションを知る。

event – そのセッションを識別するイベント

 

public interface HttpSessionContext

サーブレットAPI 2.1版で使用禁止となっており、代替となるものはない。将来のバージョンではこのインターフェイスは削除される。

public HttpSession getSession(java.lang.String sessionId)

使用禁止。このメソッドは常にnullを返すこと。将来の版では削除される。

public java.util.Enumeration getIds()

使用禁止。このメソッドは常にnullを返すこと。将来の版では削除される。

 

 

前節     目次     次節