実現したいこと
ログイン画面で、入力チェックをするバリデーションと入力したデータでDBを検索し、データを照合するチェックを行い、エラーがあればエラー画面へ、エラーがなければindex画面へ、と遷移させたいです。
質問詳細
現在の書き方だと、バリデーションとDB検索を一つのif文であらわしていますが、
エラー時、try-catch時と複数回エラー画面に遷移する書き方になるため
書き方が冗長気味なことが気になります。
もっとシンプルな書き方があれば、教えて頂けないでしょうか?
該当のソースコード
Java
1 */ 2 protected void doPost(HttpServletRequest request, HttpServletResponse response) 3 throws ServletException, IOException, NoResultException { 4 5 String code = request.getParameter("emp_number"); 6 String password = request.getParameter("emp_pass"); 7 String error = ""; 8 9 EntityManager em = DBUtil.createEntityManager(); 10 11 //入力エラーチェック 12 if (code == null || code.equals("")) { 13 //社員番号ブランクエラーによるエラー画面遷移 14 error = "社員番号がブランクです"; 15 request.setAttribute("error", error); 16 RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/error/loginerrors.jsp"); 17 rd.forward(request, response); 18 19 } else if (password == null || password.equals("")) { 20 //パスワードブランクエラーによるエラー画面遷移 21 error = "パスワードがブランクです"; 22 request.setAttribute("error", error); 23 RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/error/loginerrors.jsp"); 24 rd.forward(request, response); 25 26 } else { 27 //入力バリデーションクリア 28 try { 29 Employees employees = (Employees) em 30 .createNativeQuery("select * from employees where code =:code", Employees.class) 31 .setParameter("code", code) 32 .getSingleResult(); 33 34 request.setAttribute("employees", employees); 35 RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/layout/index.jsp"); 36 rd.forward(request, response); 37 38 } catch (NoResultException e) { 39 //検索データ0件 40 e.printStackTrace(); 41 error = "社員番号未登録です"; 42 request.setAttribute("error", error); 43 RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/error/loginerrors.jsp"); 44 rd.forward(request, response); 45 46 } catch (NonUniqueResultException e) { 47 //検索データが複数件 48 e.printStackTrace(); 49 error = "社員番号が複数あります"; 50 request.setAttribute("error", error); 51 RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/error/loginerrors.jsp"); 52 rd.forward(request, response); 53 54 } 55 56 } 57 58 } 59 60}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/02/10 07:55