こんにちは。
現在、模擬プロジェクトとしてちょっとしたノベルゲームのアプリを制作中です。
その中で、最初に新規登録/ログイン画面があるのですが、ログイン画面のみエラーメッセージを出力できません。以下は①新規登録/ログインの入力チェックと、②新規登録/ログイン専用のサーブレット、③新規登録jsp、④ログインjspです。
java
1 2//App_novelGame.java 3//省略 4 5//新規登録のバリューチェック 6 public boolean registerValueCheck() { 7 8 9 errorMessages = new ArrayList<String>(); 10 11 if (username == null || username.isEmpty()) { 12 errorMessages.add("ユーザー名が空です"); 13 } else if (username.length() > 20) { 14 errorMessages.add("入力したユーザー名が長すぎます"); 15 } 16 17 return (errorMessages.size() == 0); 18 } 19 20 //ログインのバリューチェック 21 public boolean loginValueCheck() { 22 23 errorMessages = new ArrayList<String>(); 24 25 if (userid < 0 && (username == null || username.isEmpty()) ) { 26 errorMessages.add("入力してください"); 27 } 28 29 if (username == null || username.isEmpty()) { 30 errorMessages.add("ユーザー名が空です"); 31 } else if (username.length() > 20) { 32 errorMessages.add("入力したユーザー名が長すぎます"); 33 } 34 return (errorMessages.size() == 0); 35 36 } 37 38 39//エラーメッセージのget,set定義 40 private List<String> errorMessages; 41 42 public List<String> getErrorMessages() { 43 return errorMessages; 44 } 45 46 public void setErrorMessages(List<String> errorMessages) { 47 this.errorMessages = errorMessages; 48 } 49 50
java
1 2//RegisterServlet.java 3//LoginServlet.javaは同様の記述の為、省略 4 5boolean checkResult = dto.registerValueCheck(); 6 7 if (!checkResult) { 8 9 request.setAttribute("errorMessages", dto.getErrorMessages()); 10 request.setAttribute("dto", dto); 11 12 RequestDispatcher rd = request.getRequestDispatcher("/jsp/register.jsp"); 13 rd.forward(request, response); 14 15 return; 16 17 } else { 18 19 //新規登録の処理を発動 20 21 return; 22 23 } 24 25
html
1 2<%-- login.jsp --%> 3 4<div class="login"> 5 <form action="/App_novelGame/LoginServlet" method="post"> 6 7 <h1>ログイン画面</h1> 8 9 <div> 10 ユーザ名:<input type="text" name="username"></input> 11 </div> 12 <br /> 13 <div> 14 ユーザID:<input type="text" name="userid"></input> 15 </div> 16 <br /> <br /> <input type="submit" value="ログイン"/> 17 </form> 18 19 <br /> 20 21 22 23 <%--エラーメッセージの検出 --%> 24 <c:if test="${errorMessages.size() > 0 }"> 25 <br /> 26 <div class="alert alert-danger" role="alert"> 27 <c:forEach items="${errorMessages}" var="errorMessage"> 28 ※${errorMessage }<br /> 29 </c:forEach> 30 </div> 31 </c:if> 32 33 34 </div> 35 36 37
html
1 2<%-- register.jsp --%> 3 4<div class="register"> 5 <form action="/App_novelGame/RegisterServlet" method="post"> 6 7 <h1>ユーザ新規登録画面</h1> 8 9 <div> 10 ユーザ名:<input type="text" name="username"></input> 11 </div> 12 <p>※20字以内で設定してください</p> 13 <br /> <br /> <input type="submit" value="登録" /> 14 </form> 15 </div> 16 17 <br /> 18 <%--エラーメッセージの検出 --%> 19 20 <c:if test="${errorMessages.size() > 0 }"> 21 <br /> 22 <div class="alert alert-danger" role="alert"> 23 <c:forEach items="${errorMessages}" var="errorMessage"> 24 ※${errorMessage }<br /> 25 </c:forEach> 26 </div> 27 </c:if> 28 29
できること
新規登録バリューチェックで名前入力欄が空、20文字を超えて入力されたときにエラーメッセージを出力
できないこと
ログインバリューチェックで以下の時にエラーメッセージを出力
・ログインID、名前が両方空、もしくは片方でも空でpostされた場合
・名前が20文字を超えて入力された場合
ログイン画面で入力欄を空でpostした場合は、「HTTPステータス 500-For input string:""」とエラーが出ます。間違った情報を入力した場合は「HTTPステータス 500 - org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/login.jsp at line 39」と出ました。
実現したいこと
ログインチェックのエラー改善、完成。
足りない情報がございましたら、お申しつけください。
このエラーについてアドバイスをいただける方、よろしくお願いいたします。
あなたの回答
tips
プレビュー