LoginSignup
17
19

More than 5 years have passed since last update.

JSP スコープ/リクエストスコープ

Last updated at Posted at 2016-02-18

スコープ

  • [x]スコープとは
    インスタンスを保存できる領域

  • [x]スコープに保存できるのはインスタンス「だけ」

  • [x]スコープにはString、Integerなど通常クラスの
    インスタンスを保存できるが、基本的には「JavaBeans」と呼ばれる
    クラスのインスタンスを保存する

■リクエストスコープに保存
request.setAttribute("属性名",インスタンス)

■リクエストスコープからインスタンスを取得
取得するインスタンスの型 名前 =
&nbsp (取得するインスタンスの型) 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;
    }



}

▪️Test15Servlet.java 実行結果
スクリーンショット 2016-02-22 16.28.45.png

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>

▪️Human2Servlet.java
スクリーンショット 2016-02-22 16.42.12.png

▪️ファイル構成
スクリーンショット 2016-02-22 16.48.38.png

17
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
19