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

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

ただいまの
回答率

88.83%

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

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,523

Saitamadesu4

score 6

再掲致します。
表題の通り、
①まず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に詳しい方、お助け下さい。
長文駄文となってしまい誠に申し訳ございません。どうかご回答よろしくお願いいたします。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"  %>
<%@ taglib prefix= "c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cafede Botti</title>
</head>
<body>
<h2>新規ユーザー登録</h2>


<form action = "/CafedeBotti/FC" method = "post">

<div align = center>
Name<input type = "text" name = "userName2"><br>
Pass1<input type = "text" name = "newPassword"><br>
Pass2<input type = "text" name = "newPassword2">




<input type = "hidden" name = "ButtonID" value = "a006">

<input type = "submit" value = "submit">
</div>
</form>













<!-- <form action ="/CafedeBotti/FC" method = "post"> -->
<!-- <input type = text name = "userName2"><br> -->
<!-- <!-- パスワードを入力してください:<input type = "text" name = "newPassword"><br> -->
<!-- <!-- 再度パスワードを入力してください:<input type = "text" name = "newPassword2"> -->
<!-- <input type = "hidden" name = "ButtonID" value = "a006"> -->
<!-- <input type  ="submit" value = "登録"> -->
<!-- </form> -->
<!-- </div> -->


<c:out value = "${message2.message}"/>

</body>
</html>
package Servlet;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import model.FilterSearchLogic;
import model.Message;
import model.ShopList;
import model.User;
import model.UserLoginLogic;

/**
 * Servlet implementation class FrontController
 */
@WebServlet("/FC")
public class FrontController extends HttpServlet {
    private static final long serialVersionUID = 1L;
    ArrayList<ShopList> arraylist;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public FrontController() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("UTF-8");

        String ButtonID = request.getParameter("ButtonID");
        if(ButtonID == null) {
            RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/Top.jsp");
            dispatcher.forward(request, response);
        }else if(ButtonID.equals("a001")) {
            RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/FilterdSearch.jsp");
            dispatcher.forward(request, response);
        }else if (ButtonID.equals("a002")){


        }else if (ButtonID.equals("a003")) {
            String wifi = request.getParameter("Wifi");
            String customerBase = request.getParameter("CustomerBase");

            if(wifi == null || customerBase == null) {
                Message message = new Message ("全てのradioboxをマークしてください。");
                request.setAttribute("message", message);
                RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/FilterdSearch.jsp");
                dispatcher.forward(request, response);
            }

            //Wifi,CustomerBaseが共にnull出ない場合、
            else {
                ShopList ShopList = new ShopList();
                ShopList.setWifi(wifi);
                ShopList.setCustomerBase(customerBase);

                //FilterSearchLogicメソッドを呼び出す。
                FilterSearchLogic FilterSearchLogic  = new FilterSearchLogic();
                arraylist =    FilterSearchLogic.FilterSearchLogicExecute(ShopList);
                request.setAttribute("list",arraylist);
                //FilterdSearchResult.jspにフォワードする
                RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/FilterdSearchResult.jsp");
                dispatcher.forward(request, response);
            }
        }else if (ButtonID.equals("a005")) {
            RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp");
            dispatcher.forward(request, response);
        }
    }


    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
        // TODO Auto-generated method stub

        //ログイン画面から送られてきたrequestからuserNameとuserPassを取り出す。
        request.setCharacterEncoding("UTF-8");
        //requestインスタンスからButtonIDを取り出す。
        String ButtonID =    request.getParameter("ButtonID");
        //String userName = request.getParameter("userName");
        //String userPass = request.getParameter("userPass");
        //userNameかuserPassが未入力だとMessageインスタンスを生成し、リクエストスコープに格納する。
        if(ButtonID.equals("a004")) {
            String userName = request.getParameter("userName");
            String userPass = request.getParameter("userPass");

            if (userName == null || userPass == null) {
                Message message2 = new Message("ユーザー名またはパスワードが未入力です。");
                request.setAttribute("message", message2);
                RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/LoginFail.jsp");
                dispatcher.forward(request, response);
            }else {

                //Userインスタンスを生成。
                User user = new User (userName,userPass);
                boolean loginistrue;


                //UserLoginLogicメソッドを呼び出す。
                UserLoginLogic UserLoginLogic = new UserLoginLogic();

                loginistrue = UserLoginLogic.loginExcecute(user);


                //loginistrueの値で条件分岐
                if (loginistrue == true) {
                    //SessionScopeに名前のみ保存
                    HttpSession session = request.getSession();
                    session.setAttribute("user", user);
                    //ログイン結果画面にフォワードする。
                    RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/LoginSuccess.jsp");
                    dispatcher.forward(request, response);
                }else {
                    Message message = new Message("ユーザー名またはパスワードが正しくありません。");
                    request.setAttribute("message", message);
                    RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/LoginFail.jsp");
                    dispatcher.forward(request, response);
                }
            }
        }else if (ButtonID.equals("a006")) {
            String userName2 = request.getParameter("userName2");
            String userPass1 = request.getParameter("newPassword");
            String userPass2 = request.getParameter("newPassword2");



            if (userName2 == null) {
                Message message2 = new Message("ユーザー名が未入力です。");
                request.setAttribute("message2",message2 );
                RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp");
                dispatcher.forward(request, response);

            }else if(userPass1 == null) {
                Message message2 = new Message("パスワードが未入力です。");
                request.setAttribute("message2",message2 );
                RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp");
                dispatcher.forward(request, response);


            }else if(userPass2 == null) {
                Message message2 = new Message("再入力パスワードが未入力です。");
                request.setAttribute("message2",message2 );
                RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp");
                dispatcher.forward(request, response);
            }
            else if(userPass1.equals(userPass2)) {
                User user2 = new User(userName2,userPass1);
                request.setAttribute("user2",user2 );
                RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp");
                dispatcher.forward(request, response);
            }else {
                Message message2 = new Message("パスワードと再入力パスワードが一致しません。");
                request.setAttribute("message2",message2 );
                RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/NewRegist.jsp");
                dispatcher.forward(request, response);
            }
        }
    }
}
package model;

public class Message {

    //メンバ変数
    private String message;

    //引数1コンストラクタ
    public Message (String message) {
        this.message = message;

    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Cafede Botti</title>
</head>
<body>

<h2>Cafede Botti</h2>

<form action = "/CafedeBotti/FC" method = "post">

<div align = center>
Name<input type = "text" name = "userName"><br>
Pass<input type = "password" name = "userPass"><br>


<input type = "hidden" name = "ButtonID" value = "a004">
<input type = "submit" value = "submit">
</div>
</form>
<div align = "center">
<a href = "/CafedeBotti/FC?ButtonID=a005" > 初めての方はこちら </a><br>
</div>




</body>
</html>

Java #jsp #質問 #エンジニア

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • azuapricot

    2019/08/07 09:02

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

    キャンセル

  • asahina1979

    2019/08/07 09:07

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

    キャンセル

  • Saitamadesu4

    2019/08/07 12:06

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

    キャンセル

回答 2

+1

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

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

例えば、

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


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

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

のようになります。

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

if (userName2.equals(""))


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

if ("".equals(userName2))


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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 88.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る