session 與 application

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>" 
執行結果: 

128 
False 
After Remove b: 

False 
如果要刪除集合中所有變量用application.contents.removeall即可,至於Lock和Unlock方法在實際中經常用到,讀者也比較熟悉,在此就不在累贅。 
⒊Application對象事件 
OnStart:第一個訪問服務器的用戶第一次訪問某一頁面時發生 
OnEnd :當最後一個用戶的會話已經結束並且該會話的OnEnd事件所有代碼已經執行完畢後發生,或最後一個用戶訪問服務器一段時間(一般爲20分鐘)後仍然沒有人訪問該服務器產生。 
想要定義application對象的OnStart和OnEnd事件裏做什麼需要將代碼寫在Global.asa這個文件裏(下文有舉例),並且將該文件放在站點的根目錄下(一般是Inetpub\wwwroot\) 
二、Session對象的成員概述 
Session對象的成員比Application對象多一項屬性,即:集合、屬性、方法、事件 
⒈Session對象的集合 
Contents :沒有使用<OBJECT>元素定義的存儲於特定Session對象的所有變量的集合。 
StaticObject:使用<OBJECT>元素定義的、存儲於Session對象中的所有變量的集合。 
例:在default.asp中有如下賦值 
session("a")="a" 
session("b")=128 
session("c")=false 
則有contents集合 
session.contents(1)="a" '也可寫爲session.contents("a")="a" 
session.contents(2)=128 '也可寫爲session.contents("b")=128 
session.contents(3)=false '也可寫爲session.contents("c")=false 
⒉Session對象的屬性 
CodePage: 可讀/可寫。整型。定義用於在瀏覽器中顯示頁內容的代碼頁。代碼頁是字符集的數字值,不同的語言使用不同的代碼頁。例如,ANSI代碼頁爲1252,日文代碼頁爲932,簡體中文代碼頁爲936。 
LCID : 可讀/可寫。整型。定義發送給瀏覽器的頁面地區標識。LCID是唯一地標識地區的一個國際標準縮寫,例如,2057定義當前地區的貨幣符號是"£"。 
SessionID: 只讀。長整型。返回本會話的會話標識符。每創建一個會話,由服務器自動分配一個標識符。可以根據它的值判斷兩個用戶是誰先訪問服務器。 
Timeout : 可讀/可寫。整型。爲會話定義以分鐘爲單位的超時限定。如果用戶在這個時間內沒有刷新或請求任何一個網頁,則該用戶產生的會話自動結束。缺省值是20。 
以上屬性在實際應用中作用不大,而且基本上不需要怎麼修改,這幾個屬性也沒什麼特殊的地方。 
⒊Session對象的方法 
Contents.Remove("變量名"): 從Session.contents集合中刪除指定的變量 
Contents.Removeall() : 刪除Session.contents集合中的所有變量 
Abandon() : 結束當前用戶會話並且撤消當前Session對象。 
Session對象的Contents.Remove("變量名")和Contents.Removeall()方法與Application對象的基本上沒什麼區別,爲幫助理解,大家可以參照上面的例子將Application改爲Session。這裏要說明一下的是Contents.Removeall()和Abandon()的區別,執行這兩個方法都會釋放當前 
用戶會話的所有Session變量,不同的是Contents.Removeall()單純地釋放Session變量的值而不終止當前的會話,而Abandon()除了釋放Session變量外還會終止會話引發Session_OnEnd事件,希望大家注意兩者的區別。 
⒋Session對象的事件 
OnStart: 當ASP用戶會話產生時觸發,一旦有任一用戶對本服務器請求任一頁面即產生該事件。 
OnEnd : 當ASP用戶會話結束時觸發,當使用Abandon()方法或超時也會觸發該事件。 
這兩個事件和Application的OnStart、OnEnd事件一樣,也是必須放在Global.asa文件裏,下 
面就重點和大家研究一下這四個事件的使用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章