JavaA2Z

KAB-studio > プログラミング > JavaA2Z > セッションスコープとは

セッションスコープ

日本語 対話期間有効範囲
英語 session scope
ふりがな せっしょんすこーぷ
フリガナ セッションスコープ

解説

セッション内でのみ使用できる情報、もしくはその「範囲」。
 
Webアプリケーション内で保存される情報の「有効範囲」のひとつ。
いわゆる「変数スコープ」と基本的な意味は同じだが、変数としてのスコープではない。
 
HttpSessionインターフェイスのsetAttribute()メソッドでセットされた情報は、セッションスコープを持つ。
セッションスコープは、その名の通りリクエスト内でのみ有効であり、セッションがタイムアウトするまで有効となる。そのため、次回以降のリクエストでも使用することができる。
ただし、逆に長時間保存されることになるため、思わぬ所で情報が使用されたり、またはあるはずの情報がセッションタイムアウトで消えてしまっていた、という場合もあるため注意。
リクエスト後には情報を無効にしたい場合にはリクエストに情報を保存する。この情報のスコープは「リクエストスコープ」となる。
 
具体的に「セッションスコープ」を指定する箇所は、JSP<jsp:useBean>タグである。
セッションスコープに保存されたJavaBeansJSPで使用する場合には、<jsp:useBean>タグのscope属性でscope="session"を指定する。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

<%-- webapps/sample-servlet/WEB-INF/jsp/sample.jsp --%>
<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %>
<%--
    pageEncodingには、このファイルを保存した時の文字コードを指定してください。 
    Windowsであれば"Windows-31J"を指定すればいいでしょう。
--%>

<!--                                                           ↓sessionなのでセッションスコープです -->
<jsp:useBean id="sample_bean" class="bean.SampleBean" scope="session"/>
<%--
    SampleServletでセットしたJava Beanを取得します。 
--%>

<HTML>
<HEAD>
<TITLE>JSPのサンプル</TITLE>
</HEAD>
<BODY>

<%
    // <jsp:useBean>のidで指定した名前が、そのまま変数名となります。
    // この変数名で、サーブレット側でセットしたデータにアクセスできます。
    int i = sample_bean.getData();
    out.println( i );
    // 100
%>

</BODY>
</HTML>


// webapps/sample-servlet/WEB-INF/src/SampleServlet.java
// http://localhost:8080/sample-servlet/servlet/SampleServlet でアクセスできます。
// このサンプルプログラムは「サーブレット」の項目に書かれている準備を行ってから使用してください。
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import bean.SampleBean;

/**
*   サーブレットのテスト。
*/
public class SampleServlet extends HttpServlet
{
    /**
     * リクエストとしてHTTPメソッドのGETが渡されるとこのメソッドが呼ばれます。
     */
    public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException
    {
        System.out.println( "SampleServlet#doGet()" );

        // Content-Typeをセット。
        response.setContentType( "text/html;charset=Windows-31J" );

        // SampleBean Java Beanクラスを作成し、JSPで使えるようにセットします。
        SampleBean sampleBean = new SampleBean();
        sampleBean.setData( 100 );

        // HttpSessionを取得します。
        HttpSession session = request.getSession( true );
        // 「sample_bean」の名前でセッションに登録します。
        // セッションに登録するのでセッションスコープになります。
        session.setAttribute( "sample_bean", sampleBean );

        // サーブレットコンテキストを取得します。
        ServletContext servletContext = getServletContext();
        // リクエストディスパッチャーを取得します。
        RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher( "/WEB-INF/jsp/sample.jsp" );
        // 指定したJSPへと転送します。
        requestDispatcher.forward( request, response );
    }
}


// webapps/sample-servlet/WEB-INF/src/bean/SampleBean.java
package bean;
// Java Beanは、JSPで使用する関係でパッケージに入れる必要があります。
// ここではbeanパッケージに入れます。

// 一応、Java Beanは直列化可能にする必要があります。
// 実際には必要ない場合も多いですが。
import java.io.Serializable;

/**
*   SampleServletで使用するJava Beanクラスです。
*/
public class SampleBean implements Serializable
{
    /**
    *    プロパティ。
    */
    private int data;

    /**
    *   コンストラクタ。
    */
    public SampleBean()
    {
        data = 0;
    }

    /**
    *    プロパティのgetter。
    */
    public int getData()
    {
        return data;
    }

    /**
    *    プロパティのsetter。
    */
    public void setData( int value )
    {
        this.data = value;
    }
}
<%-- webapps/sample-servlet/WEB-INF/jsp/sample.jsp --%>
<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %>
<%--
    pageEncodingには、このファイルを保存した時の文字コードを指定してください。 
    Windowsであれば"Windows-31J"を指定すればいいでしょう。
--%>

<!--                                                           ↓sessionなのでセッションスコープです -->
<jsp:useBean id="sample_bean" class="bean.SampleBean" scope="session"/>
<%--
    SampleServletでセットしたJava Beanを取得します。 
--%>

<HTML>
<HEAD>
<TITLE>JSPのサンプル</TITLE>
</HEAD>
<BODY>

<%
    // <jsp:useBean>のidで指定した名前が、そのまま変数名となります。
    // この変数名で、サーブレット側でセットしたデータにアクセスできます。
    int i = sample_bean.getData();
    out.println( i );
    // 100
%>

</BODY>
</HTML>


// webapps/sample-servlet/WEB-INF/src/SampleServlet.java
// http://localhost:8080/sample-servlet/servlet/SampleServlet でアクセスできます。
// このサンプルプログラムは「サーブレット」の項目に書かれている準備を行ってから使用してください。
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import bean.SampleBean;

/**
*   サーブレットのテスト。
*/
public class SampleServlet extends HttpServlet
{
    /**
     * リクエストとしてHTTPメソッドのGETが渡されるとこのメソッドが呼ばれます。
     */
    public void doGet( HttpServletRequest request, HttpServletResponse response ) throws IOException, ServletException
    {
        System.out.println( "SampleServlet#doGet()" );

        // Content-Typeをセット。
        response.setContentType( "text/html;charset=Windows-31J" );

        // SampleBean Java Beanクラスを作成し、JSPで使えるようにセットします。
        SampleBean sampleBean = new SampleBean();
        sampleBean.setData( 100 );

        // HttpSessionを取得します。
        HttpSession session = request.getSession( true );
        // 「sample_bean」の名前でセッションに登録します。
        // セッションに登録するのでセッションスコープになります。
        session.setAttribute( "sample_bean", sampleBean );

        // サーブレットコンテキストを取得します。
        ServletContext servletContext = getServletContext();
        // リクエストディスパッチャーを取得します。
        RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher( "/WEB-INF/jsp/sample.jsp" );
        // 指定したJSPへと転送します。
        requestDispatcher.forward( request, response );
    }
}


// webapps/sample-servlet/WEB-INF/src/bean/SampleBean.java
package bean;
// Java Beanは、JSPで使用する関係でパッケージに入れる必要があります。
// ここではbeanパッケージに入れます。

// 一応、Java Beanは直列化可能にする必要があります。
// 実際には必要ない場合も多いですが。
import java.io.Serializable;

/**
*   SampleServletで使用するJava Beanクラスです。
*/
public class SampleBean implements Serializable
{
    /**
    *    プロパティ。
    */
    private int data;

    /**
    *   コンストラクタ。
    */
    public SampleBean()
    {
        data = 0;
    }

    /**
    *    プロパティのgetter。
    */
    public int getData()
    {
        return data;
    }

    /**
    *    プロパティのsetter。
    */
    public void setData( int value )
    {
        this.data = value;
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/10/04
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。