JSP ユーザー登録機能アプリ(セッションスコープ)

教科書に載っているサンプルプログラムを作成してみました
![スクリーンショット 2016-02-29 13.12.08.png](https://qiita-image-store.s3.amazonaws.com/0/95187/9d1fadaa-a0ee-473a-8b52-3d3dc4d126b2.png)

▪️RegisterUser.java <font color="ff0000">C</font>

```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.RequestDispatcher;
import javax.servlet.http.HttpSession;
import model.RegisterUserLogic;
import model.User;

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

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		// フォワード先
		String forwardPath = null;

		// サーブレットクラスの動作を決定する「action」の値を
		// リクエストパラメーターから取得(P142)
		String action = request.getParameter("action");

		// 「登録の開始」をリクエストされた時の処理
		if (action == null) {
			// フォワード先を指定
			forwardPath = "/registerForm.jsp";
		}

		// 登録確認画面から「登録実行」をリクエストされた時の処理
		else if (action.equals("done")) {
			// セッションスコープに保存された登録ユーザーを取得
			HttpSession session = request.getSession();
			User registerUser = (User) session.getAttribute("registerUser");

			// 登録処理の呼び出し
			RegisterUserLogic logic = new RegisterUserLogic();
			logic.execute(registerUser);

			// 不要となったセッションスコープ内のインスタンスを削除
			session.removeAttribute("registerUser");

			// 登録後のフォワード先を設定
			forwardPath = "/registerDone.jsp";
		}

		// 設定されたフォワード先にフォワード
		RequestDispatcher dispatcher = request.getRequestDispatcher(forwardPath);
		dispatcher.forward(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		// リクエストパラメーターの取得
		request.setCharacterEncoding("UTF-8");
		String id = request.getParameter("id");
		String name = request.getParameter("name");
		String pass = request.getParameter("pass");

		// 登録するユーザーの情報を設定
		User registerUser = new User(id, name, pass);

		// セッションスコープに登録ユーザーを保存
		HttpSession session = request.getSession();
		session.setAttribute("registerUser", registerUser);

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

	}

}
```

▪️User.java <font color="ff0000">M</font>

```java
package model;

public class User implements java.io.Serializable {
	private String id;
	private String name;
	private String pass;

	public User() {

	}

	public User(String id, String name, String pass) {
		this.id = id;
		this.name = name;
		this.pass = pass;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPass() {
		return pass;
	}

	public void setPass(String pass) {
		this.pass = pass;
	}

}
```

▪️RegisterUserLogic.java <font color="ff0000">M</font>

```java
//ユーザー登録を行うモデル(ファイルやデータベースへの登録は行わない)
package model;

public class RegisterUserLogic {
	public boolean execute(User user) {
		// 登録処理
		return true;
	}
}
```

▪️registerForm.jsp <font color="ff0000">V</font>

```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>
	<form action="/UserRegistration/RegisterUser" method="post">
		ログインID:<input type="text" name="id"><br> パスワード:<input
			type="password" name="pass"><br> 名前:<input type="text"
			name="name"><br> <input type="submit" value="確認">
	</form>
</body>
</html>
```

▪️registerConfirm.jsp <font color="ff0000">V</font>

```jsp
<!-- ユーザー登録確認画面 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="model.User"%>
<%
	User registerUser = (User) session.getAttribute("registerUser");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ユーザー登録</title>
</head>
<body>
	<p>下記のユーザーを登録します</p>
	<p>
		ログインID:<%=registerUser.getId()%><br> 名前:<%=registerUser.getName()%><br>
	</p>
	<a href="/UserRegistration/RegisterUser">戻る</a>
	<a href="/UserRegistration/RegisterUser?action=done">登録</a>
</body>
</html>
```

▪️registerDone.jsp <font color="ff0000">V</font>

```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>
	<p>登録完了しました</p>
	<a href="/UserRegistration/RegisterUser">戻る</a>
</body>
</html>
```

▪️RegisterUser.java <font color="ff0000">C</font> 実行結果
![スクリーンショット 2016-02-29 13.12.08.png](https://qiita-image-store.s3.amazonaws.com/0/95187/2b06e631-8245-16df-4eec-fac3e66faf7e.png)
![スクリーンショット 2016-02-29 13.14.19.png](https://qiita-image-store.s3.amazonaws.com/0/95187/1144e8fb-afeb-d82e-9592-915386523f0b.png)
![スクリーンショット 2016-02-29 13.15.37.png](https://qiita-image-store.s3.amazonaws.com/0/95187/9c5c1ce1-a956-8160-efbd-a7dd0b05c237.png)



![IMG_4605.JPG](https://qiita-image-store.s3.amazonaws.com/0/95187/a3166ce0-65f5-87a7-6d83-db3214709e04.jpeg)