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

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

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

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

Java

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

servlet

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

Q&A

解決済

2回答

4037閲覧

if elseをうまく作れないです。 どうぞよろしくお願いします。

edoooooo

総合スコア476

JSP

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

Java

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

servlet

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

0グッド

0クリップ

投稿2016/04/29 14:57

編集2016/04/30 05:25

doPostメソッドで、新規登録で入力した値がnullでないか?
またはその値が、すでにデータベースにないか?
そのどちらでもない場合に、新規登録を実行して、データベースに登録したいです。
どのように書けば、if else がしっかり組み立てられるのでしょうか?

java

1package servlet; 2 3import java.io.IOException; 4 5import java.util.List; 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12import javax.servlet.http.HttpSession; 13 14import model.Mutter; 15import model.User; 16import model.SetLogic; 17import model.LoginLogic; 18 19/** 20 * Servlet implementation class Set 21 */ 22@WebServlet("/Set") 23public class Set extends HttpServlet { 24 private static final long serialVersionUID = 1L; 25 26 /** 27 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 28 */ 29 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 30 31 32 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/set.jsp"); 33 dispatcher.forward(request, response); 34 35 } 36 37 /** 38 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 39 */ 40 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 41 42 request.setCharacterEncoding("UTF-8"); 43 String name=request.getParameter("name"); 44 String pass=request.getParameter("pass"); 45 46 47 User user=new User(name,pass); 48 49 if(name.length()==0 || pass.length()==0){ 50 request.setAttribute("newerrorMsg", "未入力があります。"); 51 52 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/set.jsp"); 53 dispatcher.forward(request, response); 54 55 } 56 57 //LoginLogicを使ってmutterListを取得 58 LoginLogic loginLogic=new LoginLogic(); 59 60 List<Mutter>mutterList=loginLogic.execute(user); 61 62 63 if(mutterList.size()!=0){ 64 request.setAttribute("setErrorMsg","すでに登録されています。"); 65 66 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/set.jsp"); 67 dispatcher.forward(request, response); 68 } 69 //mutter1とする 70 for(Mutter mutter1:mutterList){ 71 if(mutter1.getUserName().length()!=0||mutter1.getUserPass().length()!=0){ 72 request.setAttribute("setErrorMsg", "すでに登録されています。"); 73 74 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/set.jsp"); 75 dispatcher.forward(request, response); 76 77 }else{ 78 HttpSession session=request.getSession(); 79 session.setAttribute("loginUser",user); 80 81 User loginUser=(User)session.getAttribute("loginUser"); 82 83 Mutter mutter=new Mutter(loginUser.getName(),loginUser.getPass()); 84 SetLogic setLogic=new SetLogic(); 85 86 try{ 87 setLogic.execute(mutter); 88 }catch(ClassNotFoundException e){ 89 e.printStackTrace(); 90 } 91 92 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/setResult.jsp"); 93 dispatcher.forward(request, response); 94 } 95 } 96 } 97} 98 99

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

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

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

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

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

A-pZ

2016/04/29 15:42

if文やfor文など、処理が分岐または繰り返しするコードに関してはインデントをそろえたほうがデバッグしやすいですし、他の方も見やすいのでできればインデントは整えたほうがよいでしょう。データを取得していると思われる loginLogic.execute(user) の LoginLogic.execute(user)で行われている処理とその結果の内容がわからないですが、おそらく mutter1 の処理は不要かと思われます。
edoooooo

2016/04/30 05:23

ありがとうございます。修正してみます。
guest

回答2

0

ベストアンサー

java

1List<Mutter>mutterList=loginLogic.execute(user); 2 3if(mutterList.size()!=0){ 4 request.setAttribute("setErrorMsg","すでに登録されています。"); 5 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/set.jsp"); 6 dispatcher.forward(request, response); 7} 8//mutter1とする 9for(Mutter mutter1:mutterList){ 10 if(mutter1.getUserName().length()!=0||mutter1.getUserPass().length()!=0){ 11 request.setAttribute("setErrorMsg", "すでに登録されています。"); 12 RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/set.jsp"); 13 dispatcher.forward(request, response); 14 }

内容は細かくわからないのですが、おそらくここは入力された情報でデータベースを照合して、データが有ればエラーメッセージを出す、という仕様ですよね?
であれば、照合結果のリストが空でない(mutterList.size()!=0)時点で終わってますよね?
リストが空ならその次のfor文に入れませんし、空でないならデータベースにその情報が存在したということでその次のループに入る意味がないように思います。

投稿2016/04/29 15:19

swordone

総合スコア20651

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

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

edoooooo

2016/04/30 05:34

おっしゃられている通りの仕様で考えています。 リストがからの場合は、set.jspにrequestして、エラーメッセージを表示して、 からでない場合は、本当にからでないかgetUserNameで、確認しているのですが、確認は、一つ目だけでいいということでしょうか?
edoooooo

2016/04/30 06:11

無事作成できました。 ありがとうございました。
guest

0

新規登録できないということが判明したら例外を投げちゃえばいいのではないでしょうか。そして、例外を捕捉した場合は(いろんな原因で例外が飛んでくるわけですが)まとめて処理すればすっきりしそうです。

投稿2016/04/29 15:05

unau

総合スコア2468

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

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

edoooooo

2016/04/30 05:29

例外を投げて、例外を受け取った先で、処理ということができるのでしょうか? redirectで、if elseの処理によって飛ばして、その先でまたif elseするということでしょうか?これは、例外を投げるということではないですか?
edoooooo

2016/04/30 06:13

コードの2つ目のif elseを削除したところ、動かすことができました。 今後複雑になった時には、例外を使えるようにしていきたいと思います。 ありがとうございました。
unau

2016/04/30 14:53

例外処理の要諦は、「正常系と異常系の分離」「大域脱出」にあると考えています。 この辺り、先日別の質問に回答したので、よろしければ見てみてください。 https://teratail.com/questions/33005 Java は特に、メソッドのインタフェースとして「引数の数と型」「戻り値の型」「例外の型」を厳格に要求する、など、例外機構が言語仕様としてきちんと作られています。ですので、複雑な場合でなくても、積極的に例外を採り入れ、正常系と異常系を分離した書き方に慣れていた方が速くステップアップできると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問