JSP セッションスコープ

<font color = "#ff0000">▪️セッションスコープの取得</font>
**HttpSession session = request.getSession();**
※javax.servlet.http.HttpSessionをimportする

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

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

<font color = "#ff0000">▪️セッションスコープからインスタンスを取得する</font>
**取得するインスタンスの型 名前　＝**
**(取得するインスタンスの型) session.getAttribute("属性名")**

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

##セッションスコープ例

▪️Test21Servlet.java

```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

```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

```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](https://qiita-image-store.s3.amazonaws.com/0/95187/db8b0b9d-714b-c667-4d3a-cbdd35a84850.png)

##削除してまた保存する例

▪️Test21Servlet.java

```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);
	}

}

```