LoginSignup
9
11

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-02-29

教科書に載っているサンプルプログラムを作成してみました
スクリーンショット 2016-02-29 13.12.08.png

▪️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>

▪️RegisterUser.java C 実行結果
スクリーンショット 2016-02-29 13.12.08.png
スクリーンショット 2016-02-29 13.14.19.png
スクリーンショット 2016-02-29 13.15.37.png

IMG_4605.JPG

9
11
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
9
11