##スコープ
-
[x]スコープとは
インスタンスを保存できる領域 -
[x]スコープに保存できるのはインスタンス「だけ」
-
[x]スコープにはString、Integerなど通常クラスの
インスタンスを保存できるが、基本的には「JavaBeans」と呼ばれる
クラスのインスタンスを保存する
■リクエストスコープに保存
request.setAttribute("属性名",インスタンス)
■リクエストスコープからインスタンスを取得
取得するインスタンスの型 名前 =
  (取得するインスタンスの型) request.getAttribute("属性名")
■setAttributeメソッド
リクエストに新しい属性名と値を
セットすることが出来る
■getAttributeメソッド
追加した属性を取り出す
指定された名前の属性値を Object として返す
getAttribute()API
■ServletRequest
ServletRequestインターフェースAPI
#JavaBeans リクエストスコープ例
▪️Test15Servlet.java
package javabeans;
import java.io.IOException;
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("/Test15Servlet")
public class Test15Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Test15Beans t15b = new Test15Beans("湊", 24);
request.setAttribute("t15b", t15b);
Test15Beans t = (Test15Beans) request.getAttribute("t15b");
}
}
▪️Test15Beans.java
package javabeans;
import java.io.Serializable;
public class Test15Beans implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Test15Beans() {
}
public Test15Beans(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
#JSPファイルでリクエストスコープを使用する例
▪️Human2Servlet.java
//Controller
//ブラウザからの応答・要求を受け付けるサーブレット
package servlet;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.Human2;
@WebServlet("/HumanServlet")
public class Human2Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Human2 human = new Human2("湊", 23);
// setAttributeメソッド
// →リクエストに新しい属性名と値をセットすることができる
request.setAttribute("human", human); // ここでリクエストスコープに保存
// フォワード
RequestDispatcher dispatcher = request.getRequestDispatcher("/Test13Jsp.jsp");
dispatcher.forward(request, response); // フォワードを行う
}
}
▪️Human2.java
//Model
package model;
import java.io.Serializable;
public class Human2 implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Human2() {
}
public Human2(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
▪️Test13Jsp.jsp
<!-- View -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="model.Human2"%>
<%
//ここでリクエストスコープを受け取る
//getAttributeメソッド
//→追加した属性を取り出す
Human2 human = (Human2) request.getAttribute("human");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSPでリクエストスコープ</title>
</head>
<body>
<p>
<%=human.getName()%>さんは<%=human.getAge()%>歳です
</p>
</body>
</html>