用ASP編寫虛擬社區、網上購物等程序時,application和session對象具有舉足輕重的作用,能夠靈活合理地運用這兩個對象是提高程序質量的關鍵。下面讓筆者根據自己在這方面的經驗,向大家深入介紹一下ASP的這兩個內建對象。
一、Application對象的成員概述
Application對象成員包括Application對象的集合、方法和事件。
⒈Application對象的集合
Contents集合:沒有使用<OBJECT>元素定義的存儲於Applicaiton對象中的所有變量的集合
StaticObjects:使用<OBJECT>元素定義的存儲於Application對象中的所有變量 的集合
例:在default.ASP中有如下賦值
application("a")="a"
application("b")=128
application("c")=false
則有contents集合
application.contents(1)="a" '也可寫為application.contents("a")="a"
application.contents(2)=128 '也可寫為application.contents("b")=128
application.contents(3)=false '也可寫為application.contents("c")=false
在此筆者推薦你在調用時使用類如application.contents("a")的方法,因為這樣更為直觀,如果用序號來表示的話則要考慮賦值的先後順序。
⒉Application對象的方法
Contents.Remove("變量名"):從Application.Contents集合中刪除指定的變量
Contents.RemoveAll() :把Application.Contents集合中的所有變量刪除
Lock() :鎖定Application對象,使得只有當前的ASP頁對內容能進行訪問
Unlock() :解除對Application對象的鎖定
例:在default.ASP中:
application("a")="a"
application("b")=128
application("c")=false
response.write application.contents(1)&"<br>"
response.write application.contents(2)&"<br>"
response.write application.contents(3)&"<br>"
response.write "After Remove b:"
application.contents.remove("b")
response.write application.contents(1)&"<br>"
response.write application.contents(2)&"<br>"
執行結果:
a
128
False
After Remove b:
a
False
如果要刪除集合中所有變量用application.contents.removeall即可,至於Lock和Unlock方法在實際中經常用到,讀者也比較熟悉,在此就不在累贅。
⒊Application對象事件
OnStart:第一個訪問服務器的用戶第一次訪問某一頁面時發生
OnEnd :當最後一個用戶的會話已經結束並且該會話的OnEnd事件所有代碼已經執行完畢後發生,或最後一個用戶訪問服務器一段時間(一般為20分鐘)後仍然沒有人訪問該服務器產生。
想要定義application對象的OnStart和OnEnd事件裡做什麼需要將代碼寫在Global.asa這個文件裡(下文有舉例),並且將該文件放在站點的根目錄下(一般是Inetpub\wwwroot\)