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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

Eclipse

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

Q&A

解決済

1回答

4375閲覧

eclipseからのmysql接続エラー HTTP500エラー

Okimiya

総合スコア13

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

Eclipse

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

0グッド

1クリップ

投稿2016/10/11 05:32

HTTPステータス 500 - type 例外レポート メッセージ 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 java.lang.NullPointerException libraryWebApp.ManageLoginDB.getUserData(ManageLoginDB.java:23) libraryWebApp.ManageLoginServlet.doPost(ManageLoginServlet.java:52) javax.servlet.http.HttpServlet.service(HttpServlet.java:644) javax.servlet.http.HttpServlet.service(HttpServlet.java:725) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Java

1package libraryWebApp; 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 13@WebServlet("/ManagementLogin") 14public class ManageLoginServlet extends HttpServlet { 15 16 /* 17 * コンストラクタ 18 */ 19 public ManageLoginServlet() { 20 super(); 21 } 22 23 /* 24 * POSTメソッドでリクエストした場合の処理 25 */ 26 @Override 27 public void doPost(HttpServletRequest request, HttpServletResponse response) 28 throws ServletException, IOException { 29 30 // クリックされたボタンの判定 31 // ボタン名の文字化けを防ぐために文字コードを設定してから取得 32 request.setCharacterEncoding("UTF-8"); 33 String btn = request.getParameter("submit"); 34 35 //画面移動の準備 36 HttpSession session = request.getSession();//セッション 37 RequestDispatcher rd; //画面の情報 38 39 // ③-1 クリックされたボタンが「login」の場合はログイン処理を実施 40 // ③-1-1 ログイン画面で入力されたIDとパスワードを取得 41 if ("ログイン".equals(btn)) { 42 String id = request.getParameter("id"); 43 String pass = request.getParameter("pass"); 44 //ユーザ情報をモデルに格納するために指示 45 //ログイン処理クラスをインスタンス化 46 int m_id = Integer.parseInt(id); 47 48 //TODO②-1LoginDBクラスを作成する 49 ManageLoginDB login = new ManageLoginDB(); 50 51 // ③-1-4 ID処理クラスに②-1-1で取得したIDを渡してユーザ情報をモデルに格納 52 LoginUserBean bean = login.getUserData(m_id, pass); 53 54 //モデルの情報を判定 55 if (bean != null) { 56 // ③-2-1 モデルの情報が存在する場合はsetAttributeメソッドを使ってセッションに情報をセット 57 // モデル(ユーザ情報) 58 session.setAttribute("user_db", bean); 59 //ログイン状態 60 session.setAttribute("login_db", "login"); 61 //次に表示させる画面(ビュー)を指定 62 rd = request.getRequestDispatcher("./managementMenu.jsp"); 63 64 } else { 65 //モデルの情報がない場合 66 //次に表示させる画面(ビュー)指定 67 rd = request.getRequestDispatcher("./loginNG.jsp"); 68 } 69 rd.forward(request, response); 70 71 } else if ("ログアウト".equals(btn)) { 72 73 //クリックされたボタンが「logout」の場合はログアウト処理(セッションの破棄)をする 74 session.removeAttribute("login_db"); 75 session.removeAttribute("user_db"); 76 response.sendRedirect("./login.jsp"); 77 } 78 79 } 80 81 /** 82 * GETメソッドでリクエストされた場合の処理. 83 */ 84 @Override 85 protected void doGet(HttpServletRequest request, HttpServletResponse response) 86 throws ServletException, IOException { 87 88 // 今回はdoPostで処理 89 doPost(request, response); 90 91 } 92}

サーブレットからManageLoginDBのgetUserData()メソッドを実行する
ログインフォームで受け取ったIDとPASSを引数に渡す

Java

1package libraryWebApp; 2 3import java.sql.ResultSet; 4import java.sql.SQLException; 5 6public class ManageLoginDB extends ManageLogin { 7 8 @Override 9 public LoginUserBean getUserData(int id, String pass) { 10 11 LoginUserBean bean = null; 12 ManageLoginDao mdao = null; 13 ResultSet rs = null; 14 15 try { 16 //ManageLoginDaoクラスをインスタンス化 17 mdao = new ManageLoginDao(); 18 //画面で入力されたIDとパスワードをもとにDB検索を実行 19 rs = mdao.selectUser(id, pass); 20 21 while (rs.next()) { 22 23 //検索結果が存在する場合はbeanに値をセット(結果が1件しか返らないことを想定) 24 bean = new LoginUserBean(); 25 //ID (IDは引数のものをセット) 26 bean.setId(id); 27 28 //名前 29 bean.setName(rs.getString("m_name")); 30 //年齢 31 32 } 33 34 } catch (SQLException e) { 35 e.printStackTrace(); //ここを追加 36 37 } finally { 38 //処理終了時に各接続を解除 39 mdao.close(); 40 } 41 return bean; 42 } 43} 44

ManageLoginDaoのselectUser()メソッドに引数id,passを

Java

1package libraryWebApp; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8 9public class ManageLoginDao { 10 private Connection con = null; 11 private ResultSet rs = null; 12 private PreparedStatement ps = null; 13 public ConnectionBean cb = new ConnectionBean(); 14 15 /** 16 * データベースから指定されたIDとパスワードを使ってユーザ情報を検索します. 17 * @param id ログインID 18 * @param pass パスワード 19 * @return ユーザ情報(ResultSet) 20 * @throws SQLException 21 */ 22 public ResultSet selectUser(int id, String pass) throws SQLException { 23 24 try { 25 //コネクション格納クラスインスタンス 26 // JDBCドライバのロード 27 // 「com.mysql.jdbc.Driver」クラス名 28 Class.forName(cb.getDriver()); 29 30 // データベースと接続(本来はユーザやパスワードも別管理にしておくのが理想) 31 con = DriverManager.getConnection(cb.getHost(), cb.getName(), cb.getPass()); 32 33 // SQL文を生成 34 ps = con.prepareStatement("select m_name from m_user_tb where m_id = ? and m_pass = ?"); 35 System.out.println(ps); 36 // 生成したSQL文の「?」の部分にIDとパスワードをセット 37 ps.setInt(1, id); 38 ps.setString(2, pass); 39 40 // SQLを実行 41 rs = ps.executeQuery(); 42 43 } catch (ClassNotFoundException ce) { 44 45 // JDBCドライバが見つからなかった場合 46 ce.printStackTrace(); 47 48 } 49 return rs; 50 } 51 52 /** 53 * コネクションをクローズします. 54 */ 55 public void close() { 56 57 try { 58 59 // データベースとの接続を解除する 60 if (con != null) { 61 con.close(); 62 } 63 if (ps != null) { 64 ps.close(); 65 } 66 if (rs != null) { 67 rs.close(); 68 } 69 70 } catch (SQLException se) { 71 72 // データベースとの接続解除に失敗した場合 73 se.printStackTrace(); 74 } 75 } 76} 77

ちなみにdriver,host,root,passは、こちらのBeanクラスからゲットで拾います。

Java

1package libraryWebApp; 2 3public class ConnectionBean { 4 private String driver = "com.mysql.jdbc.Driver"; 5 private String host = "jdbc:mysql://localhost:3306/library_db"; 6 private String name = "root"; 7 private String pass = "pass"; 8 9 public String getDriver() { 10 return driver; 11 } 12 13 public void setDriver(String driver) { 14 this.driver = driver; 15 } 16 17 public String getName() { 18 return name; 19 } 20 21 public void setName(String name) { 22 this.name = name; 23 } 24 25 public String getPass() { 26 return pass; 27 } 28 29 public void setPass(String pass) { 30 this.pass = pass; 31 } 32 33 public String getHost() { 34 return host; 35 } 36 37 public void setHost(String host) { 38 this.host = host; 39 } 40 41 public ConnectionBean() { 42 String driver = ""; 43 String name = ""; 44 String pass = ""; 45 String host = ""; 46 } 47 48}

デスクトップパソコンのeclipseで作成いたしました。
それをノートパソコンのeclipseにプロジェクトごとインポートしました。
データベースの方も問題ないとおもいます。
MYSQLJDBCの.jarもしっかりプロジェクトのビルドパスに追加しました
データベースにアクセスできないことがエラーの原因だと思いますが、何故でしょうか?

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

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

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

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

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

guest

回答1

0

自己解決

すみません!
事故解決いたしました。
tomcatフォルダ内のlibフォルダにもmysq.jdbc.driver.jarファイルを追加することで解決しました。
すみませんでした。

投稿2016/10/11 06:53

Okimiya

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問