设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> 数据库应用 >> Oracle >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
教你如何编写高效的MySQ…
解析MySQL数据库是如何对…
如何学习Oracle
如何保持Oracle数据库的…
如何通过C API远程连接M…
如何实现两台MySQL数据库…
如何使用MYSQL数据库进行…
教你如何将MySQL数据库的…
教你如何使用MYSQL来备份…
如何用PHP连接mysql和or…
  如何用Tomcat和MySQL生成动态内容         
如何用Tomcat和MySQL生成动态内容
 

Javid Jamae(javidjamae@yahoo.com),独立软件顾问,Jamae Consulting

Kulvir Singh Bhogal(kbhogal@us.ibm.com),IBM WebSphere 服务顾问,IBM

2002 年 11 月

象 doubleclick.net 这样的公司依靠在 Web 上提供横幅广告服务已经赚了很多钱。他们提供的服务很棒,但为什么要为自己本来可以做的事情而付钱呢?在本文中,企业 Java 顾问 Javid Jamae 和 Kulvir Bhogal 将演示如何使用全开放源码环境:Apache Tomcat、MySQL 和 MM MySQL JDBC 驱动程序,来创建滚动横幅广告。首先,他们将向您逐步介绍必需的 Tomcat 和 MySQL 安装,然后向您演示如何安装 MM MySQL JDBC 驱动程序以允许运行在 Tomcat 中的 Java servlet 与 MySQL 进行通信。

当因特网开始从教育和政府信息存储器转变成国际商业中心起,横幅广告就已经出现了。滚动横幅是 Web 页面上一块已分配的空间,每次装入或重新装入 Web 页面时,就用该空间内来显示广告 — 随机显示或基于某些业务逻辑来显示。驱动滚动横幅广告的程序虽然相当简单,但却是重要的广告工具。正如它们的同类,如半分钟广播和电视广告一样,这些动态广告工具允许单个 Web 页面显示不同来源的广告,并使不同公司针对相同的观众建立他们产品和服务的品牌效应。

无论您怎么看待 Web 横幅广告(是的,我们都发现它们有时令人讨厌),它们已成为因特网上的一种生活方式。存在这样的事实:Web 的观众由庞大的消费者群体所组成,他们的金钱使电子商务的车轮得以转动。在因特网市场营销的短暂历史中,电子商务所有者已表现出他们愿意花大把的钱在热门站点上做横幅广告。

有些公司(如 doubleclick.net)已经通过担当应用程序服务供应商(ASP),提供诸如跟踪对特定横幅广告的点击之类的服务,从 Web 横幅现象中获利。随后这些 ASP 告诉广告客户他们的 Web 广告活动的有效程度。

当然,象 doubleclick.net 这样的 ASP 是要收费的。如果您和我们一样,那么您不会愿意在能够免费得到服务时还要花钱。稍等一会儿 — 您可能已经听过世上没有免费的午餐这句话。不过别担心。本文将花费的只是您的时间。事实上,我们将向您演示如何组成一个开放源码(即免费)环境来建立您自己的功能强大的 Web 横幅跟踪系统。为了完成这一任务,我们挑选的“武器”是 Tomcat、MySQL、一个 Java servlet 和几个助手类。兴奋吗?那么,让我们进行软件安装吧。

安装 Tomcat 和 MySQL

在这一节中,我们将逐步介绍 Tomcat 和 MySQL 的安装。然后,我们将向您介绍如何安装支持这两个应用程序相互通信所需的驱动程序。

安装 Tomcat

下载并安装 Tomcat。对于本文,我们使用了 Tomcat 4.1 Windows 版,它有一个很好的安装软件包,并且会为您创建图标和 Start 菜单文件夹。它还创建一个用于启动和停止 Tomcat 服务器的“Windows 服务(Windows Service)”。安装应该非常简单,但如果您遇到麻烦,请查阅 Tomcat 文档。因为 Tomcat 非常流行,所以在新闻组和 Web 上也可找到大量的帮助,参考资料中列出了其中的一部分。

安装了 Tomcat 之后,还要完成几个步骤以设置我们的滚动横幅 Web 应用程序。首先,我们将在 [installdir]\webapps 目录下创建一个名为 banner 的子目录。然后在 banner 子目录下,创建标准的 Web 应用程序目录结构:

[installdir]\webapps\banner 

[installdir]\webapps\banner\WEB-INF 

[installdir]\webapps\banner\WEB-INF\classes 

