java
1//ユーザー登録に関するリクエストを処理するコントローラ 2 3package servlet; 4 5import java.io.IOException; 6import java.util.HashMap; 7import java.util.Map; 8 9import javax.servlet.RequestDispatcher; 10import javax.servlet.ServletException; 11import javax.servlet.annotation.WebServlet; 12import javax.servlet.http.HttpServlet; 13import javax.servlet.http.HttpServletRequest; 14import javax.servlet.http.HttpServletResponse; 15import javax.servlet.http.HttpSession; 16 17import model.RegisterUserLogic; 18import model.User; 19 20@WebServlet("/RegisterUser") 21public class RegisterUser extends HttpServlet { 22 private static final long serialVersionUID = 1L; 23 24 protected void doGet(HttpServletRequest request, HttpServletResponse response) 25 throws ServletException, IOException { 26 27 // サーブレットクラスの動作を決定する「action」の値をリクエストパラメータから取得 28 String action = request.getParameter("action"); 29 30 if(!"done".equals(action)){ 31 // 「ユーザー登録」をリクエストされたときの処理 32 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/registerForm.jsp"); 33 dispatcher.forward(request, response); 34 } else { 35 // 「登録」をリクエストされたときの処理 36 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/registerDone.jsp"); 37 dispatcher.forward(request, response); 38 } 39 } 40 41 protected void doPost(HttpServletRequest request, HttpServletResponse response) 42 throws ServletException, IOException { 43 44 // リクエストの文字コードを指定 45 request.setCharacterEncoding("UTF-8"); 46 47 // サーブレットクラスの動作を決定する「action」の値をリクエストパラメータから取得 48 String action = request.getParameter("action"); 49 50 if (!"done".equals(action)) { 51 //「確認」をリクエストされたときの処理 52 53 String nickName = request.getParameter("nickName"); 54 String eMail = request.getParameter("eMail"); 55 String pass = request.getParameter("pass"); 56 String userName = request.getParameter("userName"); 57 58 //入力チェック 59 Map<String, String>errors = new HashMap<String, String>(); 60 61 62 if( (nickName == null || nickName.trim().length() == 0) && 63 (eMail == null || eMail.trim().length() == 0) && 64 (pass == null || pass.trim().length() == 0) && 65 (userName == null || userName.trim().length() == 0)){ 66 errors.put("nickName", " * 氏名を入力してください。"); 67 errors.put("eMail", " * メールアドレスを入力してください。"); 68 errors.put("pass", " * パスワードを入力してください。"); 69 errors.put("userName", " * ユーザー名を入力してください。"); 70 } 71// 登録するユーザー情報を生成 72 User registerUser = new User(nickName, eMail, pass, userName); 73 74 // セッションスコープに登録ユーザーを保存 75 HttpSession session = request.getSession(); 76 session.setAttribute("registerUser", registerUser); 77 78 if(!errors.isEmpty()){ //errorsが空でない時(入力されていないのでエラーメッセージがある時) 79 //入力エラーがある場合は入力画面に戻す 80 request.setAttribute("errors", errors); 81 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/registerForm.jsp"); 82 dispatcher.forward(request, response); 83 84 }else{ 85 //エラーがない時、確認画面にフォワードする 86 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/registerConfirm.jsp"); 87 dispatcher.forward(request, response); 88 } 89 90 } else { 91 // 登録確認画面から「登録」をリクエストされたときの処理 92 93 // セッションスコープに保存された登録ユーザーを取得 94 HttpSession session = request.getSession(); 95 User registerUser = (User) session.getAttribute("registerUser"); 96 97 // 登録処理の呼び出し 98 RegisterUserLogic logic = new RegisterUserLogic(); 99 logic.execute(registerUser); 100 101 // 不要となったセッションスコープ内のインスタンスを削除 102 session.removeAttribute("registerUser"); 103 104 // 登録後のリダイレクト 105 response.sendRedirect(request.getServletContext().getContextPath() + "/RegisterUser?action=done"); 106 } 107 } 108}
この場合、氏名、メール、パスワード、ユーザー名が全て、入力されていない時にメッセージが出ると思うのですが、
例えば、メールだけとか
氏名とメールだけが空の場合の
書き方は同じように
if文で書いていくのでしょうか?
if((nickName == null || nickName.trim().length() == 0) && (eMail == null || eMail.trim().length() == 0)){
errors.put("nickName", " * 氏名を入力してください。");
errors.put("eMail", " * メールアドレスを入力してください。");
}
パターンの種類が多くてもifをたくさん使うやり方が望ましいのでしょうか??
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/15 06:30
2017/05/15 06:40
2017/05/15 06:57
2017/05/15 12:30
2017/05/16 00:17
2017/05/16 00:37