?? 17-2.cfm.htm
字號:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>使用Application對象</title>
<meta name="GENERATOR" content="Microsoft FrontPage 3.0">
</head>
<body>
<b><font FACE="宋體" SIZE="5">
<p ALIGN="JUSTIFY">使用Application對象</p>
</font></b><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">Application對象擁有與Application所有相關的集合,方法,以及事件。下面的部分你將學會怎樣使用Application對象來創建application變量和application事件。</p>
</font><font FACE="宋體"><b>
<p ALIGN="JUSTIFY">對Application變量的介紹</p>
</b></font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">一個application變量包含的數據可以在整個application中被所有用戶享用。Application對象包括任何類型,包括隊列和對象。一個application變量和一個Session變量區別有以下兩點:</p>
<p ALIGN="JUSTIFY">■和Session不同的是,Application變量不需要Cookies。網站不需要利用Application變量來跟蹤用戶進程。這就意味著使用起來很安心,可以適應任何瀏覽器。</p>
<p ALIGN="JUSTIFY">■和一個Session變量不同的是,application變量可以被多個用戶共享。從一個用戶接受到的application變量可以傳遞給另外的用戶。</p>
<b>
<p ALIGN="JUSTIFY">注意</p>
</b>
<p ALIGN="JUSTIFY">對Session的了解在第16章。</p>
<p ALIGN="JUSTIFY">下面是利用Application的普通應用:</p>
<p ALIGN="JUSTIFY">■一個application變量可以用來在每個主頁上顯示瞬態信息,例如,你可以利用application變量來對于每一個主頁進行當日新聞的更新。</p>
<p ALIGN="JUSTIFY">■Application可以用來記錄廣告條被點擊的時間和次數。“參看第21章”</p>
<p ALIGN="JUSTIFY">■Application可以從數據庫中讀取數據,例如,你可以從你的網站的數據庫中接受銷售品目錄然后利用application變量顯示在多個主頁上。</p>
<p ALIGN="JUSTIFY">■一個Application變量可以用來統計目前上站人數,可以參見后面的小節。</p>
<p ALIGN="JUSTIFY">■一個application變量可以用于網站上不同用戶間的通訊,你這樣就可以創建多用戶游戲以及多用戶聊天室,可以參看后面聊天室的應用小節。</p>
</font><font FACE="宋體"><b>
<p ALIGN="JUSTIFY">創建和讀取Application變量</p>
</b></font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">其實這部分相當簡單,因為讀者您讀到這里已經有相當基礎了,創建讀取過程和以往的Session變量沒什么區別,見下面的例子應用:</p>
<p ALIGN="JUSTIFY"><HTML></p>
<p ALIGN="JUSTIFY"><HEAD><TITLE>Application示例</TITLE></HEAD></p>
<p ALIGN="JUSTIFY"><BODY></p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">Application(</font><font SIZE="3">“</font><font FACE="宋體"
SIZE="3">Greeting</font><font SIZE="3">”</font><font FACE="宋體" SIZE="3">)=</font><font
SIZE="3">”</font><font FACE="宋體" SIZE="3">Welcome!</font><font SIZE="3">”</p>
</font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY"><%=Application(</font><font SIZE="3">“</font><font FACE="宋體"
SIZE="3">Greeting</font><font SIZE="3">”</font><font FACE="宋體" SIZE="3">)%></p>
<p ALIGN="JUSTIFY"></BODY></p>
<p ALIGN="JUSTIFY"></HTML></p>
<p ALIGN="JUSTIFY">在這個示例中,一個新的名字為Greeting的application變量被創建,賦值為</font><font
SIZE="3">”</font><font FACE="宋體" SIZE="3">Welcome!</font><font SIZE="3">”</font><font
FACE="宋體" SIZE="3">。然后這個變量值</font><font SIZE="3">”</font><font
FACE="宋體" SIZE="3">Welcome!</font><font SIZE="3">”</font><font FACE="宋體"
SIZE="3">顯示在瀏覽器上。</p>
<p ALIGN="JUSTIFY">一旦變量被賦值,它就可以在任何ASP文件中顯示出來,即使是其他用戶調用。例如,這時候另外一個用戶調用下面的ASP文件,也可以顯示</font><font
SIZE="3">”</font><font FACE="宋體" SIZE="3">Welcome!</font><font SIZE="3">”</font><font
FACE="宋體" SIZE="3">信息:</p>
<p ALIGN="JUSTIFY"><HTML></p>
<p ALIGN="JUSTIFY"><HEAD><TITLE>另外一頁</TITLE></HEAD></p>
<p ALIGN="JUSTIFY"><BODY></p>
<p ALIGN="JUSTIFY"><%=Application(</font><font SIZE="3">“</font><font FACE="宋體"
SIZE="3">Greeting</font><font SIZE="3">”</font><font FACE="宋體" SIZE="3">) %></p>
<p ALIGN="JUSTIFY"></BODY></p>
<p ALIGN="JUSTIFY"></HTML></p>
<p ALIGN="JUSTIFY">很重要的需要理解的是,由于Application變量是對于多用戶共享的,因此與Session變量有著本質的區別。同時application變量不會因為某一個甚至全部用戶離開就消失,一旦建立了application變量,那么它就會一直存在到網站關閉或者這個application被卸載。這經常可能是幾周或者幾個月。</p>
<p ALIGN="JUSTIFY">由于application變量創建時不會自己消亡,因此你就要特別小心的使用,這可是占用內存的,你可要斟酌使用以免降低服務器對其他工作的響應速度。</p>
<b>
<p ALIGN="JUSTIFY">注意</p>
</b>
<p ALIGN="JUSTIFY">Application變量終止的情況有三種,服務被終止,Global.asa被改變,或者該Application被卸載。</p>
<p ALIGN="JUSTIFY">為了更好的了解多用戶共享這個概念,,我們拿出下面這個腳本例子:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">Randomize</p>
<p ALIGN="JUSTIFY">If INT(2*RND)=1 THEN</p>
<p ALIGN="JUSTIFY">Application(</font><font SIZE="3">“</font><font FACE="宋體"
SIZE="3">FavoriteColor</font><font SIZE="3">”</font><font FACE="宋體" SIZE="3">)=</font><font
SIZE="3">”</font><font FACE="宋體" SIZE="3">Blue</font><font SIZE="3">”</p>
</font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">Else</p>
<p ALIGN="JUSTIFY">Application(</font><font SIZE="3">“</font><font FACE="宋體"
SIZE="3">FavoriteColor</font><font SIZE="3">”</font><font FACE="宋體" SIZE="3">)=</font><font
SIZE="3">”</font><font FACE="宋體" SIZE="3">Red</font><font SIZE="3">”</p>
</font><font FACE="宋體" SIZE="3">
<p ALIGN="JUSTIFY">END IF</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">很容易理解的是,如果將Application換成Session,那么對于每一個單獨用戶來說,值很可能是不一樣的,但是這里面由于是Application,那么不管多少個用戶調用該腳本,大家的該變量都是一樣的,即使后來的訪問者調用時顏色與前面人調用的不一樣,那么由于這種共享變量,自然對于其他人來說就相當于進行變量值的改變。不過,現在細心的讀者也許會發現這里面有些問題,即:如果多人同時調用,那么豈不是要亂了。例如下面這個例子:假如你正在使用一個application來記錄一個廣告條的點擊次數,如果兩個人正在同時點擊,那么沖突怎么辦?</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">NumClicks=Application(</font><font SIZE="3">“</font><font
FACE="宋體" SIZE="3">BannerClicks</font><font SIZE="3">”</font><font FACE="宋體"
SIZE="3">)</p>
<p ALIGN="JUSTIFY">NumClicks=NumClicks+1</p>
<p ALIGN="JUSTIFY">Application(</font><font SIZE="3">“</font><font FACE="宋體"
SIZE="3">BannerClicks</font><font SIZE="3">”</font><font FACE="宋體" SIZE="3">)=NumClicks</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">可以看出,每一次點擊,該變量值加1,但是如果這個腳本被同時進行,即多人同時點擊,幸好有兩個Application方法專門應付這種問題,分別是Lock方法和Unclock方法,用來暫時防止其他用戶對application變量的改變,那么前面的例子正確形式應該如下:</p>
<p ALIGN="JUSTIFY"><%</p>
<p ALIGN="JUSTIFY">Application.Lock</p>
<p ALIGN="JUSTIFY">NumClicks=Application(</font><font SIZE="3">“</font><font
FACE="宋體" SIZE="3">BannerClicks</font><font SIZE="3">”</font><font FACE="宋體"
SIZE="3">)</p>
<p ALIGN="JUSTIFY">NumClicks=NumClicks+1</p>
<p ALIGN="JUSTIFY">Application(</font><font SIZE="3">“</font><font FACE="宋體"
SIZE="3">BannerClicks</font><font SIZE="3">”</font><font FACE="宋體" SIZE="3">)=NumClicks</p>
<p ALIGN="JUSTIFY">Application.UnLock</p>
<p ALIGN="JUSTIFY">%></p>
<p ALIGN="JUSTIFY">腳本的第一行將application進行lock操作,那么其他用戶就無法對application變量進行修改直到Unclock操作或者該ASP文件執行結束。</p>
<p ALIGN="JUSTIFY">請注意你不能針對個別變量進行Lock操作,也就是說,要不全都Lock,要不全都不。前面的腳本其實也就是防止用戶修改該Application的所有變量。</p>
<p ALIGN="JUSTIFY">了解Lock方法注意不是永遠不讓其他用戶進行Application變量的修改,而是讓修改過程連續有序,防止沖突。</p>
</font>
</body>
</html>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -