HTML網頁基礎語言

Download Report

Transcript HTML網頁基礎語言

第8章 Application、Session物件
與Cookies的處理







8-1
8-2
8-3
8-4
8-5
8-6
8-7
Web應用程式
網頁間的資料分享
Application物件的使用
Session物件的使用
Global.asa檔案的使用
Cookies的處理
Cookies的應用
8-1 Web應用程式



8-1-1 Web應用程式的基礎
8-1-2 PWS建立Web應用程式
8-1-3 IIS 5建立Web應用程式
8-1-1 Web應用程式的基礎-1


Web應用程式是指網站目錄和其子目錄執
行檔案的能力。
IIS支援ASP、ISAPI、CGI、IDC與SSI應
用程式,Web應用程式能夠設定應用程式
的執行權限,也就是檔案所在目錄的權限,
以應用程式來說就是指令和執行權限。
8-1-1 Web應用程式的基礎-2
8-1-2 PWS建立Web應用程式


PWS為IIS 4的簡化版本,預設PWS的主
目錄就是一個Web應用程式。
PWS如果需要在同一個網站建立多個Web
應用程式,只需建立虛擬目錄,並且為擁
有指令權限的虛擬目錄,這個虛擬目錄就
是一個Web應用程式。
8-1-3 IIS 5建立Web應用程式-1

IIS 5的Web應用程式依使用記憶體方式的不同,
可以分為兩種應用程式,如下表所示:
應用程式的種類
Web 應用程式
獨立應用程式
說明
Web 應用程式與伺服器使用相同區塊的記憶體,如果應用程
式執行失敗將影響伺服器的執行或其它的 Web 應用程式
獨立應用程式與 Web 伺服器使用分隔的記憶體執行,雖然比
較浪費記憶體,不過獨立應用程式如果失敗並不會影響伺服
器執行或其它的 Web 應用程式,IIS 5 提供有三種程度的應用
程式保護
8-1-3 IIS 5建立Web應用程式-2

IIS 5建立Web應用程式的方法,因網站
不同的目錄而擁有不同的建立方法,如
下所示:
• 在IIS 5新增一個網站時,主目錄預設就是
一個Web應用程式。
• 對於網站的虛擬目錄,只需使用新增精靈建
立時,設定執行指令檔權限,預設就是一個
Web應用程式。
• 如果為主目錄下的實際子目錄,預設與上一
層主目錄屬於同一個Web應用程式。
8-2 網頁間的資料分享


8-2-1 在網頁間分享資料
8-2-2 網頁間資料分享的方法
8-2-1 在網頁間分享資料

網站同時允許多位使用者進入網站,所以
網站需要考慮分享的資料有兩種,如下所
示:
• 分享給網站所有的使用者:在ASP程式就是第
8-3節的Application變數,例如:目前上線的
使用者數。
• 每位使用者的專屬資料:在ASP程式就是第84節的Session變數,例如:登入網站的使用者
資料。
8-2-2 網頁間資料分享的方法

ASP程式間傳遞資料方法有幾種,筆者將它
整理,如下所示:
• 在第七章使用表單或網址URL參數傳到下一頁
ASP程式。
• 第8-3和8-4節的Application和Session物件。
• 第8-6節的Cookies直接保留在客戶端電腦,以
便ASP程式取得所需的資訊。
8-3 Application物件的使用


8-3-1 Application物件的基礎
8-3-2 Application變數的使用
8-3-1 Application物件的基礎-1



Application物件最主要的目的是建立
Application變數,這和一般的程式變數並不相同,
它是一個資料集合。
每一個Web應用程式都擁有一個Application物件,
能夠允許客戶端不同的使用者存取Application物
件的變數,以達到資料分享的目的。
Application物件存在的期間是在第一個Session
物件建立後建立,直到Web伺服器關機或所有的
使用者都離線後Web應用程式結束後才會關閉。
8-3-1 Application物件的基礎-2
8-3-2 Application變數的使用

不論網站的Web應用程式同時有多少位使用者進入,
對於每一個Application變數,伺服端都只會在記
憶體保留一份,變數的格式如下:
Application("Page_Counter")=0

