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

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

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

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

Java

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

servlet

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

Q&A

解決済

1回答

1890閲覧

nameとパスワードを指定してログインしているのですが、ログインできません。

edoooooo

総合スコア476

JSP

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

Java

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

servlet

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

0グッド

0クリップ

投稿2016/04/24 13:08

前もってデータベースに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となります。
おかしいところをどうかお教えください。
どうぞよろしくお願いします。

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

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

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

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

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

coco_bauer

2016/04/25 02:59

JSPのpageタグに指定したエンコードはどうなっていますか?ユーザ名が漢字なので文字化け(文字エンコードの不一致)が原因かもしれません。INSERT文、JSP共に、'難'を'NADA'に変えて、動作させてみてください。それでうまく動作するなら、エンコードが原因です。
edoooooo

2016/04/25 04:39

ありがとうございます。 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>このようになっていたのですが、 昨日は、何度実行しても、動かなかったのが、今朝、実行したら、elseの処理は、<a href="/example24>トップへ</a>は実行されないのですが、ログインの⚫️❌はしっかりと、判定できるようになっていました。
guest

回答1

0

自己解決

昨日は、何度実行してみても、ログインとだけしか表示されていなかったのに、なぜか、今日実行してみたら、しっかりと、思っている通りに動きました。eclipseの再起動もしていないのに、理由は、本当にわかりませんが、動いたので、自己解決と、させていただきます。皆様、ありがとうございました。

投稿2016/04/25 04:41

edoooooo

総合スコア476

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問