注:Web 横幅 URL 位于本地主机,仅供测试之用。在生产环境中,URL 会指向 GIF 文档的实际位置。该 URL 实际上能够是因特网上的任何位置。
既然我们有了数据库,就需要使用刚刚填入其中的数据。我们将用 Java servlet 做到这一点。下面描述 Java servlet 代码,他将“推动”我们的努力。您或许希望花一些时间来通读该项目 zip 文档中的 BannerServlet.java 代码。假如您觉得困难,别担心;我们将花一些时间解释代码是如何工作的。
横幅体系结构
这个横幅广告 servlet 的体系结构十分简单。我们将使用四个类:
- 通用的
Logger类,一个将日志消息写到文本文档的类。
- 名为
BannerServlet的 servlet,每次显示横幅图像(即每次装入页面)和每次点击横幅图像时,将调用他。该 servlet 是我们应用程式的核心。
- 通用的
DBHandler类,BannerServlet将用他和 MySQL 数据库进行通信。
Banner类,我们用他来创建对象,这些对象包含数据库中每个横幅所拥有的任何元数据。
该 BannerServlet 类和 Banner 类特定于我们的应用程式。他们相当简单,您能够方便地扩展他们来添加更复杂的特性。
DBHandler 和 Logger 类的好处在于:您能够在任何您实际编写的、需要和数据库通信或写入日志文档的应用程式中重用这两个类。
我们将更周详地讨论任何这四个类,这样您就能够理解 servlet 是如何工作的,连同他如何使用 DBHandler 和 MySQL 数据库通信。
Logger 类Logger 类很简单。他有单个字段,代表我们正在写入日志的 File 对象。您能够将对单个 Logger 对象的引用传递给几个类,让这些类都写入同一个日志文档。 Logger 类允许您做以下事情。您能够:
- 创建日志记录器(logger)对象
- 向日志文档添加分隔符(“------”字符串)
- 通过传入调用方法的名称和日志消息添加一条日志项
- 添加方法启动的缺省消息
- 添加方法结束的缺省消息
- 删除日志文档
- 返回由日志记录器对象使用的
File对象
我们将同时在 DBHandler 类和 BannerServlet 中使用 Logger 对象。
DBHandler 类DBHandler 是很多用途的类,可用来通过 JDBC 和几乎任何数据库进行相互操作。他需要一个具备 JDBC/ODBC 驱动程式(我们正用此驱动程式来连接到数据库)名称的字符串、一个具备数据库(我们为其配置了 DSN)名称的字符串和一个 Logger 参数。 Logger 参数在 DBHandler 完成其“神奇”任务时告诉他在哪里打印输出消息。 DBHandler 的构造器打开到数据库的连接。在使用 DBHandler 完成任务后,必须用 close() 方法关闭他。
在创建了 DBHandler 对象之后,必须创建查询来执行。使用 setQueryString() 方法传入包含查询的字符串,查询能够是 PreparedStatement 类的形式。
PreparedStatement 是 JDBC 的一个很好的功能。他允许您定义一个查询字符串,使用问号字符替代查询中的变量标准。随后能够使用 PreparedStatement 类的 setter 方法来配置查询中未知元素的值。幸运的是, DBHandler 类为我们处理任何这些事情。我们只需配置想要执行的查询,然后调用 DBHandler 的某个方法,如下所示:




