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

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

ただいまの
回答率

90.52%

  • SQL

    2383questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

SQLの管理用ページの作成のプログラムが内部Webブラウザで実行表示されない

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 166

sanchu52

score 140

 前提・実現したいこと

参考書Eclipse4.7でJAVAプログラミングを勉強しています。
7.2「JSP/サーブレットからのJDBCの利用」の章にある
SQLの管理用ページの作成のプログラム「list7.1_admin.jsp」が内部Webブラウザで実行表示されません。
実行中に以下のエラーメッセージが発生しました。
よろしくお願いいたします。

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

情報: Server version:        Apache Tomcat/9.0.8 [金 7 06 16:21:22 JST 2018]
情報: Server built:          Apr 27 2018 19:32:00 UTC [金 7 06 16:21:22 JST 2018]
情報: Server number:         9.0.8.0 [金 7 06 16:21:22 JST 2018]
情報: OS Name:               Windows 10 [金 7 06 16:21:22 JST 2018]
情報: OS Version:            10.0 [金 7 06 16:21:22 JST 2018]
情報: Architecture:          amd64 [金 7 06 16:21:22 JST 2018]
情報: Java Home:             C:\pleiades\eclipse\jre\jre [金 7 06 16:21:22 JST 2018]
情報: JVM Version:           1.8.0_162-b12 [金 7 06 16:21:22 JST 2018]
情報: JVM Vendor:            Oracle Corporation [金 7 06 16:21:22 JST 2018]
情報: CATALINA_BASE:         C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 [金 7 06 16:21:22 JST 2018]
情報: CATALINA_HOME:         C:\Program Files\Apache Software Foundation\Tomcat9.0.8 [金 7 06 16:21:22 JST 2018]
情報: Command line argument: -Dcatalina.base=C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0 [金 7 06 16:21:22 JST 2018]
情報: Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Tomcat9.0.8 [金 7 06 16:21:22 JST 2018]
情報: Command line argument: -Dwtp.deploy=C:\pleiades\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps [金 7 06 16:21:22 JST 2018]
情報: Command line argument: -Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Tomcat9.0.8\endorsed [金 7 06 16:21:22 JST 2018]
情報: Command line argument: -Dfile.encoding=UTF-8 [金 7 06 16:21:22 JST 2018]
情報: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\pleiades\eclipse\jre\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/pleiades/eclipse/jre/bin/../jre/bin/server;C:/pleiades/eclipse/jre/bin/../jre/bin;C:/pleiades/eclipse/jre/bin/../jre/lib/amd64;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;%JAVA_HOME%bin;C:\Program Files\MySQL\MySQL Workbench 8.0 CE;C:\WINDOWS\System32\OpenSSH\;%CATALINA_HOME%\bin;C:\Program Files\MySQL\MySQL Router 8.0\bin;C:\Users\Owner\AppData\Local\Microsoft\WindowsApps;;C:\pleiades\eclipse;;.] [金 7 06 16:21:22 JST 2018]
情報: Initializing ProtocolHandler ["http-nio-8080"] [金 7 06 16:21:22 JST 2018]
情報: Using a shared selector for servlet write/read [金 7 06 16:21:22 JST 2018]
情報: Initializing ProtocolHandler ["ajp-nio-8009"] [金 7 06 16:21:22 JST 2018]
情報: Using a shared selector for servlet write/read [金 7 06 16:21:22 JST 2018]
情報: Initialization processed in 811 ms [金 7 06 16:21:22 JST 2018]
情報: サービス [Catalina] を起動します [金 7 06 16:21:22 JST 2018]
情報: Starting Servlet Engine: Apache Tomcat/9.0.8 [金 7 06 16:21:22 JST 2018]
情報: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. [金 7 06 16:21:28 JST 2018]
情報: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. [金 7 06 16:21:32 JST 2018]
情報: Starting ProtocolHandler ["http-nio-8080"] [金 7 06 16:21:32 JST 2018]
情報: Starting ProtocolHandler ["ajp-nio-8009"] [金 7 06 16:21:32 JST 2018]
情報: Server startup in 10455 ms [金 7 06 16:21:32 JST 2018]
重大: Servlet.service() for servlet [jsp] in context with path [/SampleSQL] threw exception [An exception occurred processing [/list7.1_admin.jsp] at line [6]

3: 
4: <%@ page import="java.sql.*" %>
5: <%
6: Class.forName("com.mysql.jdbc.Driver");
7: Connection users = DriverManager.getConnection("jdbc:mysql://localhost/MyServlet_DB","root","各自のパスワードを指定");
8: Statement state = users.createStatement();
9: ResultSet result = state.executeQuery("select * from Users");


Stacktrace:] with root cause [金 7 06 16:21:34 JST 2018]

 該当のソースコード list7.1_admin.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" %>
