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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

4200閲覧

Javaでページが遷移しない

Chandler_Bing

総合スコア673

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

1グッド

0クリップ

投稿2019/03/03 10:00

編集2019/03/03 16:20

以下のコードをサーバーで実行しています。しかしlogin.jspでフォーム送信をしてもloginOK.jspに遷移しません。どこが原因でしょうか。また予測ですが、LoginServlet.javaの中のresultがカラかどうか知りたいのですが、どうすれば良いですか。printしていますがコンソールに表示されません。

java

1package model; 2 3public class Login { 4 private String userId; 5 private String pass; 6 7 public Login(String userId, String pass) { 8 this.userId = userId; 9 this.pass = pass; 10 } 11 12 public String getUserId() { 13 return userId; 14 } 15 16 public String getPass() { 17 return pass; 18 } 19}

Java

1package model; 2 3public class Account { 4 private String userId; 5 private String pass; 6 private String mail; 7 private String name; 8 private int age; 9 10 public Account(String userId, String pass, String mail, 11 String name, int age) { 12 this.userId = userId; 13 this.pass = pass; 14 this.mail = mail; 15 this.name = name; 16 this.age = age; 17 } 18 19 public String getUserId() { 20 return userId; 21 } 22 23 public String getPass() { 24 return pass; 25 } 26 27 public String getMail() { 28 return mail; 29 } 30 31 public String getName() { 32 return name; 33 } 34 35 public int getAge() { 36 return age; 37 } 38}

java

1package model; 2 3import dao.AccountDAO; 4 5public class LoginLogic { 6 public boolean execute(Login login) { 7 AccountDAO dao = new AccountDAO(); 8 Account account = dao.findByLogin(login); 9 return account != null; 10 } 11}

java

