国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

ASP基礎入門(mén)第八篇(ASP內建對象Application和Sessi

發(fā)布時(shí)間:2021-08-17 12:10 來(lái)源: 閱讀:0 作者: 欄目: ASP 歡迎投稿:712375056

 在上一篇中作者給大家詳細介紹了 ASP 內建對象 Response 的使用方法,在這一篇中作者將繼續給大家介紹另兩個(gè)非常實(shí)用且重要的 ASP 的內建對象 Application 和 Session。   

在 ASP 的內建對象中除了用于發(fā)送、接收和處理數據的對象外,還有一些非常實(shí)用的代表 Active Server 應用程序和單個(gè)用戶(hù)信息的對象。

讓我們先來(lái)看看 Application 對象。在同一虛擬目錄及其子目錄下的所有 .asp 文件構成了 ASP 應用程序。我們非但可以使用 Application 對象,在給定的應用程序的所有用戶(hù)之間共享信息,并在服務(wù)器運行期間持久的保存數據。而且,Application 對象還有控制訪(fǎng)問(wèn)應用層數據的方法和可用于在應用程序啟動(dòng)和停止時(shí)觸發(fā)過(guò)程的事件。
下面就讓我們一起來(lái)學(xué)習 Application 對象。

一、屬性

雖然 Application 對象沒(méi)有內置的屬性,但我們可以使用以下句法設置用戶(hù)定義的屬性也可稱(chēng)為集合。

Application(" 屬性 / 集合名稱(chēng) ")= 值

我們可以使用如下腳本聲明并建立 Application 對象的屬性。

< %
Application("MyVar") = "Hello"
Set Application("MyObj") = Server.CreateObject("MyComponent")
%>

   一旦我們分配了 Application 對象的屬性,它就會(huì )持久地存在,直到關(guān)閉 WEB 服務(wù)器服務(wù)使得 Application 停止。由于存儲在 Application 對象中的數值可以被應用程序的所有用戶(hù)讀取,所以 Application 對象的屬性特別適合在應用程序的用戶(hù)之間傳遞信息。
二、方法

   Application 對象有兩個(gè)方法,它們都是用于處理多個(gè)用戶(hù)對存儲在 Application 中的數據進(jìn)行寫(xiě)入的問(wèn)題

1、Lock 方法禁止其他客戶(hù)修改 Application 對象的屬性。

   Lock 方法阻止其他客戶(hù)修改存儲在 Application 對象中的變量,以確保在同一時(shí)刻僅有一個(gè)客戶(hù)可修改和存取 Application 變量。如果用戶(hù)沒(méi)有明確調用 Unlock 方法,則服務(wù)器將在 .asp 文件結束或超時(shí)后即解除對 Application 對象的鎖定。

   讓我們來(lái)看看下面這段用 Application 來(lái)記錄頁(yè)面訪(fǎng)問(wèn)次數的程序 :
< %
Dim NumVisitsNumVisits=0
Application.LockApplication("NumVisits") = Application("NumVisits") + 1
Application.Unlock
%>
歡迎光臨本網(wǎng)頁(yè),你是本頁(yè)的第 < %= Application("NumVisits") %> 位訪(fǎng)客 !

   將以上腳本保存在你的 .asp 文件中,就輕而易舉地給你的頁(yè)面添加了一個(gè)計數器。

2、和 Lock 方法相反,Unlock 方法允許其他客戶(hù)修改 Application 對象的屬性。

   在上面的例子中,上述例子中,Unlock 方法解除對象的鎖定,使得下一個(gè)客戶(hù)端能夠增加 NumVisits 的值。

三、事件

1、Application_OnStart

   Application_OnStart 事件在首次創(chuàng )建新的會(huì )話(huà) ( 即 Session_OnStart 事件 ) 之前發(fā)生。當 WEB 服務(wù)器啟動(dòng)并允許對應用程序所包含的文件進(jìn)行請求時(shí)就觸發(fā) Application_OnStart 事件。Application_OnStart 事件的處理過(guò)程必須寫(xiě)在 Global.asa 文件之中。

   Application_OnStart 事件的語(yǔ)法如下 :

< SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
Sub Application_OnStart. . .
End Sub
< /SCRIPT>

2、Application_OnEnd

   Application_OnEnd 事件在應用程序退出時(shí)于 Session_OnEnd 事件之后發(fā)生,Application_OnEnd 事件的處理過(guò)程也必須寫(xiě)在 Global.asa 文件之中。

下面讓我們來(lái)看看在使用 Application 對象時(shí)必須注意的事項。

不能在 Application 對象中存儲 ASP 內建對象。例如,下面的每一行都返回一個(gè)錯誤。

< %
Set Application("var1")=Session
Set Application("var2")=Request
Set Application("var3")=Response
Set Application("var4")=Server
Set Application("var5")=Application
Set Application("var6")=ObjectContext
%>

   若您將一個(gè)數組存儲在 Application 對象中,請不要直接更改存儲在數組中的元素。例如,下列的腳本無(wú)法運行。
< % Application("StoredArray")(3) = "new value" %>

   這是因為 Application 對象是作為集合被實(shí)現的。數組元素 StoredArray(3) 未獲得新的賦值。而此值將包含在 Application 對象集合中,并將覆蓋此位置以前存儲的任何信息。建議您在將數組存儲在 Application 對象中時(shí),在檢索或改變數組中的對象前獲取數組的一個(gè)副本。在對數組操作時(shí),您應再將數組全部存儲在 Application 對象中,這樣您所做的任何改動(dòng)將被存儲下來(lái)。下列的腳本對此進(jìn)行演示。
---asp8a.asp---

< %
dim MyArray()
Redim MyArray(5)
MyArray(0)="hello"
MyArray(1)="some other string"
Application.Lock
Application("StoredArray")=MyArray
Application.Unlock
Response.Redirect "asp8b.asp"
%>

---asp8b.asp---

< %
LocalArray=Application("StoredArray")
LocalArray(1)=" there"
Response.Write LocalArray(0)&LocalArray(1)
Application.Lock
Application("StoredArray")=LocalArray
Application.Unlock
%>

   與 Application 對象具有相近作用的另一個(gè)非常實(shí)用的 ASP 內建對象就是 Session。我們可以使用 Session 對象存儲特定的用戶(hù)會(huì )話(huà)所需的信息。當用戶(hù)在應用程序的頁(yè)之間跳轉時(shí),存儲在 Session 對象中的變量不會(huì )清除,而用戶(hù)在應用程序中訪(fǎng)問(wèn)頁(yè)面時(shí),這些變量始終存在。當用戶(hù)請求來(lái)自應用程序的 Web 頁(yè)時(shí),如果該用戶(hù)還沒(méi)有會(huì )話(huà),則 Web 服務(wù)器將自動(dòng)創(chuàng )建一個(gè) Session 對象。當會(huì )話(huà)過(guò)期或被放棄后,服務(wù)器將終止該會(huì )話(huà)。   

通過(guò)向客戶(hù)程序發(fā)送唯一的 Cookie 可以管理服務(wù)器上的 Session 對象。當用戶(hù)第一次請求 ASP 應用程序中的某個(gè)頁(yè)面時(shí),ASP 要檢查 HTTP 頭信息,查看是否有在報文中有名為 ASPSESSIONID 的 Cookie 發(fā)送過(guò)來(lái),如果有,則服務(wù)器會(huì )啟動(dòng)新的會(huì )話(huà),并為該會(huì )話(huà)生成一個(gè)全局唯一的值,在把這個(gè)值作為新 ASPSESSIONID Cookie 的值發(fā)送給客戶(hù)端,正是使用這種 Cookie,可以訪(fǎng)問(wèn)存儲在服務(wù)器上的屬于客戶(hù)程序的信息。Session 對象最常見(jiàn)的作用就是存儲用戶(hù)的首選項。例如,如果用戶(hù)指明不喜歡查看圖形,就可以將該信息存儲在 Session 對象中。另外其還經(jīng)常被用在鑒別客戶(hù)身份的程序中。要注意的是,會(huì )話(huà)狀態(tài)僅在支持 cookie 的瀏覽器中保留,如果客戶(hù)關(guān)閉了 Cookie 選項,Session 也就不能發(fā)揮作用了。
一、屬性

1、SessionID

  SessionID 屬性返回用戶(hù)的會(huì )話(huà)標識。在創(chuàng )建會(huì )話(huà)時(shí),服務(wù)器會(huì )為每一個(gè)會(huì )話(huà)生成一個(gè)單獨的標識。會(huì )話(huà)標識以長(cháng)整形數據類(lèi)型返回。在很多情況下 SessionID 可以用于 WEB 頁(yè)面注冊統計。

2、TimeOut

   Timeout 屬性以分鐘為單位為該應用程序的 Session 對象指定超時(shí)時(shí)限。如果用戶(hù)在該超時(shí)時(shí)限之內不刷新或請求網(wǎng)頁(yè),則該會(huì )話(huà)將終止。

二、方法

   Session 對象僅有一個(gè)方法,就是 Abandon,Abandon 方法刪除所有存儲在 Session 對象中的對象并釋放這些對象的源。如果您未明確地調用 Abandon 方法,一旦會(huì )話(huà)超時(shí),服務(wù)器將刪除這些對象。當服務(wù)器處理完當前頁(yè)時(shí),下面示例將釋放會(huì )話(huà)狀態(tài)。
  < % Session.Abandon %>

三、事件

   Session 對象有兩個(gè)事件可用于在 Session 對象啟動(dòng)和釋放是運行過(guò)程。

   1、Session_OnStart 事件在服務(wù)器創(chuàng )建新會(huì )話(huà)時(shí)發(fā)生。服務(wù)器在執行請求的頁(yè)之前先處理該腳本。Session_OnStart 事件是設置會(huì )話(huà)期變量的最佳時(shí)機,因為在訪(fǎng)問(wèn)任何頁(yè)之前都會(huì )先設置它們。

   盡管在 Session_OnStart 事件包含 Redirect 或 End 方法調用的情況下 Session 對象仍會(huì )保持,然而服務(wù)器將停止處理 Global.asa 文件并觸發(fā) Session_OnStart 事件的文件中的腳本。

   為了確保用戶(hù)在打開(kāi)某個(gè)特定的 Web 頁(yè)時(shí)始終啟動(dòng)一個(gè)會(huì )話(huà),就可以在 Session_OnStart 事件中調用 Redirect 方法。當用戶(hù)進(jìn)入應用程序時(shí),服務(wù)器將為用戶(hù)創(chuàng )建一個(gè)會(huì )話(huà)并處理 Session_OnStart 事件腳本。您可以將腳本包含在該事件中以便檢查用戶(hù)打開(kāi)的頁(yè)是不是啟動(dòng)頁(yè),如果不是,就指示用戶(hù)調用 Response.Redirect 方法啟動(dòng)網(wǎng)頁(yè)。程序如下 :

< SCRIPT RUNAT=Server Language=VBScript>
Sub Session_OnStart
startPage = "/MyApp/StartHere.asp"
currentPage = Request.ServerVariables("SCRIPT_NAME")
if strcomp(currentPage,startPage,1) then
Response.Redirect(startPage)
end if
End Sub
< /SCRIPT>

   上述程序只能在支持 cookie 的瀏覽器中運行。因為不支持 cookie 的瀏覽器不能返回 SessionID cookie,所以,每當用戶(hù)請求 Web 頁(yè)時(shí),服務(wù)器都會(huì )創(chuàng )建一個(gè)新會(huì )話(huà)。這樣,對于每個(gè)請求服務(wù)器都將處理 Session_OnStart 腳本并將用戶(hù)重定向到啟動(dòng)頁(yè)中。
   2、Session_OnEnd 事件在會(huì )話(huà)被放棄或超時(shí)發(fā)生。

關(guān)于使用 Session 對象需要注意的事項 Application 對象相近,請參照前文。

   會(huì )話(huà)可以通過(guò)以下三種方式啟動(dòng) :

   1、一個(gè)新用戶(hù)請求訪(fǎng)問(wèn)一個(gè) URL,該 URL 標識了某個(gè)應用程序中的 .asp 文件,并且該應用程序的 Global.asa 文件包含 Session_OnStart 過(guò)程。

   2、用戶(hù)在 Session 對象中存儲了一個(gè)值。

   3、用戶(hù)請求了一個(gè)應用程序的 .asp 文件,并且該應用程序的Global.asa 文件使用 < OBJECT> 標簽創(chuàng )建帶有會(huì )話(huà)作用域的對象的實(shí)例。

   如果用戶(hù)在指定時(shí)間內沒(méi)有請求或刷新應用程序中的任何頁(yè),會(huì )話(huà)將自動(dòng)結束。這段時(shí)間的默認值是 20 分鐘??梢酝ㄟ^(guò)在 Internet 服務(wù)管理器中設置“應用程序選項”屬性頁(yè)中的“會(huì )話(huà)超時(shí)”屬性改變應用程序的默認超時(shí)限制設置。應依據您的 Web 應用程序的要求和服務(wù)器的內存空間來(lái)設置此值。例如,如果您希望瀏覽您的 Web 應用程序的用戶(hù)在每一頁(yè)僅停留幾分鐘,就應該縮短會(huì )話(huà)的默認超時(shí)值。過(guò)長(cháng)的會(huì )話(huà)超時(shí)值將導致打開(kāi)的會(huì )話(huà)過(guò)多而耗盡您的服務(wù)器的內存資源。對于一個(gè)特定的會(huì )話(huà),如果您想設置一個(gè)小于默認超時(shí)值的超時(shí)值,可以設置 Session 對象的 Timeout 屬性。例如,下面這段腳本將超時(shí)值設為 5 分鐘。
  < % Session.Timeout = 5 %>

   當然你也可以設置一個(gè)大于默認設置的超時(shí)值,Session.Timeout 屬性決定超時(shí)值。你還可以通過(guò) Session 對象的 Abandon 方法顯式結束一個(gè)會(huì )話(huà)。例如,在表格中提供一個(gè)“退出”按鈕,將按鈕的 ACTION 參數設置為包含下列命令的 .asp 文件的 URL。
  < % Session.Abandon %>

   今天,我們學(xué)習了兩個(gè)在WEB 頁(yè)面特別是基于WEB 的BBS 或Chat 上經(jīng)常使用 ASP 內建對象,由于這兩個(gè)對象在實(shí)際運用中很實(shí)用,因此在下一篇中作者將運用至此我們所學(xué)過(guò)的4 個(gè)ASP 內建對象,給大家演示一個(gè)完整的 ASP 應用程序,相信通過(guò)這個(gè)練習,能大大加深你對 ASP 應用程序的理解和掌握。

以上就是本文的全部?jì)热?,希望對大家學(xué)習ASP內建對象Application和Session有所幫助。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

国产成人久久AV免费| 大地资源影院在线播放| 77777亚洲午夜久久多喷| 特级毛片在线大全免费播放| 99在线精品免费视频九九视| 国产亚洲精品无码不卡|