・JSPから直接データベースにアクセスすることはできない
・データベースにアクセスを行うオリジナルクラスまたはBeanを作成し、
それをJSP側から使用することで間接的にデータベースにアクセスする。
例)
MyDBAccess.java
import java.sql.*; public class MyDBAccess { 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 MyDBAccess(String driver, String url, String user, String password) { this.driver = driver; this.url = url; this.user = user; this.password = password; } /** * 引数なしのコンストラクタ * 既定値を使用する */ public MyDBAccess() { driver = "org.postgresql.Driver"; url = "jdbc:postgresql://localhost:5432/jspdb"; user = "postgres"; password = ""; } /** * データベースへの接続を行う */ 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(); } }
JSP側
<%@ page import="java.sql.*, atmarkit.MyDBAccess" contentType="text/html; charset=euc-jp" %> <% // 内容: データベースにアクセスする // MyDBAccess のインスタンスを生成する MyDBAccess db = new MyDBAccess(); // データベースへのアクセス db.open(); // メンバーを取得 ResultSet rs = db.getResultSet("select * from member"); // メンバー一覧表示用のテーブル String tableHTML = "<table border=1>"; tableHTML += "<tr bgcolor=\"000080\"><td><font color=\"white\">メンバーID</font></td>" + "<td><font color=\"white\">名前</font></td>" + "<td><font color=\"white\">カナ</font></td>"; // 取得された各結果に対しての処理 while(rs.next()) { int id = rs.getInt("member_id"); // メンバーIDを取得 String name = rs.getString("name"); // メンバー名を取得 String kana = rs.getString("kana"); // メンバー名(カナ)を取得 // 文字コードを EUC_JP からUnicode へ変換 name = new String(name.getBytes("8859_1"), "EUC_JP"); kana = new String(kana.getBytes("8859_1"), "EUC_JP"); // テーブル用HTMLを作成 tableHTML += "<tr><td align=\"right\">" + id + "</td>" + "<td>" + name + "</td><td>" + kana + "</td></tr>"; } tableHTML += "</table>"; // データベースへのコネクションを閉じる db.close(); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head><title>データベースへのアクセス</title></head> <body> <p>-- データベースへのアクセス --</p> <p> <b>メンバーの一覧</b><br> <%= tableHTML %> </p> </body> </html>
データベースと連携する