ASP編程入門進(jìn)階(九):內(nèi)置對(duì)象Application
更新時(shí)間:2007年01月03日 00:00:00 作者:
在Web應(yīng)用程序中,當(dāng)一個(gè)用戶訪問該應(yīng)用時(shí),Session類型的變量可以供這個(gè)用戶在該Web應(yīng)用的所有頁面中共享數(shù)據(jù);如果另一個(gè)用戶也同時(shí)訪問該Web應(yīng)用,他也擁有自己的Session變量,但兩個(gè)用戶之間無法通過Session變量共享信息,而Application類型的變量則可以實(shí)現(xiàn)站點(diǎn)多個(gè)用戶之間在所有頁面中共享信息??梢岳斫釹ession是局部變量,而Application則為全局變量。
在同一虛擬目錄及其子目錄下的所有 .asp 文件構(gòu)成了 ASP 應(yīng)用程序。我們非但可以使用 Application 對(duì)象,在給定的應(yīng)用程序的所有用戶之間共享信息,并在服務(wù)器運(yùn)行期間持久的保存數(shù)據(jù)。而且,Application 對(duì)象還有控制訪問應(yīng)用層數(shù)據(jù)的方法和可用于在應(yīng)用程序啟動(dòng)和停止時(shí)觸發(fā)過程的事件。
一、Application("name")=Value
正如Session("name")=value一樣,Application對(duì)象也沒有內(nèi)置的屬性。當(dāng)然用戶可以自定義屬性,該屬性也可稱為集合。
一旦分配了Application對(duì)象的屬性,它就會(huì)持久地存在,直到關(guān)閉WEB服務(wù)器服務(wù)使得 Application 停止。由于存儲(chǔ)在 Application 對(duì)象中的數(shù)值可以被應(yīng)用程序的所有用戶讀取,所以 Application 對(duì)象的屬性特別適合在應(yīng)用程序的用戶之間傳遞信息。
二、Application.Lock
Lock方法是禁止其他用戶修改Application對(duì)象的屬性,以確保在同一時(shí)刻僅有一個(gè)客戶可修改和存取 Application 變量。如果用戶沒有明確調(diào)用 Unlock 方法,則服務(wù)器將會(huì)在 .asp 文件結(jié)束或超時(shí)后即解除對(duì) Application 對(duì)象的鎖定。最簡單的就是進(jìn)行頁面記數(shù)的例子了。
1,num.asp
當(dāng)然,若如果你需要記數(shù)的初始值那就該寫個(gè)判斷了。
上面的程序,你會(huì)發(fā)現(xiàn)每刷新一次,都會(huì)記數(shù)累加,如按IP值訪問來記數(shù)的話,則建立一個(gè)Session
2,vnum.asp
三、Application.Unlock
與Lock方法相反,Unlock方法是允許其他用戶修改 Application 對(duì)象的屬性??梢钥闯鲈谏厦娴睦又?,Unlock方法解除對(duì)象的鎖定,使得下一個(gè)客戶端能夠增加 NumVisits 的值。
當(dāng)然需要注意的是:記數(shù)要確保服務(wù)器不被重啟,因?yàn)樗缘脑L問是數(shù)值是建立在頁面之上的,并未進(jìn)行保存成文件或保存到數(shù)據(jù)庫這樣的處理。
一般當(dāng)服務(wù)器重新啟動(dòng)就會(huì)觸發(fā)Application的事件了。
四、Application_OnEnd
Application_OnEnd 事件在應(yīng)用程序退出時(shí)于 Session_OnEnd 事件之后發(fā)生,當(dāng)然Application_OnEnd 事件的處理過程也必須寫在 Global.asa 文件之中。
比如上面的程序中,若服務(wù)器關(guān)機(jī)必然會(huì)觸發(fā)Application_OnEnd事件,那么該事件就可以進(jìn)行數(shù)據(jù)保存的工作,已使得下次數(shù)據(jù)的續(xù)沿。
當(dāng)然Application_OnEnd 事件在應(yīng)用程序退出時(shí)于Session_OnEnd 事件之后發(fā)生
五、Application_OnStart
Application_OnStart 事件在首次創(chuàng)建新的會(huì)話( 即 Session_OnStart 事件 )之前發(fā)生。當(dāng)WEB服務(wù)器啟動(dòng)并允許對(duì)應(yīng)用程序所包含的文件進(jìn)行請(qǐng)求時(shí)就觸發(fā)Application_OnStart事件。
所以現(xiàn)在可以將Global.asa內(nèi)部的代碼可以想象
具體Global.asa是怎么一回事?且聽下回分解?。海?br>
5大對(duì)象基本掌握了,來個(gè)例題練習(xí)下
Test URL: http://www.cnbruce.com/test/aspcode/guessnumber.asp
在同一虛擬目錄及其子目錄下的所有 .asp 文件構(gòu)成了 ASP 應(yīng)用程序。我們非但可以使用 Application 對(duì)象,在給定的應(yīng)用程序的所有用戶之間共享信息,并在服務(wù)器運(yùn)行期間持久的保存數(shù)據(jù)。而且,Application 對(duì)象還有控制訪問應(yīng)用層數(shù)據(jù)的方法和可用于在應(yīng)用程序啟動(dòng)和停止時(shí)觸發(fā)過程的事件。
一、Application("name")=Value
正如Session("name")=value一樣,Application對(duì)象也沒有內(nèi)置的屬性。當(dāng)然用戶可以自定義屬性,該屬性也可稱為集合。
一旦分配了Application對(duì)象的屬性,它就會(huì)持久地存在,直到關(guān)閉WEB服務(wù)器服務(wù)使得 Application 停止。由于存儲(chǔ)在 Application 對(duì)象中的數(shù)值可以被應(yīng)用程序的所有用戶讀取,所以 Application 對(duì)象的屬性特別適合在應(yīng)用程序的用戶之間傳遞信息。
<% Application("MyName") = "cnbruce" %> |
二、Application.Lock
Lock方法是禁止其他用戶修改Application對(duì)象的屬性,以確保在同一時(shí)刻僅有一個(gè)客戶可修改和存取 Application 變量。如果用戶沒有明確調(diào)用 Unlock 方法,則服務(wù)器將會(huì)在 .asp 文件結(jié)束或超時(shí)后即解除對(duì) Application 對(duì)象的鎖定。最簡單的就是進(jìn)行頁面記數(shù)的例子了。
1,num.asp
<% Application.Lock Application("NumVisits") = Application("NumVisits") + 1 Application.Unlock %> 你是本頁的第<%=Application("NumVisits")%>位訪問者 |
當(dāng)然,若如果你需要記數(shù)的初始值那就該寫個(gè)判斷了。
<% if Application("NumVisits")<9999 then Application("NumVisits")=10000 end if Application.Lock Application("NumVisits") = Application("NumVisits") + 1 Application.Unlock %> 你是本頁的第<%=Application("NumVisits")%>位訪問者 |
上面的程序,你會(huì)發(fā)現(xiàn)每刷新一次,都會(huì)記數(shù)累加,如按IP值訪問來記數(shù)的話,則建立一個(gè)Session
2,vnum.asp
<% if session("visitnum")="" then Application.Lock Application("NumVisits") = Application("NumVisits") + 1 Application.Unlock session("visitnum")="visited" end if %> 你是本頁的第<%=Application("NumVisits")%>位訪問者 |
三、Application.Unlock
與Lock方法相反,Unlock方法是允許其他用戶修改 Application 對(duì)象的屬性??梢钥闯鲈谏厦娴睦又?,Unlock方法解除對(duì)象的鎖定,使得下一個(gè)客戶端能夠增加 NumVisits 的值。
當(dāng)然需要注意的是:記數(shù)要確保服務(wù)器不被重啟,因?yàn)樗缘脑L問是數(shù)值是建立在頁面之上的,并未進(jìn)行保存成文件或保存到數(shù)據(jù)庫這樣的處理。
一般當(dāng)服務(wù)器重新啟動(dòng)就會(huì)觸發(fā)Application的事件了。
四、Application_OnEnd
Application_OnEnd 事件在應(yīng)用程序退出時(shí)于 Session_OnEnd 事件之后發(fā)生,當(dāng)然Application_OnEnd 事件的處理過程也必須寫在 Global.asa 文件之中。
比如上面的程序中,若服務(wù)器關(guān)機(jī)必然會(huì)觸發(fā)Application_OnEnd事件,那么該事件就可以進(jìn)行數(shù)據(jù)保存的工作,已使得下次數(shù)據(jù)的續(xù)沿。
當(dāng)然Application_OnEnd 事件在應(yīng)用程序退出時(shí)于Session_OnEnd 事件之后發(fā)生
<SCRIPT LANGUAGE="VBScript" RUNAT="Server"> ............. Sub Application_OnEnd ............. End Sub ............. </SCRIPT> |
五、Application_OnStart
Application_OnStart 事件在首次創(chuàng)建新的會(huì)話( 即 Session_OnStart 事件 )之前發(fā)生。當(dāng)WEB服務(wù)器啟動(dòng)并允許對(duì)應(yīng)用程序所包含的文件進(jìn)行請(qǐng)求時(shí)就觸發(fā)Application_OnStart事件。
<SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server> ............. Sub Application_OnStart ............. End Sub ............. </SCRIPT> |
所以現(xiàn)在可以將Global.asa內(nèi)部的代碼可以想象
<SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart ..................... End Sub Sub Session_OnStart ..................... End Sub Sub Session_OnEnd ..................... End Sub Sub Application_OnEnd ..................... End Sub </SCRIPT> |
具體Global.asa是怎么一回事?且聽下回分解?。海?br>
5大對(duì)象基本掌握了,來個(gè)例題練習(xí)下
<%@ LANGUAGE = VBScript %> <% Option Explicit %> <Html> <title>猜數(shù)字游戲</title> <body> <% '設(shè)置頁面不使用緩存 Response.Expires = 0 %> <% dim GuessNum on error resume next GuessNum=Request("Number") if GuessNum="" then GuessNum="0" End if GuessNum=Clng(GuessNum) Session("Count")=Session("Count") + 1 if Session("Count") < 10 and GuessNum <> session("Number") then %> <form action="guessNumber.asp"> <input type="text" name="Number"> <input type="submit" value="提交"> </form> <hr> <% end if if GuessNum<0 or guessNum>100 then Response.write "請(qǐng)輸入1~100之間的整數(shù)" elseif GuessNum=0 then session("Count") = 0 Randomize session("Number") = Int(rnd * 100 + 1) Response.write "請(qǐng)輸入1~100之間的整數(shù)" elseif GuessNum > session("Number") then response.write "你猜的太大了" elseif GuessNum < session("Number") then response.write "你猜的太小了" elseif GuessNum = session("Number") then response.write "祝賀你,猜對(duì)了" end if Response.write "<br>共猜了" & Session("Count") & "次" if Session("Count")=10 then Response.write "答案是" & Session("Number") end if %> <a href="guessnumber.asp?Number=0">重新猜</a> </body> </html> |
Test URL: http://www.cnbruce.com/test/aspcode/guessnumber.asp
您可能感興趣的文章:
- javascript asp教程第十一課--Application 對(duì)象
- asp清空application的方法
- ASP javascript Application對(duì)象的Contents和StaticObjects做Cache的一些經(jīng)驗(yàn)
- ASP.NET內(nèi)置對(duì)象之Application對(duì)象
- asp.net Reporting Service在Web Application中的應(yīng)用
- php和asp利用Shell.Application來執(zhí)行程序的代碼
- asp自帶的內(nèi)存緩存 application
- ASP.NET中Application和Cache的區(qū)別分析
- asp.net錯(cuò)誤處理Application_Error事件示例
- ASP.NET 使用application與session對(duì)象寫的簡單聊天室程序
- ASP基礎(chǔ)入門第八篇(ASP內(nèi)建對(duì)象Application和Session)
相關(guān)文章
asp實(shí)現(xiàn)批量錄入數(shù)據(jù)的實(shí)現(xiàn)
asp實(shí)現(xiàn)批量錄入數(shù)據(jù)的實(shí)現(xiàn)...2006-12-12javascript asp教程第三課 new String() 構(gòu)造器
javascript asp教程第三課 new String() 構(gòu)造器...2007-03-03ASP字符串大寫轉(zhuǎn)換成小寫 ASP小寫轉(zhuǎn)換成大寫 ucase lcase
字符串大寫字面轉(zhuǎn)換成小寫字面或者小寫字面轉(zhuǎn)換成大寫字面,ASP(特指VBS)里自帶了兩個(gè)函數(shù)2009-06-06asp模板引擎終結(jié)者(WEB開發(fā)之ASP模式)
[紅色]asp模板引擎終結(jié)者(WEB開發(fā)之ASP模式)...2006-06-06