暗黙オブジェクト(session)
JSPでは、宣言せずに使用できるオブジェクトとして9つの暗黙オブジェクト(request, response, pageContext, session, application, config, page, exception)が用意されています。それぞれの暗黙オブジェクトにはJSPプログラムで頻繁に使用するメソッドが定義されています。ここでは、暗黙オブジェクトのうち、sessionについて解説します
メソッド
暗黙オブジェクトsessionは、javax.servlet.http.HttpSessionインタフェースのオブジェクト変数です。クライアントとサーバ間のセッション管理に使用します。セッション管理の詳細はJavaの道:Servlet(セッション管理)を参照してください。pageディレクティブのsession属性にfalseが設定されている場合は、この暗黙オブジェクトを使用することはできません。以下にsessionオブジェクトで使用できる主なメソッドを紹介します。
戻り型 | メソッド | 説明 |
---|---|---|
Object | getAttribute(String) | 引数に指定されたデータ名に該当するセッションスコープのデータ値を返します。該当のデータ名がない場合にはnullを返します。 |
Enumeration | getAttributeNames( ) | セッションスコープで利用可能なすべてのデータ名を返します。 |
String | getId( ) | セッションに割り当てられた一意のセッションIDを返します。 |
int | getMaxInactiveInterval( ) | セッションごとのセッション保持時間を秒数で返します。 |
ServletContext | getServletContext( ) | セッションが属しているServletContextオブジェクトを返します。 |
void | invalidate( ) | 生成されているセッションIDを破棄します。 |
boolean | isNew( ) | クライアントがセッション管理されていないときにtrueを返します(初めてアクセスしたとき、クラインアントがcookieを使えないときなど)。 |
void | removeAttribute(String) | 引数に指定されたデータ名をセッションスコープから削除します。 |
void | setAttribute(String, Object) | 第一引数にデータ名、第二引数にデータ値を指定し、セッションスコープを持つデータ値を登録します。すでにデータ名が存在する場合は、新しく指定されたデータ値が上書きされます。 |
void | setMaxInactiveInterval(int) | セッションごとのセッション保持時間を秒数で指定します。 |
※ その他のメソッドについてはAPIリファレンスをご参照ください。
使用例
sessionオブジェクトの使用例について解説します。セッション管理されているかどうかを判別して、クライアントがセッション管理されていないときに「Java Nice to meet you.」を表示し、セッション管理されているときには「Hello! Java」を表示します。
exSession.jsp
<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<%
//(1)isNewメソッドでセッション管理されているか確認します。
if (session.isNew()) {
//(2)セッション管理されていない場合、セッションスコープを持つ
// データid(値はJava)を登録します。
session.setAttribute("id", "Java");
//(3)セッションスコープを持つデータidを表示します。
out.println(session.getAttribute("id") + " Nice to meet you.");
} else {
//(4)セッション管理されている場合、セッションスコープを持つ
// データidを表示します。
out.println("Hello! " + session.getAttribute("id"));
}
%>
</body>
</html>
【実行結果】JSPプログラムの実行方法に関しては、Javaの道:Tomcat(プログラム配置・実行)を参照してください。
初めてアクセスした場合(セッション管理されていない)

2回目以降アクセスした場合(セッション管理されている)

8暗黙オブジェクト(session)