リクエストスコープ
| 日本語 | 要求有効範囲 |
| 英語 | request scope |
| ふりがな | りくえすとすこーぷ |
| フリガナ | リクエストスコープ |
リクエスト内でのみ使用できる情報、もしくはその「範囲」。
Webアプリケーション内で保存される情報の「有効範囲」のひとつ。
いわゆる「変数のスコープ」と基本的な意味は同じだが、変数としてのスコープではない。
HttpServletRequestインターフェイスのsetAttribute()メソッドでセットされた情報は、リクエストスコープを持つ。
リクエストスコープは、その名の通りリクエスト内でのみ有効であり、リクエストが完了すると消えてしまう。そのため、サーブレットやJSPでセットされたリクエストスコープの情報は、次のリクエスト発行時にはもう取得できなくなる。
リクエスト後も情報を残したい場合にはセッションに情報を保存する。この情報のスコープは「セッションスコープ」となる。
具体的に「リクエストスコープ」を指定する箇所は、JSPの<jsp:useBean>タグである。
リクエストスコープに保存されたJavaBeansをJSPで使用する場合には、<jsp:useBean>タグのscope属性でscope="request"を指定する。
Webアプリケーション内で保存される情報の「有効範囲」のひとつ。
いわゆる「変数のスコープ」と基本的な意味は同じだが、変数としてのスコープではない。
HttpServletRequestインターフェイスのsetAttribute()メソッドでセットされた情報は、リクエストスコープを持つ。
リクエストスコープは、その名の通りリクエスト内でのみ有効であり、リクエストが完了すると消えてしまう。そのため、サーブレットやJSPでセットされたリクエストスコープの情報は、次のリクエスト発行時にはもう取得できなくなる。
リクエスト後も情報を残したい場合にはセッションに情報を保存する。この情報のスコープは「セッションスコープ」となる。
具体的に「リクエストスコープ」を指定する箇所は、JSPの<jsp:useBean>タグである。
リクエストスコープに保存されたJavaBeansをJSPで使用する場合には、<jsp:useBean>タグのscope属性でscope="request"を指定する。
参考サイト
<%-- webapps/sample-servlet/WEB-INF/jsp/sample.jsp --%>
<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %>
<%--
pageEncodingには、このファイルを保存した時の文字コードを指定してください。
Windowsであれば"Windows-31J"を指定すればいいでしょう。
--%>
<%-- ↓requestなのでリクエストスコープです --%>
<jsp:useBean id="sample_bean" class="bean.SampleBean" scope="request"/>
<%--
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 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 );
request.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;
}
}
<%@ page contentType="text/html; charset=Windows-31J" pageEncoding="Windows-31J" %>
<%--
pageEncodingには、このファイルを保存した時の文字コードを指定してください。
Windowsであれば"Windows-31J"を指定すればいいでしょう。
--%>
<%-- ↓requestなのでリクエストスコープです --%>
<jsp:useBean id="sample_bean" class="bean.SampleBean" scope="request"/>
<%--
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 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 );
request.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"を指定すればいいでしょう。
--%>
<%-- ↓requestなのでリクエストスコープです --%>
<jsp:useBean id="sample_bean" class="bean.SampleBean" scope="request"/>
<%--
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 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 );
request.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;
}
}




