用ASP技術(shù)得到首頁被訪問次數(shù)的3種方法
發(fā)表時間:2024-05-25 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]用ASP技術(shù)得到主頁被訪問次數(shù)的三種方法 華中理工大學(xué)自動控制工程系 周茜 田忠和 ASP 是Microsoft Active Server Pages 的縮寫,即動態(tài)服務(wù)器主頁。 它是服務(wù)器端腳本編寫環(huán)境,在Web服務(wù)器上解釋腳本,可以組合HTML頁、腳本命令和Ac...
用ASP技術(shù)得到主頁被訪問次數(shù)的三種方法
華中理工大學(xué)自動控制工程系 周茜 田忠和
ASP 是Microsoft Active Server Pages 的縮寫,即動態(tài)服務(wù)器主頁。
它是服務(wù)器端腳本編寫環(huán)境,在Web服務(wù)器上解釋腳本,可以組合HTML頁、腳本命令和ActiveX組件來創(chuàng)建動態(tài)、交互式、高效率的 Web 頁和基于 Web 的功能強(qiáng)大的服務(wù)器應(yīng)用程序。ASP 可以在Microsoft 的任何 Web服務(wù)器上發(fā)布各種動態(tài)數(shù)據(jù),而且ASP應(yīng)用程序很容易開發(fā)和修改。
ASP技術(shù)之所以容易,很重要的原因是 ASP 技術(shù)充分利用各種功能強(qiáng)大的內(nèi)嵌對象和ActiveX組件來執(zhí)行任務(wù)。ActiveX組件是包含在動態(tài)鏈接庫(.dll)或可執(zhí)行文件(.exe)中的可執(zhí)行某項(xiàng)或一組任務(wù)的代碼。因?yàn)榻M件可以執(zhí)行公用任務(wù),所以不必自己去創(chuàng)建執(zhí)行這些任務(wù)的代碼,可以直接利用組件作為腳本和基于 Web 應(yīng)用程序的基本構(gòu)造塊。只要知道如何訪問和控制組件所提供的對象,即使是編寫腳本的新手,也可以在不了解組件運(yùn)作方式的情況下編寫腳本。
要使用組件提供的對象,首先要創(chuàng)建對象的實(shí)例并將這個新的實(shí)例分配變量名。使用 ASP 的 Server.CreateObject 方法可以創(chuàng)建對象的實(shí)例。然后,使用腳本語言的變量分配指令為對象實(shí)例命名。創(chuàng)建對象實(shí)例時,必須提供實(shí)例的注冊名稱(PROGID)。
對于一個 Web 站點(diǎn),我們通常需要記錄其被訪問的次數(shù)。本文針對這個問題,提出三種方法供參考。
<一>利用Page Counter 組件
Page Counter 組件可以創(chuàng)建 PageCounter 對象,以記錄和顯示 Web 頁被打開的次數(shù)。每隔一定的時間,此對象將訪問次數(shù)寫入文本文件以便數(shù)據(jù)不會在服務(wù)器關(guān)機(jī)時丟失。Page Counter 組件使用一個內(nèi)部 Central Management 對象來記錄應(yīng)用程序中的每一頁被打開的次數(shù)。當(dāng)使用 Server.CreateObject 方法在一頁上創(chuàng)建 PageCounter 對象的實(shí)例時,此對象從 Central Management 對象中獲取指定Web頁的當(dāng)前訪問次數(shù)后,就可以使用此對象已有的方法來操作了。
語法:<% Set oVar = Server.CreateObject("MSWC.PageCounter") %>
參數(shù):oVar 指定通過調(diào)用 Server.CreateObject 創(chuàng)建的 PageCounter 對象
的名稱。
方法
Hits 顯示指定的 URL 被打開的次數(shù)。
PageHit 增加訪問次數(shù)。
Reset 將指定的頁的訪問次數(shù)設(shè)置為 0。
注意:PageCounter 對象不是內(nèi)嵌對象,所以必須進(jìn)行注冊。當(dāng)此對象被編譯或注冊時,頁計數(shù)器向注冊表添加 MSWC.PageCounter 鍵。該鍵被添加到 HKEY_CLASSES_ROOT 下且包括下列命名值。
2.File_Location 字符串,
指定記錄訪問次數(shù)的文件的路徑名和文件名。默認(rèn)的文件名為 hitcnt.cnt。此文件存放在 Windows 目錄下。
2.Save_Count DWORD 型,
指明在訪問次數(shù)被存儲到 Hit Count Data 文件前的訪問次數(shù)。注意,這是訪問的總數(shù)而不是每一頁的訪問次數(shù)。默認(rèn)值為 25。
下例使用 PageCounter 對象跟蹤訪問者的個數(shù)并發(fā)送特定的消息。
<% Set MyPageCounter = Server.CreateObject("MSWC.PageCounter")
HitMe = MyPageCounter.Hits
%>
您是第<%= HitMe %>位訪問者。
<二>利用 File Access 組件
因?yàn)?Page Counter 組件并沒有和IIS 一起安裝,必須另行安裝方可使用。若沒有安裝 Page Counter 組件,則可以采用File Access 組件。 File Access 組件可用來訪問計算機(jī)文件系統(tǒng)的方法和屬性。用戶可以使用 File Access 組件創(chuàng)建 FileSystemObject 對象,該對象提供用于訪問文件系統(tǒng)的方法、屬性和集合。
以下的實(shí)例說明了如何記錄被訪問的次數(shù)。
<% ‘(1)
Do While Application("bar") = 1
Application.Lock
Application("bar") = 0
Application.Unlock
%>
<% ‘(2)
Set fs = CreateObject("Scripting.FileSystemObject")
Set fr = fs.OpenTextFile("visitors.txt", ForReading,TristateFalse)
'表示 以只讀模式、ASCII 格式打開文件 visitors.txt ,返回一個
'TextStream 對象 fr,visitors.txt保存的是被訪問的次數(shù)。
visitors = fr.Read(10)
fr.Close
count = CLng(visitors)
count = count + 1 '將被訪問的次數(shù)加 1。
visitors = CStr(count)
Set fw = fs.OpenTextFile("visitors.txt", 2,TristateFalse)
fw.Write(visitors) '將新的訪問次數(shù)寫人visitors.txt保存
fw.Close
%>
<% Application.Lock ‘(3)
Application("bar") = 1
Application.Unlock
Exit Do
Loop
%>
歡迎您!
您是第<%=count%>位訪問者!
利用 File Access 組件實(shí)現(xiàn)記錄被訪問次數(shù),要注意多用戶的并發(fā)操作問題。如果多個用戶同時進(jìn)行鏈接,則可能出現(xiàn)錯誤。要防止這一現(xiàn)象,可以采用設(shè)置標(biāo)志的方法,一次只有一個用戶對文件 visitors.txt 進(jìn)行讀寫操作.以上實(shí)例中的(1)、(3)段是完成此保護(hù)功能。這時用到了Application 的內(nèi)嵌對象,下一節(jié)將專門討論這一技術(shù)。
<三>利用 Application 內(nèi)嵌對象
內(nèi)嵌對象的特殊性在于,它們在 ASP 頁內(nèi)生成且在腳本中使用它們前無須創(chuàng)建?梢允褂 Application 對象在給定的應(yīng)用程序的所有用戶之間共享信息; ASP 的應(yīng)用程序同所有的 .asp 文件一樣在一個虛擬目錄及其子目錄中定義。我們可以將值存儲在 Application 集合中。存儲在 Application 集合中的信息在整個應(yīng)用程序中有效且具有應(yīng)用程序作用域。這時要注意因?yàn)槎鄠用戶可以共享 Application 對象,所以必須要有 Lock 和 Unlock 方法以確保多個用戶無法同時改變某一屬性。
下列示例使用應(yīng)用程序變量 NumVisitors 存儲某特定頁被訪問的次數(shù)。調(diào)用 Lock 方法是為了保證只有當(dāng)前客戶才能訪問和更改 NumVisitors。調(diào)用 Unlock 方法之后,即可允許其他用戶訪問 Application 對象。
<%
Application.Lock
Application("NumVisitors") = Application("NumVisitors") + 1
Application.Unlock
%>
您是第<%= Application("NumVisitors") %> 位訪問者!
從上面的實(shí)例中可以看出,采用 Application 內(nèi)嵌對象來記錄訪問次數(shù)是非常方便的。但是一旦服務(wù)器關(guān)機(jī)或重啟動,則 Application("NumVisitors") 的值將恢復(fù)為0,這種情況也是不允許的。這時我們可以對其進(jìn)行保護(hù)。仿照Page Counter 組件創(chuàng)建的 PageCounter 對象的功能,定期將Application("NumVisitors") 的值存入到一個指定的文件中。例如,每次對 Application("NumVisitors") 進(jìn)行操作后,都利用 File Access 組件創(chuàng)建的對象保存新的值,具體方法可參照<二>的有關(guān)內(nèi)容。
以上三種方法都可以可靠地記錄主頁被訪問的次數(shù),繁易程度也是一目了然的。首選方法當(dāng)然是利用Page Counter 組件,其次是利用Application 內(nèi)嵌對象,輔以 File Access 組件。單獨(dú)地利用 Application 內(nèi)嵌對象或File Access 組件,都存在不可避免的缺點(diǎn)。