LoginSignup
21
22

More than 5 years have passed since last update.

JSP セッションスコープ

Last updated at Posted at 2016-02-25

▪️セッションスコープの取得
HttpSession session = request.getSession();
※javax.servlet.http.HttpSessionをimportする

▪️セッションスコープからインスタンスを削除
session.removeAttribute("属性名")
※引数はString型。削除するインスタンスの属性名を引数で指定する。
※属性名は大文字と小文字を区別する。

▪️セッションスコープに保存する
session.setAttribute("属性名",インスタンス)
※第一引数はString型。保存するインスタンスの属性名を指定する。
※属性名は大文字と小文字を区別する。
※第2引数はObject型。保存するインスタンスを指定する。
第2引数にはあらゆるクラスのインスタンスを指定できる。
※すでに同じ属性名のインスタンスが保存されている場合、上書きされる。

▪️セッションスコープからインスタンスを取得する
取得するインスタンスの型 名前 =
(取得するインスタンスの型) session.getAttribute("属性名")

M→一般的なJAVAクラス
V→表示を受け持つJSPファイル。データの取得・更新を行う
C→ブラウザからの応答・要求を受け付けるサーブレット

セッションスコープ例

▪️Test21Servlet.java

package servlet;

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;
import javax.servlet.http.HttpSession;
import javax.servlet.RequestDispatcher;
import bean.Test21Bean;

@WebServlet("/Test21Servlet")
public class Test21Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        Test21Bean t = new Test21Bean();
        t.setName("湊");
        t.setAge(23);

        // HttpSessionインスタンスの取得
        HttpSession session = request.getSession();

        // セッションスコープにインスタンスを保存
        session.setAttribute("t", t);

        // フォワード
        RequestDispatcher dispatcher = request.getRequestDispatcher("/Test21Jsp.jsp");
        dispatcher.forward(request, response);
    }

}

▪️Test21Bean.java

package bean;

public class Test21Bean implements java.io.Serializable {
    private String name;
    private int age;

    public Test21Bean() {

    }

    public Test21Bean(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;
    }

}

▪️Test21Jsp.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="bean.Test21Bean"%>
<%
    //セッションスコープからインスタンスを取得![スクリーンショット 2016-02-25 13.43.01.png](https://qiita-image-store.s3.amazonaws.com/0/95187/871a7c0f-3793-0d1b-e24e-4cec9ae4cdf3.png)![スクリーンショット 2016-02-25 13.43.01.png](https://qiita-image-store.s3.amazonaws.com/0/95187/699aaea9-2ada-e7bc-bcd8-11b4c554c334.png)


    Test21Bean t = (Test21Bean) session.getAttribute("t");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>セッションスコープ</title>
</head>
<body>
    <p>
        <%=t.getName()%>さんは<%=t.getAge()%>歳です
    </p>
</body>
</html>

▪️Test21Servlet.java 実行結果
スクリーンショット 2016-02-25 13.43.01.png

削除してまた保存する例

▪️Test21Servlet.java

package servlet;

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;
import javax.servlet.http.HttpSession;
import javax.servlet.RequestDispatcher;
import bean.Test21Bean;

@WebServlet("/Test21Servlet")
public class Test21Servlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        Test21Bean t = new Test21Bean();
        t.setName("湊");
        t.setAge(23);

        // HttpSessionインスタンスの取得
        HttpSession session = request.getSession();

        // セッションスコープにインスタンスを保存
        session.setAttribute("t", t);

        // セッションスコープからインスタンスを削除
        session.removeAttribute("t");

        session.setAttribute("t", t);

        // フォワード
        RequestDispatcher dispatcher = request.getRequestDispatcher("/Test21Jsp.jsp");
        dispatcher.forward(request, response);
    }

}

21
22
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
21
22