320 likes | 420 Views
第 8 章 Application、Session 物件與 Cookies 的處理. 8-1 Web 應用程式 8-2 網頁間的資料分享 8-3 Application 物件的使用 8-4 Session 物件的使用 8-5 Global.asa 檔案的使用 8-6 Cookies 的處理 8-7 Cookies 的應用. 8-1 Web 應用程式. 8-1-1 Web 應用程式的基礎 8-1-2 PWS 建立 Web 應用程式 8-1-3 IIS 5 建立 Web 應用程式. 8-1-1 Web 應用程式的基礎 -1.
E N D
第8章 Application、Session物件與Cookies的處理 • 8-1 Web應用程式 • 8-2 網頁間的資料分享 • 8-3 Application物件的使用 • 8-4 Session物件的使用 • 8-5 Global.asa檔案的使用 • 8-6 Cookies的處理 • 8-7 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-2 PWS建立Web應用程式 • PWS為IIS 4的簡化版本,預設PWS的主目錄就是一個Web應用程式。 • PWS如果需要在同一個網站建立多個Web應用程式,只需建立虛擬目錄,並且為擁有指令權限的虛擬目錄,這個虛擬目錄就是一個Web應用程式。
8-1-3 IIS 5建立Web應用程式-1 • IIS 5的Web應用程式依使用記憶體方式的不同,可以分為兩種應用程式,如下表所示:
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程式就是第8-4節的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-2 Application變數的使用 • 不論網站的Web應用程式同時有多少位使用者進入,對於每一個Application變數,伺服端都只會在記憶體保留一份,變數的格式如下: Application("Page_Counter")=0 • Application的Lock和Unlock兩個方法可以保障同一時間內只允許一位使用者存取Application變數,其程式碼如下所示: Application.Lock Application("Page_Counter")=Application("Page_Counter")+1 Application.Unlock
8-4 Session物件的使用 • 8-4-1 Session物件的基礎 • 8-4-2 Session變數的使用 • 8-4-3 使用Session變數傳遞資料 • 8-4-4 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 Cookies的基礎 • 8-6-2 新增Cookie • 8-6-3 取得Cookie的內容 • 8-6-4 刪除Cookie • 8-6-5 多鍵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儲存使用者名稱。