nameとパスワードを指定してログインしているのですが、ログインできません。
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 1,109
前もってデータベースに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
<form action="/example24/Login" method="post">
ユーザー名:<input type="text" name="name"><br>
パスワード:<input type="password" name="pass"><br>
<input type="submit" value="ログイン">
これで送信して、
Login.java
String name=request.getParameter("name");
String pass=request.getParameter("pass");
User user=new User(name,pass);
LoginLogic loginLogic=new LoginLogic();
List<Mutter>mutterList=loginLogic.execute(user);
request.setAttribute("mutterList", mutterList);
受け取り、userを作りLoginLogicをnewして、executeメソッド(executeはMutter.DAOのfindAll()を呼ぶ)を呼び出す。
LoginLogic
public List<Mutter>execute(User user){
MutterDAO dao=new MutterDAO();
List<Mutter>mutterList=dao.findAll(user);
return mutterList;
さらにdao.findAllを呼び出し、データベースからuserのnameとpassに一致しているNAMEとPASSを取得、そして、userName,userPassに代入
Mutter.DAO
public List<Mutter>findAll(User user){
String sql="SELECT NAME,PASS FROM MUTTER WHERE NAME=(?)AND PASS=(?)";
PreparedStatement pStmt=conn.prepareStatement(sql);
pStmt.setString(1, user.getName());
pStmt.setString(2, user.getPass());
ResultSet rs=pStmt.executeQuery();
while(rs.next()){
String userName=rs.getString("NAME");
String userPass=rs.getString("PASS");
Mutter mutter=new Mutter(userName,userPass);
mutterList.add(mutter);
そしてmutterListをreturnする(returnされたmutterListはLogin.javaにいきrequest.setAttribute("mutterList", mutterList); このようにリクエストスコープに保存
loginResult.jsp
<%
//セッションスコープからユーザー情報を取得
User loginUser=(User)session.getAttribute("loginUser");
//リクエストスコープに保存されたつぶやきリストを取得
List<Mutter>mutterList=(List<Mutter>)request.getAttribute("mutterList");
%>
<%if(mutterList!=null){ %>
<% for(Mutter mutter:mutterList){ %>
<%if(mutter.getUserName().length()!=0 && mutter.getUserPass().length()!=0){ %>
<p>ログインに成功しました。</p>
<p>ようこそ<%=loginUser.getName() %>さん</p>
<%} %>
<%}}else{ %>
<p>ログインに失敗しました。</p>
<a href="/example24/">TOPへ</a>
<%}%>
if文で、データベースからリクエストパラメータの入力画面でユーザーが入力した値と同じnameとpassをSELECTしているはずなので、elseとならずにログイン成功
となるはずが、elseとなります。
おかしいところをどうかお教えください。
どうぞよろしくお願いします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
check解決した方法
-1
昨日は、何度実行してみても、ログインとだけしか表示されていなかったのに、なぜか、今日実行してみたら、しっかりと、思っている通りに動きました。eclipseの再起動もしていないのに、理由は、本当にわかりませんが、動いたので、自己解決と、させていただきます。皆様、ありがとうございました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
coco_bauer
2016/04/25 11:59
JSPのpageタグに指定したエンコードはどうなっていますか?ユーザ名が漢字なので文字化け(文字エンコードの不一致)が原因かもしれません。INSERT文、JSP共に、'難'を'NADA'に変えて、動作させてみてください。それでうまく動作するなら、エンコードが原因です。
edoooooo
2016/04/25 13:39
ありがとうございます。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>このようになっていたのですが、
昨日は、何度実行しても、動かなかったのが、今朝、実行したら、elseの処理は、<a href="/example24>トップへ</a>は実行されないのですが、ログインの⚫️❌はしっかりと、判定できるようになっていました。