該組件用於創建一個或多個計數器,這些計數器用於跟蹤某一網頁或某一網站訪問次數的信息。你只能創建一個計數器組件,但該組件可以有多於一個的計數器。
一旦創建了計數器,它將一直持續下去直到被刪除為止。
計數器不會在一個事件比如訪問一頁時自動增加。你必須使用Set和Increment方法人工的設置或增長計數器。
計數器不受作用域限制。一旦創建了一個計數器,那麼站點上的任何頁都可以檢索和控制它的值。
一、Counters.Set & Counters.GetCounters.Set主要用來設置記數初始值,Counters.Get則是用來提取記數的值。
1,counts_set.asp
<%
Set Counters=server.createobject("MSWC.Counters")
Counters.Set "cnbruce",10
Counters.set "it365cn",20
Counters.set "blueidea",30
%>
共有<%= Counters.Get("cnbruce") %>次訪問 cnbruce.com 網站 <br>
共有<%= Counters.Get("it365cn") %>次訪問 it365cn.com 網站 <br>
共有<%= Counters.Get("blueidea") %>次訪問 blueidea.com 網站 <br>
用法很簡單,首先“
Counters=server.createobject("MSWC.Counters")”表示建立了一Counters組件的連接;
Counters.Set "cnbruce",10表示記數了名為“cnbruce”的初始值10;
Counters.Get("cnbruce")就表示提取名為“cnbruce”的記數值了。
二、Counters.Increment該方法的功能是:記數每次加一。在上例中你刷新頁面,記數是不會添加的,所以現在換用Increment方法。
2,counts_inc.asp
<%
Set Counters=server.createobject("MSWC.Counters")
%>
共有<%= Counters.Increment("cnbruce") %>次訪問 cnbruce.com 網站 <br>
共有<%= Counters.Increment("it365cn") %>次訪問 it365cn.com 網站 <br>
共有<%= Counters.Increment("blueidea") %>次訪問 blueidea.com 網站 <br>
基本代碼相似,主要就是Counters.Increment的功能累加1。
根據累加可以做個簡單的投票系統了。
3,vote.asp
<%
set Counters=server.createobject("MSWC.Counters")
vote = Request.QueryString("site")
Counters.Increment(vote)
%>
Vote for your Favorite Site:
<FORM NAME="Voting for Sites" METHOD="GET" ACTION="vote.asp">
<input type="RADIO" NAME="site" VALUE="cnbruce">cnbruce
<input type="RADIO" NAME="site" VALUE="it365cn">it365cn
<input type="RADIO" NAME="site" VALUE="blueidea">blueidea
<BR><INPUT TYPE="SUBMIT" VALUE="Submit Vote">
</FORM>
Current Vote Tally:<BR>
Cnbruce: <% =Counters.Get("cnbruce") %><BR>
It365cn: <% = Counters.Get("it365cn") %><BR>
Blueidea: <% = Counters.Get("blueidea") %><BR>
功能是選擇某單選按鈕後提交,其對應的記數值則Counters.Increment
三、Counters.Remove該對象則是起的記數清空的作用了。
4,remove.asp
<%
set Counters=server.createobject("MSWC.Counters")
vote = Request.QueryString("site")
clear = Request.QueryString("clear")
Counters.Increment(vote)
If Not clear="" Then
Counters.Remove("cnbruce")
Counters.Remove("it365cn")
Counters.Remove("blueidea")
End If
%>
Vote for your Favorite Site:
<FORM NAME="Voting for Sites" METHOD="GET" ACTION="remove.asp">
<input type="RADIO" NAME="site" VALUE="cnbruce">cnbruce
<input type="RADIO" NAME="site" VALUE="it365cn">it356cn
<input type="RADIO" NAME="site" VALUE="blueidea">blueidea
<BR><INPUT TYPE="SUBMIT" VALUE="Submit Vote">
</FORM>
Current Vote Tally:<BR>
Cnbruce: <% =Counters.Get("cnbruce") %><BR>
It365cn: <% = Counters.Get("it365cn") %><BR>
Blueidea: <% = Counters.Get("blueidea") %>
<FORM NAME="Clear Counters" METHOD="GET" ACTION="remove.asp">
<BR><INPUT TYPE="SUBMIT" VALUE="Clear the Counters" NAME="clear">
</FORM>
通過今天的接觸可以總結出,一個簡單的記數系統已經有兩種方法:使用Application對象、使用Counters組件。但更多的還有采用FSO,或者是需要數據庫的就是後話慢慢談了。
在我們使用ASP組件時候還要注意一些東西:
當我們使用服務器組件創建對象時,一般有兩種方法。比較常用的方法是用SERVER對象的CreateObject() 方法,象這樣:
SET NextLink = Server.CreateObject("MSWC.NextLink")
這種方法很好用,但是還有一種方法更節省系統資源。因為當你用Server.CreateObject()方法創建對象時,對象立即被加載,同時系統為這個對象分配好內存和其它資源。
第二種創建對象的方法是利用HTML的<OBJECT>標記,語法是這樣的:
<OBJECT Runat=Sever ID=NextLink ProgID="MSWC.NextLink" ></OBJECT>
利用<OBJECT>標記創建對象時,你要創建的對象不被馬上加載,而是等到這個對象的方法或屬性第一次被引用時才加載。這樣,我們就會節省一些資源。雖然不是很多,但是當你的系統每天要承受近百萬次的點擊時,這對節省服務器資源就很有幫助了。(Pine譯注)
如其所言:我們的Counters則可以放於global.asa中
<OBJECT RUNAT=Server SCOPE=Application ID=Counter PROGID="MSWC.Counters"></OBJECT>