1package dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8 9import model.Account; 10import model.Login; 11 12public class AccountDAO { 13 //Accountを返すfindByLoginクラス 14 public Account findByLogin(Login login) { 15 Connection conn = null; 16 Account account = null; 17 try { 18 // JDBCドライバを読み込む 19 Class.forName("com.mysql.cj.jdbc.Driver"); 20 21 // データベースに接続 22 conn = DriverManager.getConnection("jdbc:mysql://localhost:8889/JavaLogin", "tennisuser", "password"); 23 24 // SELECT文を準備 25 String sql = "SELECT USER_ID, PASS, MAIL, NAME, AGE FROM ACCOUNT WHERE USER_ID = ? AND PASS = ?"; 26 PreparedStatement pStmt = conn.prepareStatement(sql); 27 pStmt.setString(1, login.getUserId()); 28 pStmt.setString(2, login.getPass()); 29 30 // SELECTを実行し、結果表を取得 31 ResultSet rs = pStmt.executeQuery(); 32 33 // 一致したユーザーが存在した場合 34 // そのユーザーを表すAccountインスタンスを生成 35 if (rs.next()) { 36 // 結果表からデータを取得 37 String userId = rs.getString("USER_ID"); 38 String pass = rs.getString("PASS"); 39 String mail = rs.getString("MAIL"); 40 String name = rs.getString("NAME"); 41 int age = rs.getInt("AGE"); 42 43 account = new Account(userId, pass, mail, name, age); 44 } 45 } catch (SQLException e) { 46 e.printStackTrace(); 47 return null; 48 } catch (ClassNotFoundException e) { 49 e.printStackTrace(); 50 return null; 51 } finally { 52 // データベースを切断 53 if (conn != null) { 54 try { 55 conn.close(); 56 } catch (SQLException e) { 57 e.printStackTrace(); 58 return null; 59 } 60 } 61 } 62 // 見つかったユーザーまたはnullを返す 63 return account; 64 } 65}

java

1package servlet; 2 3import java.io.IOException; 4 5import javax.servlet.RequestDispatcher; 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11 12@WebServlet("/WelcomeServlet") 13public class WelcomeServlet extends HttpServlet { 14 private static final long serialVersionUID = 1L; 15 16 protected void doGet(HttpServletRequest request, 17 HttpServletResponse response) 18 throws ServletException, IOException { 19 RequestDispatcher dispatcher = request.getRequestDispatcher( 20 "/WEB-INF/jsp/welcome.jsp"); 21 dispatcher.forward(request, response); 22 } 23}

java

1package servlet; 2 3import java.io.IOException; 4 5import javax.servlet.RequestDispatcher; 6import javax.servlet.ServletException; 7import javax.servlet.annotation.WebServlet; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11import javax.servlet.http.HttpSession; 12 13import model.Login; 14import model.LoginLogic; 15 16@WebServlet("/LoginServlet") 17public class LoginServlet extends HttpServlet { 18 private static final long serialVersionUID = 1L; 19 20 protected void doGet(HttpServletRequest request, 21 HttpServletResponse response) 22 23 throws ServletException, IOException { 24 25 // フォワード 26 RequestDispatcher dispatcher = request.getRequestDispatcher( 27 "/WEB-INF/jsp/login.jsp"); 28 dispatcher.forward(request, response); 29 } 30 31 protected void doPost(HttpServletRequest request, 32 HttpServletResponse response) 33 throws ServletException, IOException { 34 35 // リクエストパラメータの取得 36 request.setCharacterEncoding("UTF-8"); 37 String userId = request.getParameter("userId"); 38 String pass = request.getParameter("pass"); 39 40 // ログイン処理の実行 41 Login login = new Login(userId, pass); 42 LoginLogic bo = new LoginLogic(); 43 boolean result = bo.execute(login); 44 System.out.println(result); 45 46 47 // ログイン処理の成否によって処理を分岐 48 if (result) { // ログイン成功時 49 50 // セッションスコープにユーザーIDを保存 51 HttpSession session = request.getSession(); 52 session.setAttribute("userId", userId); 53 54 // フォワード 55 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/loginOK.jsp"); 56 dispatcher.forward(request, response); 57 } else { // ログイン失敗時 58 // リダイレクト 59 response.sendRedirect("/membership/LoginServlet"); 60 } 61 } 62}

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 2 <!DOCTYPE html> 3 <html> 4 <head> 5 <meta charset="UTF-8"> 6 <title>スッキリ商店</title> 7 </head> 8 <body> 9 <ul> 10 <li> 11 <a href="/membership/LoginServlet">ログイン</a> 12 </li> 13 <li>ユーザー登録</li> 14 </ul> 15 </body> 16 </html> 17

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 2 <!DOCTYPE html> 3 <html> 4 <head> 5 <meta charset="UTF-8"> 6 <title>スッキリ商店</title> 7 </head> 8 <body> 9 <form action="/membership/LoginServlet" method="post"> 10 ユーザーID:<input type="text" name="userId"> 11 <br> 12 パスワード:<input type="password" name="pass"> 13 <br> 14 <input type="submit" value="ログイン"></form> 15 </body> 16 </html> 17

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 <!DOCTYPE html> 4 <html> 5 <head> 6 <meta charset="UTF-8"> 7 <title>スッキリ商店</title> 8 </head> 9 <body> 10 <p>ようこそ<c:out value="${userId}"/>さん</p> 11 <a href="/membership/WelcomeServlet">トップへ</a> 12 </body> 13 </html>

コンソールのエラー表示の中に以下の文があります。これはDB接続に失敗しているのでしょうか。
外部ファイルで読み込んでいますし、簡易テストではDBに接続成功していたのですが。

java.lang.ClassNotFoundException:

bochan2👍を押しています

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

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

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

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

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

m.ts10806

2019/03/03 13:01 編集

サーブレットの基本からやり直せ としか回答できませんがそれでも良ければ。 (だっていつもだけど自分で提示したコード全く自分で理解してないし。書いたようにしか動かないって言ってるのに思ったように動くと思ってるし)
退会済みユーザー

退会済みユーザー

2019/03/03 15:05

PHPでつまづいているのにJavaは無理でしょう
m.ts10806

2019/03/04 00:48

未解決問題たんまりなのに勝手に次にいって失敗してる時点でプログラミングに向いてないとしか。プログラミングの本質は問題解決なのに。
guest

回答1

0

ベストアンサー

書かれているコード自体は特に問題はないようですので、コンパイル後のWebアプリケーションがTomcatなどのサーバへデプロイされた後、サーバの再起動などが正しく行われているのであれば、コンソールにログが出力されるか、何らかのスタックトレースが出るはずです。

投稿2019/03/03 15:13

A-pZ

総合スコア12011

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問