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

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

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

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

Java

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

servlet

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

Q&A

解決済

1回答

643閲覧

フォームから入力されたあたいをチェックしてエラーメッセージ表示

rev_timo

総合スコア117

JSP

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

Java

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

servlet

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

0グッド

0クリップ

投稿2018/07/10 12:56

Jspフォームから送信された値をservletにチェックしてエラーメッセージを表示することですが、
条件は以下の通りです、
会員番号【必須】:0以上整数8桁
名前【必須】:1~32 文字のテキスト
メールアドレス:
メールアドレス【確認用】:

ある程度までできているんですが、途中で気づいたのは同じものを何回も書いていると、無駄なことやっていると気づいたんですが、私の書き方よりもっと効率よい書き方ありますか。
普通はバリテーションチェックは同のように行なっていますか

よろしくお願いいたします。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); String emp_input_date = request.getParameter("year")+"-"+request.getParameter("month")+"-"+request.getParameter("day"); System.out.println("1"); // 社員番号とが必須、8桁以上、社員名は 1~32 文字のテキスト if (request.getParameter("empid").length() == 0 && request.getParameter("name").length()== 0) { System.out.println("2"); request.setAttribute("imp_id_errmsg", "0以上整数8桁以内で入力してください"); request.setAttribute("imp_name_errmsg", "氏名は 1~32 文字のテキストで入力してください"); if (request.getParameter("email").equals(request.getParameter("confirm_mail")) == false) { request.setAttribute("imp_email_confirm_errmsg", "確認入力と一致しません"); } System.out.print(request.getParameter("dept")); request.setAttribute("value_remain", inp_value(request.getParameter("empid"), request.getParameter("name"), request.getParameter("email"), request.getParameter("confirm_mail"), request.getParameter("gender"), request.getParameter("dept"))); RequestDispatcher view = request.getRequestDispatcher("/add.jsp"); view.forward(request, response); } else if (request.getParameter("empid").length() > 8) { System.out.println("3"); // 社員番号エラーメッセージ request.setAttribute("imp_id_errmsg", "0以上整数8桁以内で入力してください"); if (request.getParameter("email").equals(request.getParameter("confirm_mail")) == false) { request.setAttribute("imp_email_confirm_errmsg", "確認入力と一致しません"); } if (request.getParameter("name").length() > 32 || request.getParameter("name").length() == 0) { request.setAttribute("imp_name_errmsg", "氏名は 1~32 文字のテキストで入力してください"); } request.setAttribute("value_remain", inp_value(request.getParameter("empid"), request.getParameter("name"), request.getParameter("email"), request.getParameter("confirm_mail"), request.getParameter("gender"), request.getParameter("dept"))); RequestDispatcher view = request.getRequestDispatcher("/add.jsp"); view.forward(request, response); } else if (isNumber(request.getParameter("empid")) == false || Integer.parseInt(request.getParameter("empid")) == 0) { System.out.println("4"); request.setAttribute("imp_id_errmsg", "0以上整数8桁以内で入力してください"); request.setAttribute("value_remain", inp_value(request.getParameter("empid"), request.getParameter("name"), request.getParameter("email"), request.getParameter("confirm_mail"), request.getParameter("gender"), request.getParameter("dept"))); if (request.getParameter("name").length() > 32 || request.getParameter("name").length() == 0) { request.setAttribute("imp_name_errmsg", "氏名は 1~32 文字のテキストで入力してください"); } if (request.getParameter("email").equals(request.getParameter("confirm_mail")) == false) { request.setAttribute("imp_email_confirm_errmsg", "確認入力と一致しません"); } RequestDispatcher view = request.getRequestDispatcher("/add.jsp"); view.forward(request, response); } else if (request.getParameter("name").length() > 32) { System.out.println("5"); // 社員名必須と1~32 文字のテキストエラーメッセージ request.setAttribute("imp_name_errmsg", "氏名は 1~32 文字のテキストで入力してください"); request.setAttribute("value_remain", inp_value(request.getParameter("empid"), request.getParameter("name"), request.getParameter("email"), request.getParameter("confirm_mail"), request.getParameter("gender"), request.getParameter("dept"))); if (request.getParameter("email").equals(request.getParameter("confirm_mail")) == false) { request.setAttribute("imp_email_confirm_errmsg", "確認入力と一致しません"); } RequestDispatcher view = request.getRequestDispatcher("/add.jsp"); view.forward(request, response); } else if (request.getParameter("email").equals(request.getParameter("confirm_mail")) == false) { System.out.println("6"); // メールアドレスは確認用フィールド request.setAttribute("imp_email_confirm_errmsg", "確認入力と一致しません"); request.setAttribute("value_remain", inp_value(request.getParameter("empid"), request.getParameter("name"), request.getParameter("email"), request.getParameter("confirm_mail"), request.getParameter("gender"), request.getParameter("dept"))); RequestDispatcher view = request.getRequestDispatcher("/add.jsp"); view.forward(request, response); } else { System.out.println("8"); Employee employee = new Employee(); employee.setEmpID(Integer.parseInt(request.getParameter("empid"))); employee.setName(request.getParameter("name")); employee.setEmail(request.getParameter("email")); employee.setGender(Integer.parseInt(request.getParameter("gender"))); employee.setDept(request.getParameter("dept")); if (emp_input_date.length() == 0) { employee.setEmpdate(null); } else { try { Date empdate = new SimpleDateFormat("yyyy-MM-dd").parse(emp_input_date); System.out.println("入会日"+ empdate); employee.setEmpdate(empdate); } catch (ParseException e){ e.printStackTrace(); RequestDispatcher view = request.getRequestDispatcher("/error_page.jsp"); view.forward(request, response); } } if (dao.addEmployee(employee) == false) { RequestDispatcher view = request.getRequestDispatcher("/error_page.jsp"); view.forward(request, response); } else { RequestDispatcher view = request.getRequestDispatcher("/register_successful.jsp"); request.setAttribute("employees", dao.getAllEmployees()); view.forward(request, response); } } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

Hibernate Validator を使うとかどうでしょう?

あらかじめ、検証対象となる変数をメンバーに持つクラスを作っておいてそこにHibernate Validatorで定義されたアノテーションで検証する内容を指定します。 @NotNull,@Length,@Min,@Maxなどが使えます。

java

1public class EmployeeForm{ 2 @NotNull 3 @Length(min=1, max=8) 4 @Min(0) 5 @Max(99999999) 6 private String empid; 7 @NotNull 8 @Length(min = 1, max = 32) 9 private String name; 10 private String email; 11 private String gender; 12 private String dept; 13}

上記のクラスは長くなるのでsetter,getter省きました。

リクエストパラメーターから上のクラスEmployeeFormに値をセットして

java

1EmployeeForm form = new EmployeeForm(); 2// リクエストパラメーターから値をセット 3form.setEmpid(xxx); 4 5Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); 6Set<ConstraintViolation<SampleBean>> result = validator.validate(form);

とすると、バリデーションに引っかかった場合はresultにエラーが返ってくる感じです。

【参考記事】

投稿2018/07/10 15:29

euledge

総合スコア2404

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

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

rev_timo

2018/07/10 23:11

大変参考になりまして、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問