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

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

ただいまの
回答率

90.51%

  • Java

    15830questions

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

  • JSP

    1034questions

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

  • servlet

    516questions

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

画面遷移先でパラメータを取得し、処理を分けたい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,139

n000n00

score 15

servletで受け取った値で処理を分岐させようとしていますが、
入力チェックの処理を書いたところExceptionが発生します。

未入力で登録もしくは変更を押した場合に、
処理を最初からにしたいのですが、if (error || error2) の error にfalseがセットされていると思うのですが、elseに処理が移らない状況です。

恐れ入りますが、ご教授いただけないでしょうか。
よろしくお願いします。

例外:
javax.servlet.ServletException: java.lang.NumberFormatException: For input string: ""
websample.StartServlet.doPost(StartServlet.java:106)

package websample;

import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class StartServlet extends HttpServlet {
    AccountDAO dao = new AccountDAO();
    List<Account> list = new ArrayList<Account>();

    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/plain; charset=UTF-8");
        try {
            dao = new AccountDAO();
            list = dao.findAll();
            request.setAttribute("list", list);
            request.getRequestDispatcher("/websample/select.jsp").forward(request, response);
        } catch (Exception e) {
            throw new ServletException(e);
        }
    }

    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String Search = request.getParameter("検索");
        String Registration = request.getParameter("登録");
        String update = request.getParameter("変更");
        String delete = request.getParameter("削除");

        String id = null;
        String name = null;
        String money1 = null;
        String money2 = null;
        String keyword = request.getParameter("keyword");
        String message = null;
        boolean error = false;
        boolean error2 = false;
        String errorMessage = null;

        HttpSession session = request.getSession(true);

        id = (String) session.getAttribute("ID");
        name = request.getParameter("keyword1");
        money1 = request.getParameter("keyword2");
        money2 = request.getParameter("keyword3");

        System.out.println("54 ID=" + id);
        System.out.println("55 name=" + name);
        System.out.println("56 money1=" + money1);
        System.out.println("57 money2=" + money2);

        System.out.println("59 Search=" + Search);
        System.out.println("60 Registration=" + Registration);
        System.out.println("61 update=" + update);
        System.out.println("62 delete=" + delete);

        response.setContentType("text/plain; charset=UTF-8");

        if (id == null || id.length() == 0 || name == null || name.length() == 0 || money1 == null
                || money1.length() == 0 || money2 == null || money2.length() == 0) {
            error = false;
        }

        if (Search == null && Registration == null && update == null && delete == null) {
            try {
                list = dao.findAll();
                request.setAttribute("list", list);
                request.getRequestDispatcher("/websample/select.jsp").forward(request, response);
            } catch (SQLException e) {
                throw new ServletException(e);
            }
        } else if (Search != null || Registration != null || update != null || delete != null) {
            error2 = true;
        }

        System.out.println("80 error1=" + error);
        System.out.println("81 error2=" + error2);

        if (error || error2) {
            if (Search != null && Search.equals("検索")) {
                try {
                    list = dao.whereSelect(keyword);
                    message = list.size() + "件ヒット!";
                    request.setAttribute("list", list);
                    request.setAttribute("message", message);
                    request.getRequestDispatcher("/websample/select.jsp").forward(request, response);
                } catch (Exception e) {
                    throw new ServletException(e);
                }
            } else if (Registration != null && Registration.equals("登録")) {
                try {
                    int cnt = dao.findNew(name, money1, money2);
                    message = cnt + "件登録しました";
                    request.setAttribute("message", message);
                    request.getRequestDispatcher("/websample/select.jsp").forward(request, response);
                } catch (Exception e) {
                    throw new ServletException(e);
                }
            } else if (update != null && update.equals("変更")) {
                try {
                    int cnt = dao.findUpDate(name, money1, money2, id);
                    message = cnt + "件変更しました";
                    request.setAttribute("message", message);
                    request.getRequestDispatcher("/websample/select.jsp").forward(request, response);
                } catch (Exception e) {
                    throw new ServletException(e);
                }
            }
        } else if (delete != null && delete.equals("削除")) {
            try {
                int cnt = dao.findDelete(id);
                message = cnt + "件削除しました";
                request.setAttribute("message", message);
                request.getRequestDispatcher("/websample/select.jsp").forward(request, response);
            } catch (Exception e) {
                throw new ServletException(e);
            }

        } else {
            try {
                errorMessage = "入力漏れがあるよ";
                System.out.println("124 servlet error=" + errorMessage);
                request.setAttribute("error", errorMessage);
                request.getRequestDispatcher("/websample/select.jsp").forward(request, response);
            } catch (Exception e) {
                throw new ServletException(e);
            }
        }
    }
}
<%@page contentType="text/html; charset=UTF8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>accountDB</title>
<link rel="stylesheet" href="select.css">
</head>
    <body>
        <c:if test="${message != null}">
            <p>処理結果:${message}</p>
        </c:if>
        <c:if test="${error != null}">
            <p>${error}</p>
        </c:if>
        <form name="f" method="POST" action="../DBweb/account">
            <input type="text" name="keyword" value="${keyword}">
            <input type="submit" name="検索" value="検索">
            <input type="button" name="新規" value="新規" onClick="document.location='websample/select_input.jsp?新規=新規';">

        <c:if test="${!empty list}">
            <table border="1">
                <tr>
                    <th>ID</th>
                    <th>NAME</th>
                    <th>MONEY</th>
                    <th>MONEY2</th>
                </tr>
            <c:forEach var="account" items="${list}">
                <tr>
                    <td><a href="websample/select_input.jsp?変更=変更&ID=${account.id}">${account.id}</a></td>
                    <td>${account.name }</td>
                    <td>${account.money }</td>
                    <td>${account.money2 }</td>
                </tr>
            </c:forEach>
            </table>
        </c:if>
        </form>
    </body>
