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

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

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

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

servlet

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

Q&A

解決済

1回答

11462閲覧

ログイン画面を作りましたが、データベース認証がうまくいきません。

Okuto

総合スコア13

Java

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

servlet

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

0グッド

0クリップ

投稿2018/06/11 12:38

編集2018/06/11 13:23
Login.jsp <%@ page contentType="text/html;charset=UTF-8" import="java.sql.*, javax.naming.*, javax.sql.*" %> <!DOCTYPE html> <html> <link rel="stylesheet" type="text/css" href="CSS/Login.css"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>ログイン</title> </head> <body> <FORM method="POST" action= "${pageContext.request.contextPath}/Login"> <h1>ログイン</h1> ID<br> <INPUT type="text" name="number"><br><br> パスワード<br> <INPUT type="password" name="password"><br><br> <INPUT type="submit" value="ログイン" name="login"><br> <span class="label label-danger">${ErrMsg}</span> </FORM> </body> </html>
Login.java package webApplication; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.sql.DataSource; @WebServlet("/Login") public class Login extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ String num = request.getParameter("number"); String pass = request.getParameter("password"); System.out.println("number:"+ num); System.out.println("password:"+ pass); Connection db = null; java.sql.PreparedStatement ps = null; ResultSet rs = null; try { Context context = new InitialContext(); DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/kensyu"); db = ds.getConnection(); ps = db.prepareStatement("SELECT * FROM Test"); rs = ps.executeQuery(); HttpSession session = request.getSession(true); while(rs.next()) { if(num.equals(rs.getString("Test_id")) == true && pass.equals(rs.getString("password")) == true) { session = request.getSession(true); response.sendRedirect("EmpInfoServlet"); return; }else{ request.setAttribute("ErrMsg", "IDかパスワードが違います。"); RequestDispatcher dispatch = request.getRequestDispatcher("/Login.jsp"); dispatch.forward(request, response); return; } } }catch(NamingException e) { e.printStackTrace(); }catch(SQLException e) { e.printStackTrace(); }finally { try { if(rs != null){rs.close();} if(ps != null){ps.close();} if(db != null){db.close();} }catch(SQLException e) { e.printStackTrace(); } } return; } }

データベースを照合してログイン画面を作って次のページへ~という処理をしたいのですが
このソースコードで実行してみるとデータベース上の一番上のデータしか
照合できず、他のデータはログイン出来なくなってしまいました。
まだJavaを初めて1ヶ月未満ですので、説明不足だと思いますが
何かアドバイスなどありましたら、よろしければご教授いただきたい所存です。
よろしくお願いいたします。

開発環境 Eclipse
サーブレット Tomcat
データベース MySQL

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/06/11 13:12

if文うんぬんよりかなり前の問題
Okuto

2018/06/11 13:19

そうだったんですか・・・・。 申し訳ありません、Java始めたばかりでして・・・・。
m.ts10806

2018/06/12 01:23

「うまくいかない」「ダメだった」では起きている現象は 何も伝わらないので要約せずきちんと具体的に書いてください
guest

回答1

0

ベストアンサー

java

1SELECT * FROM Test

で全行取得するのではなく、

java

1SELECT * FROM Test WHERE Test_id = ?

と、プレースホルダを使って、idを指定するようにするとよいでしょう。

投稿2018/06/11 12:51

A-pZ

総合スコア12011

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

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

Okuto

2018/06/11 13:07

回答ありがとうございます! 試してみましたが、変わりませんでした。 returnの配置なども変えてみましたが、やはりダメみたいです。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問