リクエストスコープとは
リクエストスコープはリクエスト毎に生成されるスコープ(データの保存領域)で、レスポンスが返されるまで利用可能です。
注意ポイント
よくセッションスコープとごっちゃになりますが、データの保持時間が全然違うので別物として扱いましょう
セッションスコープに関しては次の記事で解説しています。
【Java】セッションとは?セッションを使ったデータ取捨の方法
続きを見る
リクエストスコープの取得(保存)
まずは、基本構文から勉強していきましょう。
リクエストスコープを使ってデータの格納や取得、削除などを行うときは基本的に次のようなコードを記載します。
基本構文1
【データを取得してリクエストスコープに保存】
request.setAttribute("属性名(key)","値(value)")
基本構文2
【リクエストスコープから値を取得】
request.getAttribute("属性名(key)")
次に、リクエストスコープを実際に用いたコードを見ていきましょう。
requestSample.java(パラメータを受け渡しを行うjavaファイル)
package requestSample;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/SampleCode")
public class SampleCode extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//➁入力値をリクエストスコープから取得して変数に格納
String name = request.getParameter("name");
String dob = request.getParameter("dob");
String sex = request.getParameter("sex");
//➂リクエストスコープに変数から取出した値を格納
request.setAttribute("name", name);
request.setAttribute("dob", dob);
request.setAttribute("sex", sex);
RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/Sample.jsp");
dispatcher.forward(request, response);
}
}
Sample.jsp(Webブラウザに表示するjspファイル)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>リクエストスコープのサンプルコード</title>
</head>
<body>
<h1>リクエストスコープのサンプルコード</h1>
<form action="/requestSample/SampleCode" method="get">
<!-- ➀text型で入力項目を作成 -->
氏名:<input type="text" name="name"/><br />
生年月日:<input type="text" name="dob"/><br />
性別:<input type="text" name="sex"/><br />
<input type="submit" value="送信" /><br /><br>
<!-- ➃requestSample.javaから渡されたパラメータを表示する-->
結果<br>
氏名:<%= request.getAttribute("name") %><br>
生年月日:<%= request.getAttribute("dob") %><br>
性別:<%= request.getAttribute("sex") %>
</form>
</body>
</html>
上記コードは、次の動作を持つプログラムです。
- Sample.jspファイルに記載したコードで、でブラウザ上にテキストボックスを表示する※➀
- テキストボックスに値が入力され送信ボタンが押されると、入力データを取得しリクエストスコープに格納する※➁
- requestSample.javaファイルに記載されたコードで、リクエストスコープに格納された値を取出す※➂
- 先ほど取出した値を、画面表示用の変数に格納する※➂
- Sample.jspファイルに記載したコードで、でブラウザ上に入力データを表示する※➃
実行結果
画面上に入力ボックスが表紙されます
各テキストボックスに値を入力して、送信ボタンを押します
先ほど テキストボックスに入力した値が、結果に表示されます。
以上で終わりとなります。お疲れ様でした!