ASP實例:計數(shù)器程序詳解_ASP教程
推薦:ASP實例學(xué)習(xí):隨機(jī)生成文件名的函數(shù)以下為引用的內(nèi)容: <html> <meta http-equiv="Refresh" content="2"> <!-- Place this
Active Server Pager(動態(tài)服務(wù)器主頁,簡稱ASP),通過讀寫服務(wù)器的文件,結(jié)合script語言(VBscript或Jscript)和html碼可以方便地實現(xiàn)頁面計數(shù)器功能。現(xiàn)流行的ASP教材和網(wǎng)絡(luò)上的ASP教程都談到過ASP計數(shù)器的設(shè)計問題,但是都過于簡單,比如沒有提到怎樣實現(xiàn)計數(shù)器腳本和主頁面的分離以及圖象計數(shù)器的實現(xiàn)等。下面就作者為單位制作NT web站點的經(jīng)驗,舉實例循序漸進(jìn)談?wù)勱P(guān)于ASP計數(shù)器的設(shè)計,希望能給ASP的初學(xué)者和對ASP WEB編程有興趣的網(wǎng)友一些啟發(fā)。
(一)簡單的計數(shù)器
ASP內(nèi)含五個內(nèi)置的"Active Server Components"(ActiveX服務(wù)器組件),即Database Access component(數(shù)據(jù)庫訪問組件)、File Access component(文件訪問組件)、Ad Rotator component(廣告輪播器組件)、Brower Capabilities component(瀏覽器信息組件)、Content Linking component(內(nèi)容鏈接組件)。我們下面要設(shè)計的計數(shù)器,就是通過其中的File Access component(文件訪問組件)來讀寫服務(wù)器文件來實現(xiàn)。算法思路是:在服務(wù)器端用一個文本(ASCII)文件存放計數(shù)數(shù)值,每當(dāng)頁面被訪問時就從文件中讀出數(shù)值,顯示給用戶,并且使數(shù)值加1,把增加后的數(shù)值寫回到文件。
寫入數(shù)據(jù)到一個服務(wù)器計數(shù)文件的ASP語句和說明如下:
CounFile=Server.MapPath("用來存放計數(shù)器值的文件名")
Server服務(wù)器訪問方法MapPath(path)是將存放計數(shù)器值的文件所在的路徑轉(zhuǎn)換成物理路徑
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
使用方法CreateObject定義對象FileSystemObject
SET OutStream=Server.CreateTextFile(FileObject,True,False)
使用對象FileSystemObject提供方法CreateTextFile產(chǎn)生文本文件,其中參 數(shù)"True"表示覆蓋原來的文件,"False"表示文件為ASCII類型
OutStream.WriteLine "要寫入的數(shù)據(jù)"
OutStream.WriteLine為往文件寫入一行數(shù)據(jù)
從一個服務(wù)器文件讀取數(shù)據(jù)的ASP語法如下:
CounFile=Server.MapPath("用來存放計數(shù)器值的文件名")
SET FileObject=Server.CreateObject("Scripting.FileSystemObject")
SET InStream=Server.OpenTextFile(FileObject,1,false,false)
使用對象FileSystemObject提供方法OpenTextFile產(chǎn)生文本文?其中參數(shù)"True"表示覆蓋原來的文件,"False"表示文件為ASCII類型"要讀取的數(shù)據(jù)"=InStream.ReadLine,其中InStream.ReadLine為從文件中讀取的一行數(shù)據(jù)。
下面是一個用ASP實現(xiàn)頁面計數(shù)器功能的計數(shù)器例子(simplecounter.asp),我在代碼中詳細(xì)注釋了語句。你可以把以下代碼粘貼到你需要計數(shù)的頁面代碼中。當(dāng)然,你的服務(wù)器必須支持ASP,且你已經(jīng)在主頁所在的目錄下創(chuàng)建了一個內(nèi)容為0的文本文件simplecounter.txt。
簡單的ASP計數(shù)器simplecounter.asp代碼及注釋:
以下為引用的內(nèi)容: $#@60;% CountFile=Server.MapPath("simplecounter.txt") 文件aspconter.txt是用來儲存數(shù)字的文本文件,初始內(nèi)容一般是0 Set FileObject=Server.CreateObject("Scripting.FileSystemObject") Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE) counter=Out.ReadLine |
讀取計數(shù)器文件中的值
Out.Close
關(guān)閉文件
以下為引用的內(nèi)容: SET FileObject=Server.CreateObject("Scripting.FileSystemObject") Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE) Application.lock |
方法Application.lock禁止別的用戶更改計數(shù)器的值
counter= counter 1
計數(shù)器的值增加1
Out.WriteLine(counter)
把新的計數(shù)器值寫入文件
Application.unlock
使用方法Application.unlock后,允許別的用戶更改計數(shù)器的值
以下為引用的內(nèi)容: Response.Write("您是第") Response.Write("$#@60;font color=red$#@62;") Response.Write(counter) |
把計數(shù)器的值傳送到瀏覽器,以紅(red)色顯示給用戶
以下為引用的內(nèi)容: Response.Write("$#@60;/font$#@62;") Response.Write("位訪問者") Out.Close |
關(guān)閉文件
%$#@62;
(二)與頁面分離的計數(shù)器
實際應(yīng)用中,主頁面與計數(shù)器程序是分離的,既只要在需要計數(shù)的頁面中加入一句引用代碼就可以實現(xiàn)頁面計數(shù)。我們在網(wǎng)上經(jīng)常申請使用的免費計數(shù)器就是這樣,不過它們一般是CGI做的。這里,我們只要稍微修改一下前面我們用ASP做的簡單計數(shù)器,然后在頁面加入一句JavaScript語句引用它,就實現(xiàn)了與頁面分離的計數(shù)器功能。這樣,無論是作為主頁面的計數(shù)器還是為某個特定頁面的計數(shù),都很方便了。顯然,你需要簡單更改一下存放計數(shù)器值的文件名和計數(shù)器asp源代碼文件名就可以實現(xiàn)多個計數(shù)器。
與頁面分離的計數(shù)器txtcounter.asp代碼:
以下為引用的內(nèi)容: $#@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&")" |
為了在頁面正確顯示計數(shù)器的值,調(diào)用VBScript函數(shù)Document.write
Out.Close
%$#@62;
在要計數(shù)的頁面加入如下的代碼:
$#@60;p$#@62;
您是第
$#@60;font color=red$#@62;
$#@60;script language="JavaScript" src="http://202.101.209.75/asptemp/counter/txtcounter.asp"$#@62;
//引用時注意ASP計數(shù)器所在的服務(wù)器及目錄路徑。
$#@60;/script$#@62;
$#@60;/font$#@62;
位來客
$#@60;/p$#@62;
(三)與頁面分離的圖象計數(shù)器
人們的追求是永無止境的,也許你需要一個更有個性的圖形數(shù)字計數(shù)器,而不是簡單的文本數(shù)字計數(shù)器。沒問題,現(xiàn)在我們就來看看用ASP是怎樣來實現(xiàn)圖形計數(shù)器功能的。要實現(xiàn)圖形計數(shù)器,關(guān)鍵點在于如何實現(xiàn)把計數(shù)器文件中的數(shù)據(jù)值轉(zhuǎn)變?yōu)閷?yīng)的圖象表示。因為十進(jìn)制數(shù)有0,1,2,3,4,5,6,7,8,9共十個不同的數(shù)數(shù)字,我們需要有十個對應(yīng)的圖象,且圖象的文件名字要與顯示的數(shù)字對應(yīng)起來,比如0對應(yīng)的數(shù)字圖象的文件名字就是0.gif,1對應(yīng)的就是1.gif,...(圖象自己可以用Photoshop等工具制作,或者從網(wǎng)絡(luò)上下載)。這里我們要用到VBScript函數(shù)Len(string | varname)、Mid(string,start[,length])。由Len(counter)可得到計數(shù)器值的位數(shù),由Mid(counter,i,1)可以得到計數(shù)器值的第i位上的數(shù)字,我們可利用這個值來調(diào)用相應(yīng)的數(shù)字圖象。用For循環(huán)語句,我們不難得出計數(shù)器值各個位上的數(shù)字并轉(zhuǎn)化成對應(yīng)的數(shù)字圖象,這樣,我們就能實現(xiàn)文本數(shù)值到圖象數(shù)字的轉(zhuǎn)變。下面就是一個用ASP編寫的圖象計數(shù)器實例,因為大部分代碼前面都分析過,所以代碼中只注釋了部分語句。
與頁面分離的圖象計數(shù)器imgcounter.asp代碼:
$#@60;% @language="VBScript"%$#@62;
$#@60;%
dim images(20)
定義一數(shù)組,用來存放顯示每一位數(shù)字圖象的語句
以下為引用的內(nèi)容: 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) |
得到計數(shù)器值的位數(shù)
以下為引用的內(nèi)容: 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;" |
由循環(huán)語句得到各個位上數(shù)值對應(yīng)圖象的顯示代碼(html),并把它存在數(shù)組中,具體使用時請注意圖象的實際服務(wù)器及目錄路徑
response.write"document.write("&images(i)&");"
調(diào)用函數(shù)Document.write輸出顯示數(shù)字圖象的html代碼
next
Out.Close
%$#@62;
在要計數(shù)的頁面加入如下的代碼:
$#@60;p$#@62;
您是第
$#@60;script language="JavaScript" src="http://202.101.209.75/asptemp/counter/imgcounter.asp"$#@62;
//引用時注意ASP計數(shù)器所在的服務(wù)器及目錄路徑。
$#@60;/script$#@62;
位來客
$#@60;/p$#@62;
附注:以上asp計數(shù)器均在Windows NT Server 4.0(中文) / IIS3.0 下測試通過。以下任何一種環(huán)境都可執(zhí)行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以上
分享:ASP實例講解:用分頁符實現(xiàn)長文章分頁顯示長文章頁用分頁符來顯示,想用ASP也實現(xiàn)這種功能,可發(fā)現(xiàn)只有根據(jù)字?jǐn)?shù)進(jìn)行分頁的方法,但這種方法有一個BUG,就是如果你文章內(nèi)容中如果有UBB或HTML代碼,它很容易造成在[code][/code]之間進(jìn)
- asp FSO 讀寫文件本文件實現(xiàn)代碼
- asp中isNull、isEmpty和空字符串的區(qū)別
- asp獲取用戶真實IP地址的方法
- asp連接sqlserver數(shù)據(jù)庫實現(xiàn)代碼
- asp中正則表達(dá)式過濾html代碼函數(shù)
- asp中g(shù)et post提交表單區(qū)別
- 網(wǎng)頁模板:ASP內(nèi)建對象Request
- xmlhttp的open方法使用詳解
- ASP的常用的自定義函數(shù)大全
- asp中用for循環(huán)的一個小技巧
- eWebEditor v3.8 列目錄
- ASP無組件分頁實現(xiàn)思路及代碼
- 相關(guān)鏈接:
- 教程說明:
ASP教程-ASP實例:計數(shù)器程序詳解
。