Application的Lock和Unlock兩個方法可以保障同
一時間內只允許一位使用者存取Application變數,
其程式碼如下所示:
Application.Lock
Application("Page_Counter")=Application("Page_Cou
nter")+1
Application.Unlock
8-4 Session物件的使用




8-4-1
8-4-2
8-4-3
8-4-4
Session物件的基礎
Session變數的使用
使用Session變數傳遞資料
Session變數的使用限制
8-4-1 Session物件的基礎


如果同時有多位使用者進入網站,每位使
用者都會指定一個不同的Session ID編號,
建立不同的Session物件。
Session 物 件 可 以 建 立 Session 變 數 ,
Session變數和Application變數的差別只
在允許使用者存取的範圍,對比程式語言
來 說 , Session 變 數 為 區 域 變 數 ,
Application變數為全域變數。
8-4-2 Session變數的使用

在ASP程式設定Session變數的程式碼,將
Session變數User_Pages加一,如下所示:
Session("User_Pages")=Session("User_Pages")+1

Session變數並不需要考慮資料衝突的問題,
因為它是附屬於使用者的Session期間,使
用下列屬性可以取得使用者目前的Session
ID,如下所示:
<%=Session.SessionID%>
8-4-3 使用Session變數傳遞資料

Session變數主要的用途是用來在網頁
間分享資料,可以使用Session變數儲
存使用者的資訊,如下所示:
Session("UserName") = "hueyan"
Session("UserPassword") = "1234”

在Session期間內執行其它的ASP程式時,
都可以使用ASP程式碼取得上述Session
變數的值,如下所示:
strUserName = Session("UserName")
strUserPassword = Session("UserPassword")
8-4-4 Session變數的使用限制

在Session變數使用上的一些限制,如
下所示:
• 如果瀏覽程式為Internet Explorer 4.0x前
的版本,需要開啟Cookies功能。
• ASP程式執行轉向指令,只限同一個Web應
用程式,不能轉向到其它的Web伺服器。
• 如果是十分龐大的Web應用程式,擁有多個
子目錄,子目錄ASP程式所建立的Session
變數是無法在其它子目錄中存取。
• Session變數的使用上比較浪費記憶體。
8-5 Global.asa檔案的使用



8-5-1 Global.asa檔案的架構
8-5-2 Application與Session物件的事件
處理程序
8-5-3 Global.asa檔案的使用
8-5-1 Global.asa檔案的架構

Global.asa檔案的架構,主要部分是<script>標
籤的四個事件處理程序,如下所示:
<script language="VBScript" runat="Server">
Sub Application_OnStart
…….
End Sub
Sub Application_OnEnd
.……
End Sub
Sub Session_OnStart
…….
End Sub
Sub Session_OnEnd
…….
End Sub
</script>
8-5-2 Application與Session物件的事件處理程序

Application和Session物件四個事件處理程序
的說明,筆者整理如下所示:
• Application_OnStart:當Web應用程式第一位使
用者執行第一個ASP程式時,
Application_OnStart事件就會觸發。
• Application_OnEnd:當Web伺服器關機,此事
件就會觸發。
• Session_OnStart:每一位使用者在執行ASP程式
前,就會觸發此事件。
• Session_OnEnd:任何使用者在TimeOut屬性預
設的20分鐘內沒有進入其它的ASP程式,就會觸發
此事件。
8-5-3 Global.asa檔案的使用

在Web伺服器正確的使用Global.asa檔案,
請注意是否為Web應用程式和存放的位置,
如下所示:
• IIS 5的Web伺服器:每一個Web應用程式啟
動點的根目錄都可以擁有一個Global.asa檔案。
• PWS:主目錄可以擁有一個Global.asa檔案,
建立的虛擬目錄如同IIS的Web應用程式,也
可以擁有Global.asa檔案。
8-6 Cookies的處理





8-6-1
8-6-2
8-6-3
8-6-4
8-6-5
Cookies的基礎
新增Cookie
取得Cookie的內容
刪除Cookie
多鍵Cookie的使用
8-6-1 Cookies的基礎



Cookies的英文是小餅乾的意義,源於這些
儲存在客戶端電腦的檔案尺寸都很小。
Cookies儲存在瀏覽程式所在的電腦,並
不會浪費伺服器資源。
ASP程式在進入Web應用程式時,可以檢
查 客 戶 端 是 否 已 經 儲 存 Cookie, 在 取 得
Cookie保留的資訊後,就可以建立複雜的
Web應用程式。
8-6-2 新增Cookie

Cookie為Response物件的資料集合,
可以使用Response物件的Cookies資料
集合新增Cookie,其程式碼如下所示:
Response.Cookies("UserName") = "陳會安"

在新增Cookie後,需要設定Cookie的
Expires屬性,以決定Cookie檔案存在
客戶端電腦的期限,如下所示:
Response.Cookies("UserName").Expires =
Date + 10
8-6-3 取得Cookie的內容

如果在客戶端的電腦擁有Cookie,我們可
以使用Request物件的Cookies資料集合取
得Cookie值,其程式碼如下所示:
strUserName = Request.Cookies("UserName")
8-6-4 刪除Cookie

刪除Cookie,只需將Expires屬性設定為
已經過期即可刪除Cookie,其程式碼如下
所示:
Response.Cookies("UserName").Expires=Date-365

程式碼將有效限期限設定為一年前,因為
Cookie已經過期,就是刪除Cookie。
8-6-5 多鍵Cookie的使用

Cookie屬於一種目錄結構的資料集合,在同一個
名稱下還允許擁有不同Key鍵名,能夠儲存多個
不同的值,如下所示:
Response.Cookies("User")("UserName") = "陳會安"
Response.Cookies("User")("Password") = "1234"
Response.Cookies("User").Expires = Date + 10

多鍵Cookie如同陣列,在取得Cookie值時不只
需要指定名稱,還需要指定鍵名,如下所示:
strUserName =
Request.Cookies("User")("UserName")
strPassword = Request.Cookies("User")("Password")
8-7 Cookies的應用


8-7-1 Cookies的基本應用
8-7-2 儲存使用者的瀏覽記錄
8-7-1 Cookies的基本應用

Cookies在網站實作上的應用相當多,
通常使用Cookies保留的資料,大都屬
於下列幾個方面,如下所示:
• 個人資訊:使用Cookies保留個人的資訊,例如:
姓名、地址、時區、帳號和是否曾經進過此網站。
• 個人化的內容:活用Cookies可以定製個人化的網
站外觀和個人偏好的網站內容,或者只提供使用者
有興趣的資訊。
• 網站購物車:線上購物車需要保留使用者選擇的商
品,Cookies就可以用來記錄這些選購的商品。
8-7-2 儲存使用者的瀏覽記錄

ASP程式檢查客戶端的電腦是否曾留下
使用者名稱的Cookie,其程式碼如下所
示:
strUserName = Request.Cookies("UserName")

程式碼在取出UserName的Cookie,處
理方式如下所示:
• 如果變數strUserName有內容,表示已經
建立Cookies 。
• 否則顯示表單輸入使用者名稱,並且建立
Cookie儲存使用者名稱。