ASP執行個體之計數器程式詳解

來源:互聯網
上載者:User
程式|計數器|詳解

   Active Server Pager(動態伺服器首頁,簡稱ASP),通過讀寫伺服器的檔案,結合script語言(VBscript或Jscript)和html碼可以方便地實現頁面計數器功能。現流行的ASP教材和網路上的ASP教程都談到過ASP計數器的設計問題,但是都過於簡單,比如沒有提到怎樣實現計數器指令碼和首頁面的分離以及圖象計數器的實現等。下面就作者為單位製作NT web網站的經驗,舉執行個體循序漸進談談關於ASP計數器的設計,希望能給ASP的初學者和對ASP WEB編程有興趣的網友一些啟發。

  (一)簡單的計數器

  ASP內含五個內建的"Active Server Components"(ActiveX伺服器組件),即Database Access component(資料庫訪問組件)、File Access component(檔案訪問組件)、Ad Rotator component(廣告輪播器組件)、Brower Capabilities component(瀏覽器資訊組件)、Content Linking component(內容連結組件)。我們下面要設計的計數器,就是通過其中的File Access component(檔案訪問組件)來讀寫伺服器檔案來實現。演算法思路是:在伺服器端用一個文本(ASCII)檔案存放計數數值,每當頁面被訪問時就從檔案中讀出數值,顯示給使用者,並且使數值加1,把增加後的數值寫回到檔案。

  寫入資料到一個伺服器計數檔案的ASP語句和說明如下:
CounFile=Server.MapPath("用來存放計數器值的檔案名稱")
  Server伺服器存取方法MapPath(path)是將存放計數器值的檔案所在的路徑   轉換成實體路徑
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
  使用方法CreateObject定義對象FileSystemObject
SET OutStream=Server.CreateTextFile(FileObject,True,False)
  使用對象FileSystemObject提供方法CreateTextFile產生文字檔,其中參   數"True"表示覆蓋原來的檔案,"False"表示檔案為ASCII類型
OutStream.WriteLine "要寫入的資料"
  OutStream.WriteLine為往檔案寫入一行資料
  從一個伺服器檔案讀取資料的ASP文法如下:
CounFile=Server.MapPath("用來存放計數器值的檔案名稱")
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
SET InStream=Server.OpenTextFile(FileObject,1,false,false)
  使用對象FileSystemObject提供方法OpenTextFile產生文本文?
其中參數"True"表示覆蓋原來的檔案,"False"表示檔案為ASCII類型
"要讀取的資料"=InStream.ReadLine
其中InStream.ReadLine為從檔案中讀取的一行資料

  下面是一個用ASP實現頁面計數器功能的計數器例子(simplecounter.asp),我在代碼中詳細注釋了語句。你可以把以下代碼粘貼到你需要計數的頁面代碼中。當然,你的伺服器必須支援ASP,且你已經在首頁所在的目錄下建立了一個內容為0的文字檔simplecounter.txt。

簡單的ASP計數器simplecounter.asp代碼及注釋:
$#@60;%
CountFile=Server.MapPath("simplecounter.txt")
檔案aspconter.txt是用來儲存數位文字檔,初始內容一般是0
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE)
counter=Out.ReadLine
讀取計數器檔案中的值
Out.Close
關閉檔案
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE)
Application.lock
方法Application.lock禁止別的使用者更改計數器的值
counter= counter + 1
計數器的值增加1
Out.WriteLine(counter)
把新的計數器值寫入檔案
Application.unlock
使用方法Application.unlock後,允許別的使用者更改計數器的值
Response.Write("您是第")
Response.Write("$#@60;font color=red$#@62;")
Response.Write(counter)
把計數器的值傳送到瀏覽器,以紅(red)色顯示給使用者
Response.Write("$#@60;/font$#@62;")
Response.Write("位訪問者")
Out.Close
關閉檔案
%$#@62;

  (二)與頁面分離的計數器

  實際應用中,首頁面與計數器程式是分離的,既只要在需要計數的頁面中加入一句引用代碼就可以實現頁面計數。我們在網上經常申請使用的免費計數器就是這樣,不過它們一般是CGI做的。這裡,我們只要稍微修改一下前面我們用ASP做的簡單計數器,然後在頁面加入一句JavaScript語句引用它,就實現了與頁面分離的計數器功能。這樣,無論是作為首頁面的計數器還是為某個特定頁面的計數,都很方便了。顯然,你需要簡單更改一下存放計數器值的檔案名稱和計數器asp原始碼檔案名稱就可以實現多個計數器。
