何だか簡単に出来そうなので、沖へと漕ぎ出しました。無謀。
で、参考にしたのは、
@IT アイティメディアの
Tomcatを使う「JSPプログラミング」(10):データベースと連携する
というページ。
ほぼ、そのまま参考、というか借用というか
こんどは、JavaとJSPで2種類
■\workspace\BOOKLOG\src\BOOKLOG\DbAccess.java
package BOOKLOG;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DbAccess {
private String driver;
private String url;
private String user;
private String password;
private Connection connection;
private Statement statement;
private ResultSet resultset;
/**
* コンストラクタ
* @param driver ドライバー
* @param url URL
* @param user ユーザー名
* @param password パスワード
*/
public DbAccess(String driver, String url, String user, String password) {
this.driver = driver;
this.url = url;
this.user = user;
this.password = password;
}
/**
* 引数なしのコンストラクタ
* 既定値を使用する
*/
public DbAccess() {
driver = "oracle.jdbc.driver.OracleDriver";
url = "jdbc:oracle:thin:@//localhost:1521/PDBORCL";
user = "TESTUSER";
password = "TESTPWD";
}
/**
* データベースへの接続を行う
*/
public synchronized void open() throws Exception {
Class.forName(driver);
connection = DriverManager.getConnection(url, user, password);
statement = connection.createStatement();
}
/**
* SQL 文を実行した結果の ResultSet を返す
* @param sql SQL 文
*/
public ResultSet getResultSet(String sql) throws Exception {
if ( statement.execute(sql) ) {
return statement.getResultSet();
}
return null;
}
/**
* SQL 文の実行
* @param sql SQL 文
*/
public void execute(String sql) throws Exception {
statement.execute(sql);
}
/**
* データベースへのコネクションのクローズ
*/
public synchronized void close() throws Exception {
if ( resultset != null ) resultset.close();
if ( statement != null ) statement.close();
if ( connection != null ) connection.close();
}
}
■\workspace\BOOKLOG\WebContent\BookLogJSP.jsp
<%@ page import="java.sql.*, BOOKLOG.DbAccess"
contentType="text/html; charset=UTF-8" %>
<%
// 内容: データベースにアクセスする
// DBAccess のインスタンスを生成する
DbAccess db = new DbAccess();
// データベースへのアクセス
db.open();
// 読書履歴を取得
ResultSet rs = db.getResultSet("select ISBN13,BookName,Author from BOOKLOG");
// 読書履歴一覧表示用のテーブル
String tableHTML = "<table border=1>";
tableHTML += "<tr bgcolor=\"000080\"><td><font color=\"white\">ISBN13</font></td>"
+ "<td><font color=\"white\">書名</font></td>"
+ "<td><font color=\"white\">著者</font></td>";
// 取得された各結果に対しての処理
while(rs.next()) {
String id = rs.getString("ISBN13"); // ISBN13を取得
String title = rs.getString("BookName"); // 書名を取得
String author = rs.getString("Author"); // 著者を取得
// テーブル用HTMLを作成
tableHTML += "<tr><td align=\"right\">" + id + "</td>"
+ "<td>" + title + "</td><td>" + author + "</td></tr>";
}
tableHTML += "</table>";
// データベースへのコネクションを閉じる
db.close();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>読 書 履 歴 管 理</title>
</head>
<body>
<p>
<%= tableHTML %>
</p>
</body>
</html>
たったこれだけ、簡単じゃん
と思ったところが・・・
実行してみると
java.lang.ClassNotFoundException
とエラーが出る。延々出る。全部英語だし、訳わからん。
ネットでまたまた延々、検索して、見つけた答えが、
JDBCドライバの置いてる位置が違うぞい・・というもの
JSPの方のフォルダのlib配下にないと読めん
ということらしい、言われてみればそうだけど・・・そんなん気付かんわ
で、それが解決したら今度は
Unsupported major.minor version 51.0
またまた、出ましたよ違うエラーが・・・(ガーン)
こっちも、ネットで延々、検索して
Javaのバージョンが古いわ、ぼけ
ということらしい・・・
で
Java7 にしてもダメ
じゃあ、Java8は・・・
やっぱりダメじゃん
と諦めかけたのだけど
TOMCATも、VERSIONが表示されていて
こっちも、Java8相当のやつに変えたら
↓出ました、出ました。やっとです。
(バージョンが古いだけでなく、不一致でも、出るエラー?かも・・・)
![](https://blogimg.goo.ne.jp/user_image/53/30/f91e1cc16f26fc865ef0aac90d43a268.jpg)
サーバは、TOMCATなので
http://localhost:8080/BOOKLOG/BookLogJSP.jsp
をURLに入れて
IEでも表示できました。やれやれ
表示も簡素だし、リンクも全然ないけど、まあ、それは次の課題(来週?)