jspページの本文部分に次のJavaコードを挿入して、Oracle 10gデータベースからテーブルFLIGHTDATAのレコードを取得しました。しかし、Class.forName(...)行の実行後、プログラムは直接データを返さずに接続をブロックして終了します。私が間違っていることに関する提案はありますか?おかげで - SomnathJSPを使用してOracle 10g DBから返されたデータレコードがありません
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%
out.println("<table border='1'><tr>");
Connection connection = null;
Statement statement = null;
ResultSet rs_1hop = null;
ResultSetMetaData rsm_1hop = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String connectionURL = "jdbc:oracle:thin:@localhost:1521:xe";
connection = DriverManager.getConnection(connectionURL, "system", "system");
statement = connection.createStatement();
// sql query to retrieve values from the secified table.
String QueryString = "SELECT * from FLIGHTDATA";
rs_1hop = statement.executeQuery(QueryString);
rsm_1hop = rs_1hop.getMetaData();
int colCnt = rsm_1hop.getColumnCount();
for (int i=1; i<=colCnt; ++i) {
out.println("<th>" + rsm_1hop.getColumnName(i) + "</th>");
}
out.println("</tr>");
while (rs_1hop.next()) {
out.println("<tr>");
for (int i=1; i<=colCnt; ++i)
out.println("<td>" + rs_1hop.getString(i) + "</td>");
out.println("</tr>");
}
} catch (Exception e) {
} finally {
if (statement != null)
statement.close();
if (connection != null)
connection.close();
}
out.println("</table><br><br>");
%>
BalusCによってコメントとしてcatchブロックでServletExceptionがを追加すること、および/ WEB-INF/libの下odbc6.jarファイルを追加した後、私は私が原因であると仮定し、次のエラーメッセージを取得していますjdbcドライバが見つかりません。
Apache Tomcatのインストールディレクトリ/ ROOT/web-apps/WEB_INF/libにjarファイルを追加して、すべてのWebアプリケーションで使用できるようにしましたが、問題は解決しません。
description The server encountered an internal error() that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: javax.servlet.ServletException: DB interaction failed! org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
根本原因
javax.servlet.ServletException: DB interaction failed!
org.apache.jsp.retrievePossibleRoutes_jsp._jspService(retrievePossibleRoutes_jsp.java:96)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
根本原因
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
java.lang.Class.forName0(Native Method)
java.lang.Class.forName(Unknown Source)
org.apache.jsp.retrievePossibleRoutes_jsp._jspService(retrievePossibleRoutes_jsp.java:73)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
こんにちは、私はすでにプロジェクトビルドパスのライブラリタブの下にojdbc6.jarを追加しました。十分ではありませんか? – somnathchakrabarti
いいえ。ビルドされたWARの最終的に '/ WEB-INF/lib'フォルダにJARファイルが入るように、プロジェクトのプロパティの* Deployment Assembly *セクションで設定する必要があります。しかし、それは普通の不器用です。物理JARファイルをプロジェクトの '/ WEB-INF/lib'フォルダに手動でドロップするだけです。それ以前に行った変更をビルドパスに元に戻すことを忘れないでください。これらの変更は不要で、両者を矛盾させる可能性があります。プロジェクトの '/ WEB-INF/lib'フォルダにJARファイルをドロップするだけで、IDEは自動的に適切なビルドパス設定に注意します。 – BalusC
はい、私はプロジェクトビルドパス - >ライブラリからファイルを削除し、/WebContent/WEB-INF/libの下に/web-apps/ROOT/WEB-INF/libをすべてのWebアプリケーションで使用できるようにします。しかし、問題は引き続き、ServletExceptionがcatchブロックに追加されたためにスローされた詳細なエラーメッセージが残っています。 –
somnathchakrabarti