</html>
<%@page contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <title>入力画面</title>
    <link rel="stylesheet" href="select.css">
</head>
<body>
    <% String chenge = request.getParameter("変更"); %>
    <% String x = request.getParameter("新規"); %>
    <% String id = request.getParameter("ID"); %>
    <% String error = (String) request.getAttribute("error"); %>
    <% System.out.println("chenge=" + chenge); %>
    <% System.out.println("x=" + x); %>
    <% System.out.println("error=" + error); %>
    <% session.setAttribute("ID", id); %>

    <% if (error != null || x == null && chenge.equals("変更")){ %>
        <p>変更</p>
        <form method="POST" action="../account">
            <div>
                <label for="name">ID</label>
                ${ID}
            </div>
            <div>
                <label for="name">NAME</label>
                <input type="text" name="keyword1"><br>
            </div>
            <div>
                <label for="money">MONEY1</label>
                <input type="text" name="keyword2"><br>
            </div>
            <div>
                <label for="money">MONEY2</label>
                <input type="text" name="keyword3"><br>
            </div>
            <input type="submit" name="変更" value="変更" onClick="return confirm('変更しますか?')">
            <input type="submit" name="削除" value="削除" onClick="return confirm('削除しますか?')">
            <input type="submit" name="戻る" value="戻る" >
        </form>
    <% } else if (chenge == null && x.equals("新規")){ %>
        <p>登録</p>
        <form method="POST" action="../account">
            <div>
                <label for="name">NAME</label>
                <input type="text" name="keyword1"><br>
            </div>
            <div>
                <label for="money">MONEY1</label>
                <input type="text" name="keyword2"><br>
            </div>
            <div>
                <label for="money">MONEY2</label>
                <input type="text" name="keyword3"><br>
            </div>
            <input type="submit" name="登録" value="登録" onClick="return confirm('登録しますか?')">
            <input type="submit" name="戻る" value="戻る" >
        </form>
    <% } %>
</body>
</html>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

check解決した方法

0

申し訳ございません。
論理演算子の考え方に間違えがあったようです。

ありがとうございました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • Java

    15830questions

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

  • JSP

    1034questions

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

  • servlet

    516questions

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