質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

0回答

986閲覧

《再掲》条件分岐がうまくいかず、エラーメッセージが出力されません。

Saitamadesu4

総合スコア6

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2019/08/07 22:05

再掲致します。
表題の通り、
①まず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 #質問 #エンジニア

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2019/08/07 22:18

「《再掲》」って書いてるところを見ると意図的にやってるみたいですけど、推奨されない行為であることはちゃんとガイドラインに書いてあります。 https://teratail.com/help/avoid-asking 「閲覧数を増やす目的などにより、過去に投稿した質問と同じ内容の質問を新たに投稿することは推奨していません。」
takasima20

2019/08/07 22:36

null と 空文字列は違うんじゃないスか? 知らんけど
Zuishin

2019/08/07 22:51

再掲してはいけません。 こちらは PC で開いてごみ箱アイコンから削除リクエストしてください。 前の質問も再掲のようですが、回答が気に食わないからと言って無言で低評価して新しく質問するのはやめてください。 前の質問の追記修正依頼や回答にコメントし、質問を編集し直してください。
Zuishin

2019/08/07 22:56

編集をし直す場合、全部書き換えると既についている回答が意味不明なものになるので、追記という形をとってください。
退会済みユーザー

退会済みユーザー

2019/08/07 23:56

元の質問を編集すればアクティブ(デフォルト)の上位にくるので回答しないリストに入る要因は再掲行為
azuapricot

2019/08/08 00:07

NULL なのか 空文字 なのかで値が入ってるか入ってないかって変わるんですけど、 空文字のチェックはしましたか? あと元質問に追記すればよいと思います。何度も何度も似たような質問を上げるのは、後世同じことで困っている後輩たちのためになりません。
m.ts10806

2019/08/08 00:08

前の質問に既に回答ついてますよ。 その回答を無視して再掲は回答してくれた人に対して失礼です。
azuapricot

2019/08/08 00:10

あとは 「なぜか毎回スキップしてしまいます。」って言ってますが、 デバッグのやり方が悪いのでは? スキップする前の処理でもuserName2の中身は見れますよね? コーディングしていく上でデバッグスキルは必須ですよ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問