▪️RegisterUser.java C
//ユーザー登録に関するリクエストを処理するコントローラ
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 M
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 M
//ユーザー登録を行うモデル(ファイルやデータベースへの登録は行わない)
package model;
public class RegisterUserLogic {
public boolean execute(User user) {
// 登録処理
return true;
}
}
▪️registerForm.jsp V
<!--ユーザー登録入力画面 -->
<%@ 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 V
<!-- ユーザー登録確認画面 -->
<%@ 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 V
<!--「ユーザー登録完了画面」を出力するビュー-->
<%@ 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>