Javaに関する様々な情報をご紹介します。

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

Javaに関する様々な情報をご紹介します。

暗黙オブジェクト(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(プログラム配置・実行)を参照してください。

初めてアクセスした場合(セッション管理されていない)
Javaの道_session_実行結果1
2回目以降アクセスした場合(セッション管理されている)
Javaの道_session_実行結果2

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