<%
Class.forName("com.mysql.jdbc.Driver");
Connection users = DriverManager.getConnection("jdbc:mysql://localhost/MyServlet_DB","root","各自のパスワードを指定");
Statement state = users.createStatement();
ResultSet result = state.executeQuery("select * from Users");
String html = "<table border=\"1\">";
html +="<tr><td>ID</td><td>パスワード</td></tr>";
while(result.next()){
    String id = result.getString("id");
    String pass = result.getString("password");
    html += "<tr><td>" + id +"</td>";
    html += "<td>" + pass + "</td></tr>";
}
html += "</table>";
result.close();
state.close();
users.close();
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Database  Access</title>
<style>
    h1{font-size: 14pt; font-weight:bold;background-color:#DDF;padding:3px;}
</style>
</head>
<body>
    <h1>Myデータベースにアクセス</h1>
    <h2>データの一覧</h2>
    <%= html %>
    <hr>
    <h2>ユーザの追加</h2>
    <form action = "./AddUser" method="post">
    <table>
        <tr><td>ログインID</td><td><input type = "text" name ="id"></td></tr>
        <tr><td>パスワード</td><td><input type="password" name="pass"></td></tr>
        <tr><td></td><td><input type="submit"  value ="送信"></td></tr>
    </table></form>
    <hr>
    <h2>ユーザの削除</h2>
    <form action="./DelUser"  method="post">
    <table>
        <tr><td>ログインID</td><td><input type="text" name="id"></td></tr>
        <tr><td></td><td><input type="submit" value="送信"></td></tr>
    </table>
    </form>
</body>
</html>

 試したこと

6行目あたりで例外が発生しているみたいですが、英語が苦手のためおてあげです。
7行目「各自のパスワードを指定」に実際のパスワードを打ち込んでみましたが、変わりませんでした。

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

動的web プロジェクト
ターゲット・ランタイム Apache Tomcat9.0.8
動的webモジュールバージョン 3.0
構成   Apache Tomcat v9.0.8デフォルト構成

Java
デフォルト出力フォルダー    build\classes

webモジュール
コンテキスト・ルート  SampleSQL
コンテンツ・ディレクトリ WebContent\SampleSQL
web.xmlディプロイメント記述子の生成 off

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+1

6行目のエラーで7行目を直してもあまり…

英語も何もエラーになったとしか書いてないので、Class.forName("com.mysql.jdbc.Driver") エラーで探してみたらどうでしょう?

単純にパスが取れないとかでドライバがロードできてないのでは?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/06 17:43

    プロジェクトのプロパティを開いて、Javaのビルド・パスの
    ライブラリーにJDBCのjar を追加してみたのですがうまくいきません。

    キャンセル

+1

6行目あたりで例外が発生しているみたいですが、英語が苦手のためおてあげです。
7行目「各自のパスワードを指定」に実際のパスワードを打ち込んでみましたが、変わりませんでした。 

6行目で例外が発生しているということは、7行目は実行されていないわけですから、7行目をいじって解決はできません。

6行目で例外が発生しているということは、ログから

重大: Servlet.service() for servlet [jsp] in context with path [/SampleSQL] threw exception [An exception occurred processing [/list7.1_admin.jsp] at line [6]

でわかりますね。

でもここにはただ「例外が発生した」という事実しかわかりません。
これをより具体的な情報を得るためには、「どんな例外」なのかを特定する必要があります。

これを特定するためには、try ~ catch で詳細なエラーを捕捉する必要があります。

try {
    Class.forName("com.mysql.jdbc.Driver");
    Connection users = DriverManager.getConnection("jdbc:mysql://localhost/MyServlet_DB","root","各自のパスワードを指定");
    Statement state = users.createStatement();
} catch (Exception e) {
    e.printStackTrace();
}

このように使うことで、より詳細なメッセージがわかります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/06 17:42

    初めてEclipseで勉強しているので、ご指導していただいた事が理解できません。
    もうすこししらべてみます。

    キャンセル

check解決した方法

0

mysql-connector-java5.1.46.jar を
WEB-INF/lib フォルダに配置すればMySQLに接続できる。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • SQL

    2383questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。