当因特网开始从教育和政府信息存储器转变成国际商业中心起,横幅广告就已经出现了。滚动横幅是 Web 页面上一块已分配的空间,每次装入或重新装入 Web 页面时,就用该空间内来显示广告 ― 随机显示或基于某些业务逻辑来显示。驱动滚动横幅广告的程序虽然相当简单,但却是重要的广告工具。正如它们的同类,如半分钟广播和电视广告一样,这些动态广告工具允许单个 Web 页面显示不同来源的广告,并使不同公司针对相同的观众建立他们产品和服务的品牌效应。
无论您怎么看待 Web 横幅广告(是的,我们都发现它们有时令人讨厌),它们已成为因特网上的一种生活方式。存在这样的事实:Web 的观众由庞大的消费者群体所组成,他们的金钱使电子商务的车轮得以转动。在因特网市场营销的短暂历史中,电子商务所有者已表现出他们愿意花大把的钱在热门站点上做横幅广告。
有些公司(如 doubleclick.net)已经通过担当应用程序服务供应商(ASP),提供诸如跟踪对特定横幅广告的点击之类的服务,从 Web 横幅现象中获利。随后这些 ASP 告诉广告客户他们的 Web 广告活动的有效程度。
当然,象 doubleclick.net 这样的 ASP 是要收费的。如果您和我们一样,那么您不会愿意在能够免费得到服务时还要花钱。稍等一会儿 ― 您可能已经听过世上没有免费的午餐这句话。不过别担心。该篇文章将花费的只是您的时间。事实上,我们将向您演示如何组成一个开放源码(即 免费)环境来建立您自己的功能强大的 Web 横幅跟踪系统。为了完成这一任务,我们挑选的“武器”是 Tomcat、MySQL、一个 Java servlet 和几个助手类。兴奋吗?那么,让我们进行软件安装吧。
安装 Tomcat 和 MySQL
MySQL 因其价格(免费)而成为一种强有力的数据库,许多公司都使用 MySQL 来处理它们的数据。由于许多公司都想以较低的预算进入 Web 市场,所以使用 MySQL 的公司的数量每天都在增加。开放源码社区已张开双臂欢迎 MySQL。有关这个功能强大的数据库的文档十分丰富,而且同时有 Linux 和 Windows 版本。
下载并安装 MySQL,采用“Typical”安装选项进行安装(对于该篇文章,我们假定您使用 MySQL 的 WinNT 版本)。完成安装后,您将注意到 MySQL 一个恼人的方面:它没有在 Start 菜单中放入任何东西。您需要到数据库的安装目录(缺省情况下是 c:mysql
)下,然后转至 bin
目录,在那里您会找到运行 MySQL 的可执行文件。
首先,双击 winmysqladmin.exe 文件。首次打开该文件时,会要求您输入用户名和密码。接下来,在任务栏中出现的红绿灯图标上单击鼠标右键。转至 WinNT 并选择“Start the service”以使 MySQL 在后台运行。最后,双击“mysql.exe”图标以启动“MySQL Monitor”,您将在此使用 MySQL。
使 MySQL 和 Tomcat 共同工作
既然我们已经安装了所有的软件,就让我们来看一下这个应用程序能够做什么以及我们是如何组织其架构和开发它的。
实质上,您可以使用我们的横幅 servlet 执行两个操作。首先,您可以用它查看 Web 页面上的随机横幅图像,每次装入包含横幅广告的 Web 页面时,该随机横幅图像就会出现。其次,您可以点击横幅图像,这将使您转至与装入的这个图像对应的链接。
按照 HTML,其代码类似于:
为了使用与该篇文章一起提供的代码,您必须首先解压缩这个 zip 文件(在 参考资料中),然后用命令行 javac
编译器或您喜欢的 IDE 编译这个 .java
文件。要编译该代码,请设置 CLASSPATH
以包含这两个 JAR 文件。
mm.mySQL-2.0.14-bin.jar
(或从 MM MySQL 网站获取的其它任何版本) 我们应用程序的数据库部分只是用来持久存储系统中每个横幅的元数据。换句话说,我们实际上并不在数据库中存储图像文件,而只是存储指向每个图像文件的引用。在我们的数据库中,我们将使用七个列来描述每个横幅广告。
表 1 中的描述说明了每条记录将包含的内容。我们实际上将在应用程序中只使用这七个数据库列中的五个。我们的版本中没有使用 CustomerName
和 NumberOfClicksPurchased
,但我们把它们作为占位符放置在这里以用于扩展。您可以很容易地扩展这个应用程序,并把它用于现实的商业应用程序,其中客户为每个横幅的点击次数付款。
表 1. 数据库字段
接下来,我们创建表:
|
ADS 表的“describe”操作类似于图 1 所示。
图 1. ADS 表
IMAGEFILE | sitea.gif | siteb.gif | sitec.gif | sited.gif |
URL | http://www.cnn.com | http://www.news.com | http://www.ibm.com | http://www.yahoo.com |
CUSTOMERNAME | John Doe | Albert Einstein | Jane Doe | Madonna |
NUMBEROFCLICKSPURCHASED | 100 | 20 | 30 | 20 |
NUMBEROFCLICKSREMAINING | 100 | 20 | 30 | 20 |
NUMBEROFIMPRESSIONS | 0 | 0 | 0 | 0 |
BANNERWEIGHT | 10 | 10 | 30 | 10 |
注:Web 横幅 URL 位于本地主机,仅供测试之用。在生产环境中,URL 会指向 GIF 文件的实际位置。该 URL 实际上可以是因特网上的任何位置。
既然我们有了数据库,就需要使用刚刚填入其中的数据。我们将用 Java servlet 做到这一点。下面描述 Java servlet 代码,它将“推动”我们的努力。您或许希望花一些时间来通读该项目 zip 文件中的 BannerServlet.java 代码。如果您觉得困难,别担心;我们将花一些时间解释代码是如何工作的。
横幅体系结构
Logger
类非常简单。它有单个字段,代表我们正在写入日志的 File
对象。您可以将对单个 Logger
对象的引用传递给几个类,让这些类都写入同一个日志文件。 Logger
类允许您做以下事情。您可以:
File
对象
我们将同时在 DBHandler
类和 BannerServlet
中使用 Logger
对象。
DBHandler 类
Banner
类只是一组直接对应于 ADS 数据库表中各列的值的 setter
和 getter
方法。
BannerServlet 类
我们已经创建一个应用程序,该应用程序演示了 Apache Tomcat 和 MySQL 相互之间如何通信,并向您提供了一个能为您处理大多数数据库工作的、非常有用的可重用工具。您可以以几种方式来扩展这个应用程序,这些已超出该篇文章的范围。正如我们前面描述的那样,您可以把这个应用程序扩展成一个系统,在这个系统中,您可以根据特定点击次数或者甚至是特定的显示次数向客户收费。可以很容易地用某个其它字段替代数据库中的 CustomerName
字段,这个字段可以是另一个包含所有客户信息的表中的主键。
您可以扩充 DBHandler
类以处理数据库连接合用。此外,可以将希望用于应用程序的查询具体化成文本、特性或 XML 文件,从而允许扩充或更改查询定义而无需编写更多代码。
当因特网开始从教育和政府信息存储器转变成国际商业中心起,横幅广告就已经出现了。滚动横幅是 Web 页面上一块已分配的空间,每次装入或重新装入 Web 页面时,就用该空间内来显示广告 ― 随机显示或基于某些业务逻辑来显示。驱动滚动横幅广告的程序虽然相当简单,但却是重要的广告工具。正如它们的同类,如半分钟广播和电视广告一样,这些动态广告工具允许单个 Web 页面显示不同来源的广告,并使不同公司针对相同的观众建立他们产品和服务的品牌效应。
无论您怎么看待 Web 横幅广告(是的,我们都发现它们有时令人讨厌),它们已成为因特网上的一种生活方式。存在这样的事实:Web 的观众由庞大的消费者群体所组成,他们的金钱使电子商务的车轮得以转动。在因特网市场营销的短暂历史中,电子商务所有者已表现出他们愿意花大把的钱在热门站点上做横幅广告。
有些公司(如 doubleclick.net)已经通过担当应用程序服务供应商(ASP),提供诸如跟踪对特定横幅广告的点击之类的服务,从 Web 横幅现象中获利。随后这些 ASP 告诉广告客户他们的 Web 广告活动的有效程度。
当然,象 doubleclick.net 这样的 ASP 是要收费的。如果您和我们一样,那么您不会愿意在能够免费得到服务时还要花钱。稍等一会儿 ― 您可能已经听过世上没有免费的午餐这句话。不过别担心。该篇文章将花费的只是您的时间。事实上,我们将向您演示如何组成一个开放源码(即 免费)环境来建立您自己的功能强大的 Web 横幅跟踪系统。为了完成这一任务,我们挑选的“武器”是 Tomcat、MySQL、一个 Java servlet 和几个助手类。兴奋吗?那么,让我们进行软件安装吧。
安装 Tomcat 和 MySQL
MySQL 因其价格(免费)而成为一种强有力的数据库,许多公司都使用 MySQL 来处理它们的数据。由于许多公司都想以较低的预算进入 Web 市场,所以使用 MySQL 的公司的数量每天都在增加。开放源码社区已张开双臂欢迎 MySQL。有关这个功能强大的数据库的文档十分丰富,而且同时有 Linux 和 Windows 版本。
下载并安装 MySQL,采用“Typical”安装选项进行安装(对于该篇文章,我们假定您使用 MySQL 的 WinNT 版本)。完成安装后,您将注意到 MySQL 一个恼人的方面:它没有在 Start 菜单中放入任何东西。您需要到数据库的安装目录(缺省情况下是 c:mysql
)下,然后转至 bin
目录,在那里您会找到运行 MySQL 的可执行文件。
首先,双击 winmysqladmin.exe 文件。首次打开该文件时,会要求您输入用户名和密码。接下来,在任务栏中出现的红绿灯图标上单击鼠标右键。转至 WinNT 并选择“Start the service”以使 MySQL 在后台运行。最后,双击“mysql.exe”图标以启动“MySQL Monitor”,您将在此使用 MySQL。
使 MySQL 和 Tomcat 共同工作
既然我们已经安装了所有的软件,就让我们来看一下这个应用程序能够做什么以及我们是如何组织其架构和开发它的。
实质上,您可以使用我们的横幅 servlet 执行两个操作。首先,您可以用它查看 Web 页面上的随机横幅图像,每次装入包含横幅广告的 Web 页面时,该随机横幅图像就会出现。其次,您可以点击横幅图像,这将使您转至与装入的这个图像对应的链接。
按照 HTML,其代码类似于:
为了使用与该篇文章一起提供的代码,您必须首先解压缩这个 zip 文件(在 参考资料中),然后用命令行 javac
编译器或您喜欢的 IDE 编译这个 .java
文件。要编译该代码,请设置 CLASSPATH
以包含这两个 JAR 文件。
mm.mySQL-2.0.14-bin.jar
(或从 MM MySQL 网站获取的其它任何版本) 我们应用程序的数据库部分只是用来持久存储系统中每个横幅的元数据。换句话说,我们实际上并不在数据库中存储图像文件,而只是存储指向每个图像文件的引用。在我们的数据库中,我们将使用七个列来描述每个横幅广告。
表 1 中的描述说明了每条记录将包含的内容。我们实际上将在应用程序中只使用这七个数据库列中的五个。我们的版本中没有使用 CustomerName
和 NumberOfClicksPurchased
,但我们把它们作为占位符放置在这里以用于扩展。您可以很容易地扩展这个应用程序,并把它用于现实的商业应用程序,其中客户为每个横幅的点击次数付款。
表 1. 数据库字段
您需要用一些样本值来填充数据库以便确定所构建的数据库是否正确。该项目的 zip 文件中包括一些样本横幅(GIF 格式),可以使用它们以了解应用程序运行时的情况。当然,对于 Web 横幅 URL,需要声明您决定放置横幅文件的位置。可以按照下面的 SQL 语法将横幅“注册”到数据库中:
|
使用这一语法将表 2 中显示的记录插入到数据库中。
表 2. 数据库记录
这个横幅广告 servlet 的体系结构十分简单。我们将使用四个类:
通用的Logger
类,一个将日志消息写到文该篇文章件的类。 Logger
类非常简单。它有单个字段,代表我们正在写入日志的 File
对象。您可以将对单个 Logger
对象的引用传递给几个类,让这些类都写入同一个日志文件。 Logger
类允许您做以下事情。您可以:
File
对象
我们将同时在 DBHandler
类和 BannerServlet
中使用 Logger
对象。
DBHandler 类
Banner
类只是一组直接对应于 ADS 数据库表中各列的值的 setter
和 getter
方法。
BannerServlet 类
我们已经创建一个应用程序,该应用程序演示了 Apache Tomcat 和 MySQL 相互之间如何通信,并向您提供了一个能为您处理大多数数据库工作的、非常有用的可重用工具。您可以以几种方式来扩展这个应用程序,这些已超出该篇文章的范围。正如我们前面描述的那样,您可以把这个应用程序扩展成一个系统,在这个系统中,您可以根据特定点击次数或者甚至是特定的显示次数向客户收费。可以很容易地用某个其它字段替代数据库中的 CustomerName
字段,这个字段可以是另一个包含所有客户信息的表中的主键。
您可以扩充 DBHandler
类以处理数据库连接合用。此外,可以将希望用于应用程序的查询具体化成文本、特性或 XML 文件,从而允许扩充或更改查询定义而无需编写更多代码。