使 MySQL 和 Tomcat 一起工作
使 MySQL 和 Tomcat 相互通信可能有些困难。然而,通过使用 JDBC API,我们将能够相对容易地从 Java 类使用 SQL 和 MySQL 数据库通信。
我们将使用 MM MySQL JDBC 驱动程式(一个开放源码驱动程式),使 MySQL 和 Tomcat 之间的通信变得容易。(在撰写本文时,2.0.14 是其最新版本。)
遗憾的是,安装该驱动程式略微有些麻烦。首先,要从 这里下载该驱动程式的合适的 JAR 文档。我们下载了名为 mm.mysql-2.0.14-you-must-unjar-me.jar 的文档。接下来,将文档解压缩(unjar 或 unzip)至一个临时目录。最后,将包含驱动程式的文档从解压缩的目录结构复制到 WEBAPPS/BANNER/WEB-INF/lib 目录中,然后重新启动 Tomcat。在我们下载的驱动程式版本中,文档的名称是 mm.mysql-2.0.14-bin.jar 。
我们本能够使用 JDBC/ODBC 桥驱动程式和 MySQL 通信,但我们认为本机驱动程式在性能上有更大优势(尽管我们没有运行任何基准测试程式来证实我们的假设)。对于这个应用程式,在性能上他可能不会有很大区别,但我们决定演示如何使用本机 JDBC 驱动程式,以便您不必在设计较大的应用程式时才去了解他。
滚动横幅应用程式
既然我们已安装了任何的软件,就让我们来看一下这个应用程式能够做什么连同我们是如何组织其架构和研发他的。
实质上,您能够使用我们的横幅 servlet 执行两个操作。首先,您能够用他查看 Web 页面上的随机横幅图像,每次装入包含横幅广告的 Web 页面时,该随机横幅图像就会出现。其次,您能够点击横幅图像,这将使您转至和装入的这个图像对应的链接。
按照 HTML,其代码类似于:
|
假如希望装入随机图像,那么显然图像标记不能指向静态图像文档,因此我们将指示他运行 servlet,本例中将调用 BannerServlet。我们将使用 HTTP GET 方法参数来指示 servlet 为我们提供图像。因此,图像标记类似于:
|
该标记调用 servlet 并传入参数键值对 type=image 。servlet 的 service() 方法会解释该请求,然后向浏览器返回随机图像。当然,servlet 必须以某种方式记住将哪个图像发送给了客户机,这样当客户机点击该图像时,他就知道应链接至何处。我们会把和发送的图像相关的元数据存储在客户机的会话上,这样,当用户点击图像时,将从他的会话装入元数据,并重新导向至适当的 URL。
链接标记看起来几乎和图像标记相同:
|
当用 type=link 键值对调用 servlet 时,servlet 抓取横幅的元数据并将用户重新路由至适当的 URL。
代码和 CLASSPATH 配置
为了使用和本文一起提供的代码,您必须首先解压缩这个 zip 文档(在 参考资料中),然后用命令行 javac 编译器或您喜欢的 IDE 编译这个 .java 文档。要编译该代码,请配置 CLASSPATH 以包含这两个 JAR 文档。
mm.mySQL-2.0.14-bin.jar(或从 MM MySQL 网站获取的其他任何版本)
servlet.jar(假如他没有和您使用的 JDK 打包在一起)
将已编译的 .class 文档复制到先前创建的 [tomcat_installdir]\webapps\banner\WEB-INF\classes 目录中。必须将作为示例提供的图像文档和 .htm 文档放入 [tomcat_installdir]\webapps\banner 目录。
数据库配置
我们应用程式的数据库部分只是用来持久存储系统中每个横幅的元数据。换句话说,我们实际上并不在数据库中存储图像文档,而只是存储指向每个图像文档的引用。在我们的数据库中,我们将使用七个列来描述每个横幅广告。
表 1 中的描述说明了每条记录将包含的内容。我们实际上将在应用程式中只使用这七个数据库列中的五个。我们的版本中没有使用 CustomerName 和 NumberOfClicksPurchased ,但我们把他们作为占位符放置在这里以用于扩展。您能够很容易地扩展这个应用程式,并把他用于现实的商业应用程式,其中客户为每个横幅的点击次数付款。
表 1. 数据库字段




