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

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

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

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

ログイン

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

servlet

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2651閲覧

Servletの条件分岐の結果表示がうまくいきません。

gamavone

総合スコア3

Java

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

ログイン

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

servlet

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/06/27 03:47

Java初心者です。
現在、Servletでログインに成功すれば「ログイン成功」、失敗すれば「ログイン失敗」と表示されるプログラムを作ろうとしています。
コンパイルまでは出来たのですが、フォームに何を入力しても表示が「ログイン成功」になってしまいます。表示結果を分岐させるにはどうすれば良いでしょうか。

Servlet

1import java.io.IOException; 2import java.io.PrintWriter; 3 4import javax.servlet.ServletException; 5import javax.servlet.http.HttpServlet; 6import javax.servlet.http.HttpServletRequest; 7import javax.servlet.http.HttpServletResponse; 8import javax.servlet.ServletContext; 9import javax.servlet.annotation.WebServlet; 10 11@WebServlet("/checkservlet") // URLパターンを /checkservlet とする 12public class CheckTest extends HttpServlet { 13 14 public void doGet(HttpServletRequest request, 15 HttpServletResponse response) 16 throws IOException, ServletException { 17 response.setContentType("text/html;charset=utf-8"); 18 PrintWriter out = response.getWriter(); 19 20 ServletContext application = getServletContext(); 21 request.setCharacterEncoding("utf-8"); 22 String ui = request.getParameter("userid"); 23 String up =request.getParameter("userpass"); 24 25 if(ui.equals("user")&& up.equals("password")){ 26 out.println("ログイン成功"); 27 } 28 29 else 30 out.println("ログイン失敗"); 31 } 32 33 public void doPost(HttpServletRequest request, 34 HttpServletResponse response) 35 throws IOException, ServletException { 36 response.setContentType("text/html;charset=utf-8"); 37 request.setCharacterEncoding("utf-8"); 38 PrintWriter out = response.getWriter(); 39 out.println("<!DOCTYPE html>"); 40 out.println("<html lang=\"ja\">"); 41 out.println("<head>"); 42 out.println("<meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />"); 43 out.println("<title>CheckTest</title>"); 44 out.println("</head>"); 45 out.println("<body>"); 46 out.println("<h1>"); 47 out.println("ログイン成功"); 48 out.println("</h1>"); 49 out.println("</body>"); 50 out.println("</html>"); 51 } 52} 53 54 55 56```HTML 57<!DOCTYPE html> 58<html lang="ja"> 59 <head> 60 <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 61 <title>LoginTest</title> 62 </head> 63 <body> 64 <form action="./checkservlet" method="post"> 65   ユーザー IDを入力してください : 66 <input type="text" name="userid" size="20" /> 67 <br><br> 68   パスワードを入力してください : 69 <input type="password" name="userpass" size="20" /> 70 <br><br> 71 <input type="submit" value="ログイン" /> 72 </form> 73 </body> 74</html> 75 76よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

doPostメソッドの結果が常に「ログイン成功」であるからです。
(このHTMLの送信ボタンを押したときには、doPostメソッドが実行されます)

下記のような分岐処理は、doPostメソッドの方に書くべきでしょうね。

request.setCharacterEncoding("utf-8"); String ui = request.getParameter("userid"); String up =request.getParameter("userpass"); if(ui.equals("user")&& up.equals("password")){ out.println("ログイン成功"); } else out.println("ログイン失敗");

投稿2021/06/27 03:54

編集2021/06/27 04:39
hallen0225

総合スコア587

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

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

m.ts10806

2021/06/27 04:34

>送信ボタンを押したときには、doPostメソッドが実行されます これはリクエストメソッド次第では? GETならdoGetになるはずです。
hallen0225

2021/06/27 04:35

記載のHTMLでは、methodはPOSTになっています。
m.ts10806

2021/06/27 04:37

回答の表記だと「送信ボタンは必ずdoPostになる」という誤解を与えかねないと思っての指摘です。可能なら「formのmethodがPOSTなら」の旨の追記をしてあげたほうが正しい理解につながると思います。
hallen0225

2021/06/27 04:48

確かに初期値は「GET」ではありますが、この方は明示的にPOSTと書いているわけですので不要の認識です。 「今回のHTML」に限定した話である旨は追記しました。
m.ts10806

2021/06/27 04:52 編集

了解です。その部分だけ気になってましたので(回答としては正しいので高評価しています)
gamavone

2021/06/28 10:36

うまくいきました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問