Java: package lxl; import java.io.IOException; import java.io.Writer; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.SimpleTagSupport; public class QueryTag extends SimpleTagSupport { private String driver; private String url; private String user; private String pass; private String sql; private Connection conn; private Statement stmt; private ResultSet rs; private ResultSetMetaData rsmd; @Override public void doTag() throws JspException, IOException { try{ //注册驱动 Class.forName(driver); //获取数据库连接 conn = DriverManager.getConnection(url,user,pass); //创建Statement对象 stmt = conn.createStatement(); //执行查询 rs = stmt.executeQuery(sql); rsmd = rs.getMetaData(); //获取列数目 int columnCount = rsmd.getColumnCount(); //获取页面输出流 Writer out = getJspContext().getOut(); //在页面输出表格 out.write("<table border='1' bgColor='9999cc' width='400'>"); //遍历结果集 while (rs.next()){ out.write("<tr>"); //逐列输出查询到的数据 for (int i = 1 ; i <= columnCount ; i++ ){ out.write("<td>"); out.write(rs.getString(i)); out.write("</td>"); } out.write("</tr>"); } } catch(ClassNotFoundException cnfe){ cnfe.printStackTrace(); throw new JspException("自定义标签错误" + cnfe.getMessage()); } catch (SQLException ex){ ex.printStackTrace(); throw new JspException("自定义标签错误" + ex.getMessage()); } finally{ //关闭结果集 try { if (rs != null) rs.close(); if (stmt != null) stmt.close(); if (conn != null) conn.close(); } catch (SQLException sqle){ sqle.printStackTrace(); } } } public String getDriver() { return driver; } public void setDriver(String driver) { this.driver = driver; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public String getSql() { return sql; } public void setSql(String sql) { this.sql = sql; } public Connection getConn() { return conn; } public void setConn(Connection conn) { this.conn = conn; } public Statement getStmt() { return stmt; } public void setStmt(Statement stmt) { this.stmt = stmt; } public ResultSet getRs() { return rs; } public void setRs(ResultSet rs) { this.rs = rs; } public ResultSetMetaData getRsmd() { return rsmd; } public void setRsmd(ResultSetMetaData rsmd) { this.rsmd = rsmd; } } tld: <?xml version="1.0" encoding="UTF-8"?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" version="2.0"> <tlib-version>1.0</tlib-version> <short-name>mytaglib</short-name> <!-- 定义该标签库的URI --> <uri>http://www.lxl.net/mytaglib</uri> <!-- 定义第一个标签 --> <!-- 定义第二个标签 --> <tag> <!-- 定义标签名 --> <name>query</name> <!-- 定义标签处理类 --> <tag-class>lxl.QueryTag</tag-class> <!-- 定义标签体为空 --> <body-content>empty</body-content> <!-- 配置标签属性:driver --> <attribute> <name>driver</name> <required>true</required> <fragment>true</fragment> </attribute> <!-- 配置标签属性:url --> <attribute> <name>url</name> <required>true</required> <fragment>true</fragment> </attribute> <!-- 配置标签属性:user --> <attribute> <name>user</name> <required>true</required> <fragment>true</fragment> </attribute> <!-- 配置标签属性:pass --> <attribute> <name>pass</name> <required>true</required> <fragment>true</fragment> </attribute> <!-- 配置标签属性:sql --> <attribute> <name>sql</name> <required>true</required> <fragment>true</fragment> </attribute> </tag> </taglib> jsp文件 <%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gbk"%> <%@ taglib uri="http://www.lxl.net/mytaglib" prefix="lxl" %> <!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=ISO-8859-1"> <title>Insert title here</title> </head> <body> <lxl:query user="root" url="jdbc:mysql://localhost:3306/lxl" pass="root" driver="com.mysql.jdbc.Driver" sql="select * from student"/> </body> </html> 参照: http://www.ibm.com/developerworks/cn/java/j-lo-jsp2tag/index.html?ca=drs-