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

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

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

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

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

servlet

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

Q&A

解決済

1回答

1984閲覧

正しいユーザーIDとパスワードを入力しているにも関わらず、エラーメッセージが表示されてしまう

ypk

総合スコア80

JSP

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

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

servlet

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

0グッド

0クリップ

投稿2020/06/26 10:23

編集2020/06/26 23:39

初めまして。

前回(https://teratail.com/questions/273094)の続きです。

現在サーブレットを用いてログイン機能を実装させようとしています。

下記のようなソースコードを書いて、JSPのログインIDに「000014」パスワードに「aaaaaa」以外の文字を入力した時に、login.jspに「入力内容に誤りがあります。」と赤文字で表示させようとしています。

前回の質問でいただいた回答をもとに、DAOのソースコードを編集した結果JSPに遷移をして「入力内容に誤りがあります。」と赤文字で表示させることができるようになりました。

イメージ説明

ところが、どういうわけか、今度はJSPのログインIDに「000014」パスワードに「aaaaaa」を入力してもJSPに遷移し「入力内容に誤りがあります。」と赤文字で表示される状態になってしまっています。

つまり、依然として条条件分岐がうまくいっていないのではと考えています。しかし、ソースコードをいろいろいじっているのですがどこでつまずいているのかがいまいちよく分かりません。

ソースコードに赤波線は出ていません。

何かもし、気になる箇所などございましたら教えていただけると嬉しいです。
どうぞよろしくお願いいたします。

こちらは過去に質問した、今回の件に関連する質問です。
https://teratail.com/questions/272783

https://teratail.com/questions/272854

ソースコード

JSP

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ page import="exam.LoggerTester" %> 4<% request.setCharacterEncoding("UTF-8"); %> 5<% String loginErrorMessage = (String)request.getAttribute("loginErrorMessage"); %> 6<!DOCTYPE html> 7<html> 8 <head> 9 <meta charset="UTF-8"> 10 <title>書籍管理システム-<ログイン></title> 11 <link rel="stylesheet" href="header.css"> 12 </head> 13 14<div class="container"> 15 <header> 1617<div class="header_logo_font"> 18<p>書籍管理システムログイン</p> 19</div> 20</div> 2122<hr> 23</header> 24 <body> 25 26 <% 27 LoggerTester lt = new LoggerTester(); 28 lt.outActionLog("login.jsp", "処理開始"); 29 %> 30 31 <div class="body"> 32 <div class="content"> 33 <div align="center"> 34 <table border="0"> 35 <form action="Login" method="POST"> 36 37 <div class="break"> 38 <font color="#fff">空欄作成のために使用。画面に映りません。</font> 39 </div> 40 41 <div class="break"> 42 <font color="#fff">空欄作成のために使用。画面に映りません。</font> 43 </div> 44 45 <center> 46 <% if(loginErrorMessage != null){ %> 47 <p><font color="red"><%= loginErrorMessage %></font></p> 48 <%} %> 49 </center> 50 <div class="break"> 51 <font color="#fff">空欄作成のために使用。画面に映りません。</font> 52 </div> 53 54 <p>ユーザーID 55 <input class="center" type="text" name="user_id" value="" size="24"> 56 <p>パスワード 57 <input class="center" type="password" name="password" value="" size="24"> 58 <br><br> 59 <input class="login" type="submit" name="login" value="ログイン"></div> 60 61 62 </form> 63 </table> 64 65 </div> 66 </div> 67 </div> 68 </body> 69 70<footer> 71<hr> 72 73</div> 74</html>

Servlet

1package exam; 2 3import java.io.IOException; 4 5import javax.servlet.ServletException; 6import javax.servlet.annotation.WebServlet; 7import javax.servlet.http.HttpServlet; 8import javax.servlet.http.HttpServletRequest; 9import javax.servlet.http.HttpServletResponse; 10import javax.servlet.http.HttpSession; 11 12import dao.UserDAO; 13 14@WebServlet("/Login") 15public class Login extends HttpServlet { 16 17 public void doPost(HttpServletRequest request, HttpServletResponse response) 18 throws ServletException, IOException { 19 20 //getSessionメソッドによりセッションを開始 21 HttpSession session = request.getSession(); 22 23 24 //リクエストで受け取る文字列符号化方式を指定 25 request.setCharacterEncoding("UTF-8"); 26 27 LoggerTester lt = new LoggerTester(); 28 29 lt.outActionLog("Login", "処理開始"); 30 31 try { 32 33 // Servlet 初期化パラメータ情報 34 String loginid = request.getParameter("loginid"); 35 String userpassword = request.getParameter("userpassword"); 36 37 //ユーザーIDとパスワードの検索 38 UserDAO dao = new UserDAO(); 39 UserDAO user = dao.selectUser(loginid, userpassword); 40 41 //if (request.getParameter("username") == un){ 42 if (user != null) { 43 44 session.setAttribute("user", user); 45 getServletContext().getRequestDispatcher("/BookManagementListDisp.java").forward(request, response); 46 47 }else { 48 49 request.setAttribute("loginErrorMessage","入力内容に誤りがあります。"); 50 getServletContext().getRequestDispatcher("/login.jsp").forward(request, response); 51 52 53 } 54 55// DBエラーの場合、エラーメッセージをリクエストに登録し、エラー画面にフォワード 56 }catch(Exception e){ 57 58 e.printStackTrace(); 59 request.setAttribute("dbConnectionError", "データベース接続にエラーが発生しました。"); 60 getServletContext().getRequestDispatcher("/errorMessage.jsp").forward(request, response); 61 62 } 63 } 64} 65

DAO

1package dao; 2 3import java.io.Serializable; 4import java.sql.SQLException; 5 6public class UserDAO implements Serializable { 7 8 //アクセサメソッド 9 private String _loginid; 10 private String _userpassword; 11 private int _admin; 12 private String _name; 13 14 public void setloginid(String loginid) { 15 this._loginid = loginid; 16 } 17 public String getloginid() { 18 return this._loginid; 19 } 20 21 public void setuserpassword(String userpassword) { 22 this._userpassword = userpassword; 23 } 24 public String getuserpassword() { 25 return this._userpassword; 26 } 27 28 public void setadmin(int admin) { 29 this._admin = admin; 30 } 31 public int getadmin() { 32 return this._admin; 33 } 34 35 public void setname(String name) { 36 this._userpassword = name; 37 } 38 public String getname() { 39 return this._name; 40 } 41 42 43 //セットした情報を取得 44 public UserDAO selectUser(String loginid, String userpassword) throws ClassNotFoundException,SQLException{ 45 46 if("000014".equals(loginid) && "aaaaaa".equals(userpassword)) { 47 48 UserDAO user = new UserDAO(); 49 50 user.setloginid("000014"); 51 user.setuserpassword("aaaaaa"); 52 user.setadmin(0); 53 user.setname("satoi"); 54 55 // 戻り値の設定 56 return user; 57 58 59 }else { 60 61 return null; 62 } 63 64}

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

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

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

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

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

dodox86

2020/06/26 10:49

JSPのフォームを見ると <input class="center" type="text" name="user_id" value="" size="24"> <input class="center" type="password" name="password" value="" size="24"> となっていますが、サーブレットの方では // Servlet 初期化パラメータ情報 String loginid = request.getParameter("loginid"); String userpassword = request.getParameter("userpassword"); になってます。要は、nameが違います。絶対に合わない気がしますが、これは意図通りのものですか?
m.ts10806

2020/06/26 11:02

↑これでしょうね。デバッグすればすぐわかりますね。
ypk

2020/06/26 11:44

ご指摘いただいた通りでした、、、 nameを修正したところ、無事に解決いたしました。ありがとうございました。
m.ts10806

2020/06/26 11:46

デバッグすればすぐわかりますね。 「値が渡っているかどうか」「想定の値かどうか」必ず確かめてください。 自分でできる問題の切り分け方法です。
guest

回答1

0

自己解決

JSPのnameについて。
ユーザーIDをloginidに、パスワードをuserpasswordに修正することで問題なく動作します

投稿2020/06/26 11:46

ypk

総合スコア80

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

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

m.ts10806

2020/06/26 12:02

本質的なところを理解できていません。 「formの入力コントロール(input,select,textareaなど)のname属性の属性値をパラメータのキーとする、一致させる」です。
ypk

2020/06/26 23:39

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問