當因特網開始從教育和政府信息存儲器轉變成國際商業中心起,橫幅廣告就已經出現了。滾動橫幅是 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 應用程序。首先,我們將在 [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 標記:
添加了 context 標記之後,重新啟動 Tomcat 以使對 server.xml 文件所做的更改生效在我們的示例中,我們只重新啟動 Tomcat 安裝的 Windows 服務)。
安裝 MySQLs
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,其代碼類似於:
如果希望裝入隨機圖像,那麼顯然圖像標記不能指向靜態圖像文件,因此我們將指示它運行 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. 數據庫字段
字段名稱
描述
示例
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;