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

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

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

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

Java

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

servlet

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

Q&A

解決済

1回答

12320閲覧

入力フォームのみ入力チェックをjspではなくservlet上で行いたい

manmos

総合スコア55

JSP

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

Java

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

servlet

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

0グッド

2クリップ

投稿2016/07/10 16:18

現在WEBアプリを製作中です。
入力フォームに入力した内容でDBの内容を更新する部分を作成中なのですが、入力フォームの未入力チェックの部分で詰まっています。
現状jsp上で見入力チェックを行うことはできているのですが、これをjsp上ではなくservlet上で行うようにと言われまして、書き直したいのですがやり方がわかりません。
以下が現状のjspとservletになります。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta http-equiv="Content-Type" content="width=device-width, initial-scale=1"> <script type="text/javascript"> function check() {/* 未入力チェック */ var flag = false; if (document.form1.name.value == "") { // 「氏名」の入力をチェック flag = true; } else if (document.form1.nameHiragana.value == "") { // 「氏名(ひらがな)」の入力をチェック flag = true; } else if (document.form1.birthday.value == "") { // 「生年月日」の入力をチェック flag = true; } else if (document.form1.mailAddress.value == "") { // 「メールアドレス」の入力をチェック flag = true; } else if (document.form1.telephoneNumber.value == "") { // 「電話番号」の入力をチェック flag = true; } else if (document.form1.businessManager.value == "") { // 「担当管理営業」の入力をチェック flag = true; } else if (document.form1.enterDate.value == "") { // 「入社日」の入力をチェック flag = true; } else if (document.form1.retireDate.value == "") { // 「退職日」の入力をチェック flag = true; } // 設定終了 if (flag) { window.alert('必須項目に未入力がありました'); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 } else { return true; // 送信を実行 } } function goServletB() { document.getElementById('form1').action = "./List"; } </script> <title>社員詳細</title> </head> <body> <h1>社員詳細</h1> <form id='form1' action="./Detail" method="post" name="form1" onSubmit="return check()"> <input type="hidden" name="empId" value="${userinfo.employeeId}"> 氏名<input type="text" name="name" size="20" maxlength="20" value="${userinfo.name}"><br> 氏名(ひらがな)<input type="text" name="nameHiragana" size="20" maxlength="20" value="${userinfo.nameHiragana}"><br> 生年月日<input type="text" name="birthday" size="10" maxlength="10"value="${userinfo.birthday}"><br> 性別<input type="radio" name="sex" <c:if test="${userinfo.sex != '1'}">checked</c:if>value="0" /> 男 <input type="radio" name="sex" <c:if test="${userinfo.sex == '1'}">checked</c:if> value="1" /> 女<br> メールアドレス<input type="text" name="mailAddress" size="50" maxlength="50" value="${userinfo.mailAddress}"><br> 電話番号<input type="text" name="telephoneNumber" size="13" maxlength="13" value="${userinfo.telephoneNumber}"><br> 所属会社<select name="companyInfoId"> <c:forEach var="tmp" items="${abbreviationList}"> <option value="${tmp.companyId}" <c:if test="${tmp.companyId == userinfo.companyId}"> selected</c:if>> ${tmp.abbreviation}</option> </c:forEach> </select><br> 担当管理営業<input type="text" name="businessManager" size="20" maxlength="20" value="${userinfo.businessManager}"><br> 事業部<select name="department"> <option <c:if test="${userinfo.department == '0'}"> selected</c:if> value="0">開発</option> <option <c:if test="${userinfo.department == '1'}"> selected</c:if> value="1">NW</option> <option <c:if test="${userinfo.department == '2'}"> selected</c:if> value="2">検証</option> <option <c:if test="${userinfo.department == '3'}"> selected</c:if> value="3">オフィス</option> <option <c:if test="${userinfo.department == '4'}"> selected</c:if> value="4">管理</option> </select><br> 稼働状況<input type="radio" name="commissioningStatus" <c:if test="${userinfo.commissioningStatus != '1'}">checked</c:if> value="0" /> 稼働 <input type="radio" name="commissioningStatus" <c:if test="${userinfo.commissioningStatus == '1'}">checked</c:if> value="1" /> 未稼働<br> 入社日<input type="text" name="enterDate" size="10" maxlength="10" value="${userinfo.enterDate}"><br> 退職日<input type="text" name="retireDate" size="10" maxlength="10" value="${userinfo.retireDate}"><br> ステータス<select name="status"> <option <c:if test="${userinfo.status == '0'}"> selected</c:if> value="0">在職</option> <option <c:if test="${userinfo.status == '1'}"> selected</c:if> value="1">退職</option> <option <c:if test="${userinfo.status == '2'}"> selected</c:if> value="2">入社待</option> <option <c:if test="${userinfo.status == '3'}"> selected</c:if> value="3">入社取り消し</option> </select><br> <input type="submit" value="${buttonLabel}" > <input type="submit" value="戻る" onclick="goServletB();" > </form> </body> </html>
package servlet; (import部分は省略) /** * Servlet implementation class Detail */ @WebServlet("/DetailServlet") public class DetailServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub // セッション切れでログイン画面へ遷移 HttpSession session = request.getSession(); Logininfo login = (Logininfo) session.getAttribute("user"); if (login == null) { request.setAttribute("notsessionMsg", "セッション切れです"); RequestDispatcher dispatcher = request .getRequestDispatcher("/WEB-INF/jsp/login.jsp"); dispatcher.forward(request, response); return; } request.setCharacterEncoding("UTF-8"); String employeeId = request.getParameter("emplId"); if (employeeId == null) { // 登録の場合 CompanyInfoDao CompanyInfodaoArray = new CompanyInfoDao(); ArrayList<CompanyInfoDto> abbreviationListInfo = CompanyInfodaoArray.findAll(); request.setAttribute("abbreviationList", abbreviationListInfo); // 所属会社のプルダウンメニュー作成のための値を格納 request.setAttribute("buttonLabel", "登録"); request.getRequestDispatcher("/WEB-INF/jsp/detail.jsp").forward( request, response); return; } // 更新の場合 ProcessingDao ProcessingdaoArray = new ProcessingDao(); DetailInfoDto detailinfo = ProcessingdaoArray.findDetail(employeeId); DetailInfoDto userinfo = new DetailInfoDto(); userinfo.setEmployeeId(detailinfo.getEmployeeId()); userinfo.setName(detailinfo.getName()); (略) userinfo.setStatus(detailinfo.getStatus()); request.setAttribute("userinfo", userinfo);// 初期値に使用するユーザー情報を格納 request.setAttribute("buttonLabel", "更新");// submitボタン名を"更新"に CompanyInfoDao daoArray2 = new CompanyInfoDao(); ArrayList<CompanyInfoDto> abbreviationListInfo = daoArray2.findAll(); request.setAttribute("abbreviationList", abbreviationListInfo); // 所属会社のプルダウンメニュー作成のための値を格納 request.getRequestDispatcher("/WEB-INF/jsp/detail.jsp").forward( request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse * response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String employeeId = request.getParameter("empId"); String name = request.getParameter("name"); String name_hiragana = request.getParameter("nameHiragana"); String birthday = request.getParameter("birthday"); String sex = request.getParameter("sex"); String mail_address = request.getParameter("mailAddress"); String telephone_number = request.getParameter("telephoneNumber"); String company_id = request.getParameter("companyInfoId"); String business_manager = request.getParameter("businessManager"); String department = request.getParameter("department"); String commissioning_status = request .getParameter("commissioningStatus"); String enter_date = request.getParameter("enterDate"); String retire_date = request.getParameter("retireDate"); String status = request.getParameter("status");// detail.jspに入力された値を格納 ProcessingDao Processingdao = new ProcessingDao(); // Daoクラス生成 // employeeIdが存在しない場合登録処理へ if (employeeId == "") { try { Processingdao.InsertInformation(employeeId, name, name_hiragana, birthday, sex, mail_address, telephone_number, company_id, business_manager, department, commissioning_status, enter_date, retire_date, status); } catch (Exception e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } // employeeIdが存在する場合更新処理へ } else if (employeeId != "") { try { Processingdao.UpdateInformation(employeeId, name, name_hiragana, birthday, sex, mail_address, telephone_number, company_id, business_manager, department, commissioning_status, enter_date, retire_date, status); } catch (Exception e) { // TODO 自動生成された catch ブロック e.printStackTrace(); } } response.sendRedirect("./ListServlet"); return; } }

上記をどのように書き直せばよろしいでしょうか?
未入力項目がある場合にダイアログを表示して更新をストップするようにしてあるのでこの形式を維持できるとありがたいです。

以上です、ご教示のほど宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

動作のシナリオは、以下のようになるかと思います。

1)ブラウザではjavascriptで入力チェックはせずに、入力されたままのデータをサーバに送ります。

2)サーバー側で受信したデータをsarvletで未入力や不適切データ(電話番号に市外局番が無いなど)をチェックします。

3-1)2)のチェックで問題が無ければ
データをDBを更新し、更新された結果を表示する画面(HTML)を返します。
ブラウザに更新結果が表示されたところで、DBの更新の動作は完了。

3-2)2)のチェックで問題があれば
チェックで問題が無かった項目には送られてきた値を入れ、チェックで問題があった項目には「未入力です」などの注意書き(できれば赤字などで目立たせる)を付記した入力画面(HTML)を返します。
ユーザは、ブラウザに表示された入力画面(「未入力です」などの注意書き付き)を見て、必要な修正や記入をして、送信します。 1)に移ります。

これで、servletが何をすれば良いのかが判るのではないでしょうか。

投稿2016/07/11 06:25

coco_bauer

総合スコア6915

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

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

manmos

2016/07/14 13:40

なんとかServlet上で処理ができるようになりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問