[installdir]\webapps\banner\WEB-INF\lib
接下来,我们将添加指向我们 Web 应用程序的 context。context 只是一个别名,它告诉 Tomcat 在哪里可以访问 Web 应用程序。我们的 context 路径将是 /banner,它将指向我们刚刚创建的 banner 子目录。在用户输入 http://localhost:8080/banner 后,将转至 webapps 下的顶级 banner 目录。如果他想运行我们的 BannerServlet(将存在于 WEB-INF/classes 目录中),他可以使用 http://localhost:8080/banner/servlet/BannerServlet。

要添加 /banner context,首先,我们需要编辑 Tomcat conf 目录中的 server.xml 文件。在接近该文件底部的位置,您会看到几个 context 标记。那里应该有一个用于 /admin 的 context 和一个用于 /examples 的 context。请添加以下 context 标记:

<!-- BannerAd Context --> 

<Context path="/banner" docBase="banner" 

debug="0" reloadable="true" crossContext="true"/>

添加了 context 标记之后,重新启动 Tomcat 以使对 server.xml 文件所做的更改生效(在我们的示例中,我们只重新启动 Tomcat 安装的 Windows 服务)。

安装 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 共同工作

使 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,其代码类似于:

<a href="...Link For Random Image..."> 

<ccid_file values="" Image..."/ /> 

</a>

如果希望装入随机图像,那么显然图像标记不能指向静态图像文件,因此我们将指示它运行 servlet,本例中将调用 BannerServlet。我们将使用 HTTP GET 方法参数来指示 servlet 为我们提供图像。因此,图像标记类似于:

<ccid_file values="http://localhost:8080/banner/servlet/BannerServlet?type=image/" />

该标记调用 servlet 并传入参数键值对 type=image。servlet 的 service() 方法会解释该请求,然后向浏览器返回随机图像。当然,servlet 必须以某种方式记住将哪个图像发送给了客户机,这样当客户机点击该图像时,它就知道应链接至何处。我们会把与发送的图像相关的元数据存储在客户机的会话上,这样,当用户点击图像时,将从他的会话装入元数据,并重新导向至适当的 URL。

链接标记看起来几乎与图像标记相同:

<a href="http://localhost:8080/banner/servlet/BannerServlet?type=link"> 

<ccid_file values="http://localhost:8080/banner/servlet/BannerServlet?type=image/" /> 

</a>

当用 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.

数据库字段 字段名称 描述 示例 

ImageFile 对横幅图像物理位置的引用 /images/sitea.gif 

URL 站点用户点击横幅之后,应重新路由他们的目标 URL http://www.sitea.com 

CustomerName 购买横幅的客户名称 John Doe 

NumberOfClicksPurchased 用户购买的点击次数 140 

NumberOfClicksRemaining 客户剩余的点击次数 139 

NumberOfImpressions 横幅已被显示的次数 23 

BannerWeight 正在显示的这一横幅的权重 10

当然,在现实环境中,您会有一个以上的站点横幅。根据您的横幅“赞助商”支付的金额与其他赞助商的比较,您可能希望较多地或较少地显示他的横幅。 BannerWeight 字段将被用来实现这一功能。我们已经实现了一个非常简单的加权系统,每个要显示的横幅所具有的百分比概率为:

(BannerWeight / Sum of all BannerWeights) * 100

将刚才所说的内容转换成 SQL,您可以使用 MySQL Monitor 输入以下语句:

mysql> create database BANNER;

要连接到数据库,您可以输入:

mysql> use BANNER;

接下来,我们创建表:

mysql> create table ADS 

(IMAGEFILE VARCHAR(50) NOT NULL, 

URL VARCHAR(50) NOT NULL, 

CUSTOMERNAME VARCHAR(50), 

NUMBEROFCLICKSPURCHASED INT(4), 

NUMBEROFCLICKSREMAINING INT(4) NOT NULL, 

NUMBEROFIMPRESSIONS INT(4) NOT NULL, 

BANNERWEIGHT INT(4) NOT NULL);

您需要用一些样本值来填充数据库以便确定所构建的数据库是否正确。该项目的 zip 文件中包括一些样本横幅(GIF 格式),可以使用它们以了解应用程序运行时的情况。当然,对于 Web 横幅 URL,需要声明您决定放置横幅文件的位置。可以按照下面的 SQL 语法将横幅“注册”到数据库中:

mysql> insert into ADS values('/sitea.gif','http://www.cnn.com', 

  'John Doe',100,100,0,10);

使用这一语法将表 2 中显示的记录插入到数据库中。

表 2.

数据库记录 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 文

[1] [2] 下一页

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-1-3 3:31:14
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持