目标:在jsp页面上通过自定义标签,查询数据库。
package org.vv.taglib;
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.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
public class QueryTag extends TagSupport {
private static final long serialVersionUID = 1L;
// 标签的属性
private String driver;
private String url;
private String user;
private String password;
private String sql;
// 执行数据库访问的对象
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
private ResultSetMetaData rsmd = null;
// 标签属性 driver url user password sql 的getter/setter方法
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 getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSql() {
return sql;
}
public void setSql(String sql) {
this.sql = sql;
}
// 标签处理
public int doEndTag() throws JspTagException {
// 注册驱动
try {
Class.forName(driver);
// 获取数据库连接
conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象
stmt = conn.createStatement();
// 执行查询
rs = stmt.executeQuery(sql);
rsmd = rs.getMetaData();
// 获取列数目
int columnCount = rsmd.getColumnCount();
// 获取页面输出流
Writer out = pageContext.getOut();
// 在页面输出表格
out.write("<table border='1' bgColor='9999cc'>");
// 遍历结果集
out.write("<tr>");
for (int i=0;i<rs.getMetaData().getColumnCount();i++){
out.write("<td>");
out.write(rs.getMetaData().getColumnName(i+1));
out.write("</td>");
}
out.write("</tr>");
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 e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
destroy();
}
return EVAL_PAGE;
}
// 销毁标签前调用的方法
public void destroy() {
// 关闭结果集
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 关闭Statement
if (stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
// 关闭数据库连接
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
在 WebRoot\WEB-INF 目录下添加文件 query.tld
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd" >
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>query</short-name>
<tag>
<!-- 配置标签名 -->
<name>query</name>
<!-- 配置标签处理类 -->
<tag-class>org.vv.taglib.QueryTag</tag-class>
<!-- 配置标签体为空 -->
<body-content>empty</body-content>
<!-- 配置标签属性 driver -->
<attribute>
<name>driver</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<!-- 配置标签属性 url -->
<attribute>
<name>url</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<!-- 配置标签属性 user -->
<attribute>
<name>user</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<!-- 配置标签属性 password -->
<attribute>
<name>password</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<!-- 配置标签属性 sql -->
<attribute>
<name>sql</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<jsp-config>
<taglib>
<taglib-uri>query</taglib-uri>
<taglib-location>/WEB-INF/query.tld</taglib-location>
</taglib>
</jsp-config>
</web-app>
jsp 页面中的调用方法
<myquery:query driver="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://192.168.0.88:1433;DatabaseName=directorMail"
user="user" password="password" sql="select * from mailInfo" />
分享到:
相关推荐
JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签JSP自定义标签
jsp自定义标签jsp自定义标签jsp自定义标签
jsp自定义标签jsp自定义标签jsp自定义标签jsp自定义标签
jsp 自定义标签 一个简单的自定义标签实现
本人自行研究JSP自定义标签的学习笔记 目录如下: 目录 一、概述 1 1.1 使用简单标签机制 2 1.2 使用标签文件 3 二 、自定义标签简介 3 2.1 自定义标签概念 3 2.2 标签相关概念 3 2.3 如何创建自定义标签 3 三、自...
使用jsp自定义标签的功能实现权限的控制。(如果用户没有某个模块的删除权限,就不现实这个删除按钮) 在整个项目中所有的页面都可以引入自定义的标签去做到权限的控制。 自定义标签文件 删除 可以控制页面中的每...
java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp自定义标签非常好用大家下载学习java jsp...
在网上学习jsp自定义标签的时候, 出现了异常, 在网上寻找了好久, 都没有找到合适的答案, 自己通过摸索最后成功, 分享给大家, 希望能够帮助到你, 自定义标签不能放在java Project中, 只能在java web Project中才可以.
创建JSP自定义标签.doc 创建JSP自定义标签.doc 创建JSP自定义标签.doc
JSP自定义标签。在自定义标签的起始和结束标签之间的部分为标签体(Body)。 标签处理程序类:定义标签的行为,并在JSP引擎遇到自定义标签时调用执行。 标签库描述符(TLD)文件:描述标签库的XML文档,向JSP引擎...
jsp、jstl自定义标签实现的分页,实现的还是比较好的,没有在request、session等范围保存过数据,在pageContext范围内保存过集合的数据, 实现的方法还是比较简单的,适用性还是比较广的,我是实在是没分了,平时也...
jsp自定义标签库实现数据列表显示,包括代码,文档,希望对大家有帮助.
JSP自定义Table标签demo JSP自定义Table标签demo JSP自定义Table标签demo
是用jsp自定义标签编写的一个非常不错的分页,扩展性非常不错,不依赖于数据库。
jsp自定义迭代标签 jsp自定义迭代标签
非常简单明了的hellword jsp自定义标签讲解.