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

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

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

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

パスワード

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

Q&A

解決済

1回答

510閲覧

サーブレットを利用したログイン機能を作りたい

yanyan_tsukebo

総合スコア4

JSP

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

パスワード

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

0グッド

0クリップ

投稿2021/05/18 07:56

編集2021/05/18 08:08

前提・実現したいこと

サーブレットを利用してログイン機能を作る以下のような課題に取り組んでいます。

・JSP1でパスワードを入力する。
・サーブレットで受取ったパスワードが「"ABC","DEF","GHI","JKL"」のいずれかならば、ログイン成功とする。
・ログイン成功ならば、JSPokに飛び「ログイン成功」と表示する。
・ログイン失敗ならば、JSPngに飛び「ログイン失敗」と表示する。

発生している問題・エラーメッセージ

正しいパスワードを入力しても違ったパスワードを入力しても
すべて「ログイン失敗」と表示されてしまいます。

該当のソースコード

package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/Mylogin") public class Mylogin extends HttpServlet { private static final long serialVersionUID = 1L; public Mylogin() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { getServletContext().getRequestDispatcher("/JSP1.jsp").forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String[] array = { "ABC", "DEF", "GHI", "JKL" }; String match = request.getParameter("password"); for (int i = 0; i < array.length; i++) { if (array.equals(match)) { match = "一致した"; break; } } if (match.equals("一致した")) { getServletContext().getRequestDispatcher("/JSPok.jsp").forward(request, response); // ログイン成功の処理 } else { getServletContext().getRequestDispatcher("/JSPng.jsp").forward(request, response); // ログイン失敗の処理 } } } ```【JSP1.jsp】

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
%>

<!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <form action="Mylogin" method="post"> パスワード : <INPUT type="text" name="password"> <INPUT type="submit" value="送信"> </form> </body> </html> ```【JSPng.jsp】
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% request.setCharacterEncoding("UTF-8"); %> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <% out.println("ログイン失敗"); %> </body> </html> 【JSPok.jsp】は表示内容が違うだけなので割愛させていただきます。

試したこと

おそらくサーブレット内の2つのif文のうちどちらか、あるいは両方の文字列の比較が
うまくいっていないものと推測しています。試行錯誤してみましたがどうにもなりませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

K_3578

2021/05/18 07:59

一応ソース毎に分けてブロック化して貰えると有難いです。 ちょっと見辛いかな・・・。
yanyan_tsukebo

2021/05/18 08:06

大変失礼いたしました。 書式を改善させていただきました。
K_3578

2021/05/18 08:09 編集

修正ありがとうございます。 一応聞いておきますが・・・ご自分でデバッグはされましたか? ある程度の型は出来ているようですし、判定のタイミングを覗いて見れば原因分かりそうですが
yanyan_tsukebo

2021/05/18 08:38

質問にいち早く反応いただきありがとうございました。 恥ずかしい話サーブレットを学習し始めたのがここ数日で、質問に記述したコード(一応実行はできる形)にたどり着くまでかなり時間がかかったため思考停止の安易な質問をしてしまいました。 自分でデバックをする癖をつけようと思います。
K_3578

2021/05/18 08:51

蛇足ですが・・・。デバッグであってデバックではないです。よくある間違いなのでお気を付けください。 (英単語にするとわかりやすい debug : debuk?)
guest

回答1

0

ベストアンサー

以下を

Java

1if (array.equals(match))

以下に変更しましょう。

Java

1if (array[i].equals(match))

投稿2021/05/18 08:08

root_jp

総合スコア4666

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

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

yanyan_tsukebo

2021/05/18 08:11

ご回答いただきありがとうございました! かなり初歩的なミスでお恥ずかしい限りです。 もっと勉強します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問