%@page contentType="text/html"%>
<%@ taglib uri="http://www.addison-wesley.de/jcb/jcb.tld" prefix="jcb" %>
Dies ist das Ergebnis des SQLTable-Tags
--- Neue Klasse ---
package javacodebook.server.jsp.tag;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.sql.*;
/**
* Ein Tag zur Kapselung von Datenbank-Abfragen in HTML-Seiten. Eine SQL-Abfrage
* wird ausgeführt und aus dem ResultSet wird eine Tabelle erzeugt.
*/
public class SQLTable extends javax.servlet.jsp.tagext.TagSupport {
//Name des Datenbanktreibers
private String driver;
//Der Connect-String, mit dem die Verbindung geöffnet wird
private String connectString;
//Name des Datenbankusers
private String user;
//Password des Datenbankusers
private String passwd;
//Text der Abfrage
private String queryString;
/**
* Die doStartTag-Methode wird aufgerufen, nachdem alle Attribute des Tags
* gesetzt sind.
*/
public int doStartTag()
throws JspException {
Connection conn = null;
Statement stmt = null;
try {
//Treiber laden und Verbindung öffnen
Class.forName(driver);
conn = DriverManager.getConnection(connectString, user, passwd);
//Statement erzeugen und Abfrage abschicken
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(queryString);
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
JspWriter out = pageContext.getOut();
out.println("");
//Titelzeile der Tabelle aufbauen anhand der Metadaten
out.println("");
for(int i = 1; i <= colCount; i++)
out.println("" + rsmd.getColumnName(i) + " | ");
out.println("
");
//alle Zeilen des ResultSets in Tabellenzeilen ausgeben
while(rs.next()) {
out.println("");
for(int i = 1; i <= colCount; i++)
out.println("" + rs.getString(i) + " | ");
out.println("
");
}
rs.close();
out.println("
");
} catch(Exception e) {
e.printStackTrace(System.out);
}
finally {
try { stmt.close(); } catch(Exception ignored) {}
try { conn.close(); } catch(Exception ignored) {}
}
return SKIP_BODY;
}
/** Die Methode zur Auswertung des Attributs queryString */
public void setQueryString(String queryString) {
this.queryString = queryString.trim();
}
/** Wertet das Attributs driver aus */
public void setDriver(String driver) {
this.driver = driver.trim();
}
/** Wertet das Attributs connectString aus */
public void setConnectString(String connectString) {
this.connectString = connectString;
}
/** Wertet das Attributs user aus */
public void setUser(String user) {
this.user = user;
}
/** Wertet das Attributs passwd aus */
public void setPasswd(String passwd) {
this.passwd = passwd;
}
}
--- Taglibrary-Descriptor tablib.tld ---
1.0
1.1
vdb
http://www.addison-wesley.de/jcb/jcb.tld
sqltable
javacodebook.server.jsp.tag.SQLTable
Eine Abfrage als HTML-Tabelle ausgeben
driver
true
false
connectString
true
false
user
true
false
passwd
true
false
queryString
true
true
--- Referenz auf Taglibrary-Descriptor in der web.xml ---
http://www.addison-wesley.de/jcb/jcb.tld
/WEB-INF/jcb.tld