前もってデータベースにcreateとinsertをしておいて、灘,1234と、name,passを指定しました。jspで灘,1234と入力しても、ログインできません。コードの要点を短くまとめ、説明しています。宜しくお願いします。
前もってデータベースに CREATE TABLE MUTTER(NAME VARCHAR(100) NOT NULL,PASS VARCHAR(100) NOT NULL);と入力しました。
続いて、INSERT INTO MUTTER(NAME,PASS)VALUES('灘','1234');
そして、INSERT INTO MUTTER(NAME,PASS)VALUES('綾部','2345');
と入力しました。
index.jspでは、ユーザー名の欄に 灘
パスワードの欄に 1234
を入力しています。
入力した値を
index.jsp
java
1<form action="/example24/Login" method="post"> 2ユーザー名:<input type="text" name="name"><br> 3パスワード:<input type="password" name="pass"><br> 4<input type="submit" value="ログイン">
これで送信して、
Login.java
java
1String name=request.getParameter("name"); 2 String pass=request.getParameter("pass"); 3 4 User user=new User(name,pass); 5 6 LoginLogic loginLogic=new LoginLogic(); 7 List<Mutter>mutterList=loginLogic.execute(user); 8 request.setAttribute("mutterList", mutterList); 9
受け取り、userを作りLoginLogicをnewして、executeメソッド(executeはMutter.DAOのfindAll()を呼ぶ)を呼び出す。
LoginLogic
java
1public List<Mutter>execute(User user){ 2 MutterDAO dao=new MutterDAO(); 3 List<Mutter>mutterList=dao.findAll(user); 4 return mutterList;
さらにdao.findAllを呼び出し、データベースからuserのnameとpassに一致しているNAMEとPASSを取得、そして、userName,userPassに代入
Mutter.DAO
java
1public List<Mutter>findAll(User user){ 2 3 String sql="SELECT NAME,PASS FROM MUTTER WHERE NAME=(?)AND PASS=(?)"; 4 PreparedStatement pStmt=conn.prepareStatement(sql); 5 pStmt.setString(1, user.getName()); 6 pStmt.setString(2, user.getPass()); 7 8 ResultSet rs=pStmt.executeQuery(); 9 10 while(rs.next()){ 11 12 String userName=rs.getString("NAME"); 13 String userPass=rs.getString("PASS"); 14 15 Mutter mutter=new Mutter(userName,userPass); 16 mutterList.add(mutter);
そしてmutterListをreturnする(returnされたmutterListはLogin.javaにいきrequest.setAttribute("mutterList", mutterList); このようにリクエストスコープに保存
loginResult.jsp
java
1 <% 2 //セッションスコープからユーザー情報を取得 3 User loginUser=(User)session.getAttribute("loginUser"); 4 5 //リクエストスコープに保存されたつぶやきリストを取得 6 List<Mutter>mutterList=(List<Mutter>)request.getAttribute("mutterList"); 7 8 %> 9<%if(mutterList!=null){ %> 10<% for(Mutter mutter:mutterList){ %> 11<%if(mutter.getUserName().length()!=0 && mutter.getUserPass().length()!=0){ %> 12<p>ログインに成功しました。</p> 13<p>ようこそ<%=loginUser.getName() %>さん</p> 14<%} %> 15<%}}else{ %> 16<p>ログインに失敗しました。</p> 17<a href="/example24/">TOPへ</a> 18<%}%>
if文で、データベースからリクエストパラメータの入力画面でユーザーが入力した値と同じnameとpassをSELECTしているはずなので、elseとならずにログイン成功
となるはずが、elseとなります。
おかしいところをどうかお教えください。
どうぞよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー