再掲致します。
表題の通り、
①まずJspファイルでinputタグを使い、
userName2 ,newPassword,newPassword2属性にそれぞれ値を入力してサーブレットに処理を任せます。
②同時に未入力チェックを行いたいので、
userName2がnullの場合、userPass1がnullの場合、userPass2がnullの場合に
それぞれエラーメッセージを生成し、①で使用したJspファイルにフォワードしてエラーメッセージを出力します。
③そして、すべてのnullチェックをパスしたとき、userPass1とuserPass2の値が一致した場合、
Userインスタンスを生成して、元のJspファイルにフォワードする。
(ここではエラーメッセージの出力のみ確認したいので、Jspファイルには出力コードを書いていません。)
以上①~③の処理を実行したいです。
しかし実際に未入力チェック(①)を行うと、想定下通りに動きません。
具体的には、
userName2を未入力 newPasswordを入力 newPassword2を入力
→パスワードと再入力パスワードが一致しません。が出力。
userName2のみを入力
→何も表示されない
といった具合です。
対策としてデバックをしてみたもののなぜか毎回、
if (userName2 == null)
の部分をスキップしてしまいます。
そこで、何か値が混入しているのか思いUserクラスのインスタンスを生成し、userName2の値をsetUserName(User.javaがもつメソッド)でインスタンスに設定→requestScopeに保存→元のJspファイルへフォワード→Jspファイルで出力
といった手順を試してもなにも値が出力されませんでした。
どなたかJavaに詳しい方、お助け下さい。
長文駄文となってしまい誠に申し訳ございません。どうかご回答よろしくお願いいたします。
Jspファイル
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8" %> 3<%@ taglib prefix= "c" uri="http://java.sun.com/jsp/jstl/core" %> 4<!DOCTYPE html> 5<html> 6<head> 7<meta charset="UTF-8"> 8<title>Cafede Botti</title> 9</head> 10<body> 11<h2>新規ユーザー登録</h2> 12 13 14<form action = "/CafedeBotti/FC" method = "post"> 15 16<div align = center> 17Name<input type = "text" name = "userName2"><br> 18Pass1<input type = "text" name = "newPassword"><br> 19Pass2<input type = "text" name = "newPassword2"> 20 21 22 23 24<input type = "hidden" name = "ButtonID" value = "a006"> 25 26<input type = "submit" value = "submit"> 27</div> 28</form> 29 30 31 32 33 34 35 36 37 38 39 40 41 42<!-- <form action ="/CafedeBotti/FC" method = "post"> --> 43<!-- <input type = text name = "userName2"><br> --> 44<!-- <!-- パスワードを入力してください:<input type = "text" name = "newPassword"><br> --> 45<!-- <!-- 再度パスワードを入力してください:<input type = "text" name = "newPassword2"> --> 46<!-- <input type = "hidden" name = "ButtonID" value = "a006"> --> 47<!-- <input type ="submit" value = "登録"> --> 48<!-- </form> --> 49<!-- </div> --> 50 51 52<c:out value = "${message2.message}"/> 53 54</body> 55</html>
Servlet
1package Servlet; 2 3import java.io.IOException; 4import java.util.ArrayList; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12import javax.servlet.http.HttpSession; 13 14import model.FilterSearchLogic; 15import model.Message; 16import model.ShopList; 17import model.User; 18import model.UserLoginLogic; 19 20/** 21 * Servlet implementation class FrontController 22 */ 23@WebServlet("/FC") 24public class FrontController extends HttpServlet { 25 private static final long serialVersionUID = 1L; 26 ArrayList<ShopList> arraylist; 27 28 /** 29 * @see HttpServlet#HttpServlet() 30 */ 31 public FrontController() { 32 super(); 33 // TODO Auto-generated constructor stub 34 } 35 36 /** 37 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 38 */ 39 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 40 // TODO Auto-generated method stub 41 request.setCharacterEncoding("UTF-8"); 42 43 String ButtonID = request.getParameter("ButtonID"); 44 if(ButtonID == null) { 45 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/Top.jsp"); 46 dispatcher.forward(request, response); 47 }else if(ButtonID.equals("a001")) { 48 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/FilterdSearch.jsp"); 49 dispatcher.forward(request, response); 50 }else if (ButtonID.equals("a002")){ 51 52 53 }else if (ButtonID.equals("a003")) { 54 String wifi = request.getParameter("Wifi"); 55 String customerBase = request.getParameter("CustomerBase"); 56 57 if(wifi == null || customerBase == null) { 58 Message message = new Message ("全てのradioboxをマークしてください。"); 59 request.setAttribute("message", message); 60 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/FilterdSearch.jsp"); 61 dispatcher.forward(request, response); 62 } 63 64 //Wifi,CustomerBaseが共にnull出ない場合、 65 else { 66 ShopList ShopList = new ShopList(); 67 ShopList.setWifi(wifi); 68 ShopList.setCustomerBase(customerBase); 69 70 //FilterSearchLogicメソッドを呼び出す。 71 FilterSearchLogic FilterSearchLogic = new FilterSearchLogic(); 72 arraylist = FilterSearchLogic.FilterSearchLogicExecute(ShopList); 73 request.setAttribute("list",arraylist); 74 //FilterdSearchResult.jspにフォワードする 75 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/FilterdSearchResult.jsp"); 76 dispatcher.forward(request, response); 77 } 78 }else if (ButtonID.equals("a005")) { 79 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp"); 80 dispatcher.forward(request, response); 81 } 82 } 83 84 85 /** 86 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 87 */ 88 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { 89 // TODO Auto-generated method stub 90 91 //ログイン画面から送られてきたrequestからuserNameとuserPassを取り出す。 92 request.setCharacterEncoding("UTF-8"); 93 //requestインスタンスからButtonIDを取り出す。 94 String ButtonID = request.getParameter("ButtonID"); 95 //String userName = request.getParameter("userName"); 96 //String userPass = request.getParameter("userPass"); 97 //userNameかuserPassが未入力だとMessageインスタンスを生成し、リクエストスコープに格納する。 98 if(ButtonID.equals("a004")) { 99 String userName = request.getParameter("userName"); 100 String userPass = request.getParameter("userPass"); 101 102 if (userName == null || userPass == null) { 103 Message message2 = new Message("ユーザー名またはパスワードが未入力です。"); 104 request.setAttribute("message", message2); 105 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/LoginFail.jsp"); 106 dispatcher.forward(request, response); 107 }else { 108 109 //Userインスタンスを生成。 110 User user = new User (userName,userPass); 111 boolean loginistrue; 112 113 114 //UserLoginLogicメソッドを呼び出す。 115 UserLoginLogic UserLoginLogic = new UserLoginLogic(); 116 117 loginistrue = UserLoginLogic.loginExcecute(user); 118 119 120 //loginistrueの値で条件分岐 121 if (loginistrue == true) { 122 //SessionScopeに名前のみ保存 123 HttpSession session = request.getSession(); 124 session.setAttribute("user", user); 125 //ログイン結果画面にフォワードする。 126 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/LoginSuccess.jsp"); 127 dispatcher.forward(request, response); 128 }else { 129 Message message = new Message("ユーザー名またはパスワードが正しくありません。"); 130 request.setAttribute("message", message); 131 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/LoginFail.jsp"); 132 dispatcher.forward(request, response); 133 } 134 } 135 }else if (ButtonID.equals("a006")) { 136 String userName2 = request.getParameter("userName2"); 137 String userPass1 = request.getParameter("newPassword"); 138 String userPass2 = request.getParameter("newPassword2"); 139 140 141 142 if (userName2 == null) { 143 Message message2 = new Message("ユーザー名が未入力です。"); 144 request.setAttribute("message2",message2 ); 145 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp"); 146 dispatcher.forward(request, response); 147 148 }else if(userPass1 == null) { 149 Message message2 = new Message("パスワードが未入力です。"); 150 request.setAttribute("message2",message2 ); 151 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp"); 152 dispatcher.forward(request, response); 153 154 155 }else if(userPass2 == null) { 156 Message message2 = new Message("再入力パスワードが未入力です。"); 157 request.setAttribute("message2",message2 ); 158 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp"); 159 dispatcher.forward(request, response); 160 } 161 else if(userPass1.equals(userPass2)) { 162 User user2 = new User(userName2,userPass1); 163 request.setAttribute("user2",user2 ); 164 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp"); 165 dispatcher.forward(request, response); 166 }else { 167 Message message2 = new Message("パスワードと再入力パスワードが一致しません。"); 168 request.setAttribute("message2",message2 ); 169 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp"); 170 dispatcher.forward(request, response); 171 } 172 } 173 } 174} 175 176 177 178 179 180 181 182 183 184 185 186
Message.java
1package model; 2 3public class Message { 4 5 //メンバ変数 6 private String message; 7 8 //引数1コンストラクタ 9 public Message (String message) { 10 this.message = message; 11 12 } 13 14 public String getMessage() { 15 return message; 16 } 17 18 public void setMessage(String message) { 19 this.message = message; 20 } 21} 22 23 24 25 26
Top.jsp
1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>Cafede Botti</title> 8</head> 9<body> 10 11<h2>Cafede Botti</h2> 12 13<form action = "/CafedeBotti/FC" method = "post"> 14 15<div align = center> 16Name<input type = "text" name = "userName"><br> 17Pass<input type = "password" name = "userPass"><br> 18 19 20<input type = "hidden" name = "ButtonID" value = "a004"> 21<input type = "submit" value = "submit"> 22</div> 23</form> 24<div align = "center"> 25<a href = "/CafedeBotti/FC?ButtonID=a005" > 初めての方はこちら </a><br> 26</div> 27 28 29 30 31</body> 32</html>
#Java #jsp #質問 #エンジニア