使用JSP技术和JDBC技术访问基于Web的动态数据(1) 本文讨论使用 JSP 和 JDBC 技术把静态的、动态的及数据库内容集成在 Web 站点中。为了简洁明了的说明问题,文中的 JSP 页面使用短的 scriptlet 让 JSP 开发者接触到底层的 JDBC 概念,而不是把其隐藏在定制标记中。作者介绍一种集成 JavaBeans 组件和 JDBC 的主要设计方法,该方法同一直以来 JavaServer Pages 技术采用的、把 bean 用于 HTTP 的方式类似。他还提供实现该集成的代码。请在讨论论坛同作者及其它读者分享对本文的理解。
JavaServer Page(JSP)技术建立在 Java Servlet 技术的基础之上,是核心的生成动态内容的服务器端 Java 体系结构。关系数据库是动态内容的来源之一。Web 站点使用关系数据库存储各类信息:目录项、图像、文本、关于注册成员的资料等等,从而管理从在线社区到电子商务交易的一切事务。本文讨论通过 Java 数据库连接(JDBC)把 JSP 技术应用于关系数据库。正是 JDBC 使 Java 程序可以使用关系数据库。
要深入理解本文,您应该熟悉 JDBC 和 SQL。
· JDBC 基础知识
JDBC 是 Java 代码和 SQL 数据库之间的一座桥梁。主要的 JDBC 对象表示同数据库的连接及利用这些连接执行的语句。用于关系数据库的两种基本语句是查询和更新。两者都需要的一个前提条件就是,您首先要利用 java.sql.DriverManager 类同数据库建立连接。建立连接要花很长时间(就计算机时间而言),因此在 Web 服务器这种事务繁忙的环境中,您希望尽可能重用连接。这样的重用叫做建立连接池。
如果您的 JDBC 技术有些荒疏了,那么清单 1 中的代码片断说明的是同一个测试数据库建立 connection、创建用于该 connection 的 statement(语句)对象、发出 SQL 查询、处理 results(结果)及释放 JDBC 资源的全过程:
清单 1. 简单的 JDBC 代码
Connection connection = DriverManager.getConnection(URL, user, password); Statement statement = connection.createStatement(); ResultSet results = statement.executeQuery(sqlQuery);
while (results.next()) { ... process query results ... logSQLWarnings(results.getWarnings()); }
results.close(); statement.close(); connection.close();
在现实生活中,JDBC 代码不会如此简单;因为需要处理异常和警告情况。清单 2 说明的是同一个 JDBC 示例,但添加了对 JDBC 异常和警告的处理。在这个示例中,异常和警告只记入日志,并且,对于异常情况,我们将异常终止操作。不过 finally{} 子句将确保资源清除过程进行。
对真实的结果处理过程在此仅作一下提示;我们将在本文后面的部分接着更仔细的分析这个问题。如果我们正在执行的不是数据库查询而是更新,那我们可以把 while 循环替换成如下语句:
int count = statement.executeUpdate(sqlUpdate);
除 executeQuery() 和 executeUpdate() 之外,Statement 类也支持一般的 execute() 方法。虽然这允许编写一般的 SQL 代码,但处理结果的过程更复杂了。 executeUpdate() 方法返回 update 语句所作用的行的总数。
如果这些代码清单中的材料显得陌生,您也许希望花些时间重温一下在参考资料部分中找到的一些 JDBC 教程信息。
(未完待续)
|