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

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

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

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

Java

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

servlet

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

Q&A

2回答

9335閲覧

パスワード入力値が正しいかif文で判断したいです。

Saitamadesu4

総合スコア6

JSP

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

Java

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

servlet

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

0グッド

0クリップ

投稿2019/08/06 22:58

編集2019/08/07 15:08

再掲致します。
表題の通り、
①まず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ページで確認できます。

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

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

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

takasima20

2019/08/06 23:14

aに値が入ってないんじゃ? あと if(b のとこイコールが全角になってます。最初の If も転記ミス?
y_waiwai

2019/08/06 23:22

コード全体を提示しましょう。 また、コードは、質問を編集し、<code>ボタンを押して、出てくる’’’の枠の中に貼り付けてください
Saitamadesu4

2019/08/06 23:35

訂正します。 コードについては出先だったので、投稿フォームに手入力してしまいました、申し訳ございません。 Jsp側であえて、 a 未入力 b入力 c入力 a 入力 b未入力 c入力 a入力 b入力 c未入力 としても、毎回エラー1が行われてしまいます…
y_waiwai

2019/08/06 23:39

提示コードに誤りがあるとなにやってるこっちゃわからんよーになるんで、 先に言ったとおり、実際に走らせているコードをコピペで貼り付けてください
退会済みユーザー

退会済みユーザー

2019/08/07 00:01

テンプレートをベースにするならプレビューを見ながら投稿しよう
azuapricot

2019/08/07 00:02

a に何が入っているかとか、System.out.println() とか、デバッグとかで確認しましたか? 確認してないならまずそこからです。コーディングでデバッグができないのは致命的なのでまずは練習でしょうか。 値が入っているのにも関わらず最初のif文に入ってしまうなら、質問文に追記して下さい。
退会済みユーザー

退会済みユーザー

2019/08/07 00:07

出先で質問するということは出先のコード(守秘義務違反等)てことでいいのかな?
Saitamadesu4

2019/08/07 03:06

自宅で改めて質問します????‍♀️ ちなみにコード自体は自分で個人的に作っているものなので問題ありません。
guest

回答2

0

JSPやサーブレットから送信したあとに入力チェックをする場合は、その送信先のサーブレットやJSPで入力チェックを行います。

<form>から送信されたパラメータは、サーブレットのメソッドの引数に指定しているHttpServletRequestを使います。

例えば、

html

1<form action="CheckServlet"> 2 <input type="text" name="username"> 3 <input type="submit" value="送信"> 4</form>

に対して、これを受け取るサーブレットでは、

java

1String username = request.getParameter("username");

のようになります。

次から質問を投稿される場合は、焦らず、あとから編集もできますので、実際に問題が起こっていると思われる箇所のソースコードを記載されると明確な回答が得られるでしょう。

投稿2019/08/07 00:41

A-pZ

総合スコア12011

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

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

0

よくコード見てないので間違ってたらすみませんが、
nullじゃなくて空が入っているんじゃないですか?

if (userName2.equals(""))

これでuserName2がnullならヌルポが出るかと。

if ("".equals(userName2))

これだとuserName2がnullでもヌルポになりません。

投稿2019/10/30 14:36

junzi

総合スコア279

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問