與頁面分離的計數器txtcounter.asp代碼:
$#@60;%
CountFile=Server.MapPath("txtcounter.txt")
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE)
counter=Out.ReadLine
Out.Close
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE)
Application.lock
counter= counter + 1
Out.WriteLine(counter)
Application.unlock
Response.Write"document.write("&counter&")"
為了在頁面正確顯示計數器的值,調用VBScript函數Document.write
Out.Close
%$#@62;
在要計數的頁面加入如下的代碼:
$#@60;p$#@62;
您是第
$#@60;font color=red$#@62;
$#@60;script language="JavaScript" src="http://202.101.209.75/asptemp/counter/txtcounter.asp"$#@62;
//引用時注意ASP計數器所在的伺服器及目錄路徑。
$#@60;/script$#@62;
$#@60;/font$#@62;
位來客
$#@60;/p$#@62;

  (三)與頁面分離的圖象計數器

  人們的追求是永無止境的,也許你需要一個更有個性的圖形數字計數器,而不是簡單的文本數字計數器。沒問題,現在我們就來看看用ASP是怎樣來實現圖形計數器功能的。要實現圖形計數器,關鍵點在於如何?把計數器檔案中的資料值轉變為對應的圖象表示。因為十進位數有0,1,2,3,4,5,6,7,8,9共十個不同的數數字,我們需要有十個對應的圖象,且圖象的檔案名稱字要與顯示的數字對應起來,比如0對應的數字圖象的檔案名稱字就是0.gif,1對應的就是1.gif,...(圖象自己可以用Photoshop等工具製作,或者從網路上下載)。這裡我們要用到VBScript函數Len(string | varname)、Mid(string,start[,length])。由Len(counter)可得到計數器值的位元,由Mid(counter,i,1)可以得到計數器值的第i位上的數字,我們可利用這個值來調用相應的數字圖象。用For迴圈語句,我們不難得出計數器值各個位上的數字並轉化成對應的數字圖象,這樣,我們就能實現文本數值到圖象數位轉變。下面就是一個用ASP編寫的圖象計數器執行個體,因為大部分代碼前面都分析過,所以代碼中只注釋了部分語句。

  與頁面分離的圖象計數器imgcounter.asp代碼:
$#@60;% @language="VBScript"%$#@62;
$#@60;%
dim images(20)
定義一數組,用來存放顯示每一位元字圖象的語句
CountFile=Server.MapPath("imgcounter.txt")
Set FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE)
counter=Out.ReadLine
Out.Close
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE)
Application.lock
counter= counter + 1
Out.WriteLine(counter)
Application.unlock
countlen=len(counter)
得到計數器值的位元
for i=1 to countlen
images(i)="$#@60;img src="&"http://202.101.209.75/asptemp/counter/images/"&"/" & mid(counter,i,1) & ".gif$#@62;$#@60;/img$#@62;"
由迴圈語句得到各個位上數值對應圖象的顯示代碼(html),並把它存在數組中
具體使用時請注意圖象的實際伺服器及目錄路徑
response.write"document.write("&images(i)&");"
調用函數Document.write輸出顯示數字圖象的html代碼
next
Out.Close
%$#@62;

在要計數的頁面加入如下的代碼:
$#@60;p$#@62;
您是第
$#@60;script language="JavaScript" src="http://202.101.209.75/asptemp/counter/imgcounter.asp"$#@62;
//引用時注意ASP計數器所在的伺服器及目錄路徑。
$#@60;/script$#@62;
位來客
$#@60;/p$#@62;
附註:以上asp計數器均在Windows NT Server 4.0(中文) / IIS3.0 下測試通過。以下任何一種環境都可執行ASP:
一、Windows NT Server 4.0 / IIS3.0以上
二、Windows NT WorkStation 4.0 / Microsoft Peer Web Service3.0以上
三、Windows 95/98 / Microsoft Personal Web Server 1.0a以上



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。