1 / 51

第 10 章 Web應用程式的資料分享

第 10 章 Web應用程式的資料分享. 10-1 Web 應用程式的基礎 10-2 設定 ASP.NET 的 Web 應用程式 10-3 網頁間的資料分享 10-4 Application 與 Session 物件 10-5 Global.asax 檔案的使用 10-6 Cookies 的處理 10-7 Request 物件的表單處理 10-8 跨程式的 Web 表單送回. 10-1 Web應用程式的基礎. 10-1-1 在 IIS 建立 Web 應用程式 10-1-2 在 VWD 測試伺服器建立 Web 應用程式.

fergus
Download Presentation

第 10 章 Web應用程式的資料分享

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第10章 Web應用程式的資料分享 • 10-1 Web應用程式的基礎 • 10-2 設定ASP.NET的Web應用程式 • 10-3 網頁間的資料分享 • 10-4 Application與Session物件 • 10-5 Global.asax檔案的使用 • 10-6 Cookies的處理 • 10-7 Request物件的表單處理 • 10-8 跨程式的Web表單送回

  2. 10-1 Web應用程式的基礎 • 10-1-1 在IIS建立Web應用程式 • 10-1-2 在VWD測試伺服器建立 Web應用程式

  3. 10-1 Web應用程式的基礎 • ASP.NET「應用程式」(Applications)是指使用ASP.NET技術建立的Web應用程式,它是由網頁相關檔案所組成,可以完成特定工作的應用程式。 • ASP.NET應用程式簡單的說就是一種.NET Framework應用程式,因為它是在Web伺服器上執行的應用程式,所以稱為Web應用程式。

  4. 10-1-1 在IIS建立Web應用程式 • 在IIS的Web伺服器能夠將整個網站,或指定網站目錄建立成Web應用程式。並且能夠在同一個網站建立多個Web應用程式,每一個虛擬目錄都可以建立成為Web應用程式。 • 在IIS建立Web應用程式的方法,如下所示: • 在IIS新增網站:主目錄預設是一個Web應用程式。 • 網站虛擬目錄(Virtual Directories):當目錄新增成為虛擬目錄或Web共用時,如果目錄擁有【指令碼】權限,它就是一個Web應用程式,詳細步驟請參閱第1-5-3節。 • 主目錄下實際路徑的子目錄:預設與上一層主目錄屬於同一個Web應用程式。

  5. 10-1-2 在VWD測試伺服器建立Web應用程式-1 • VWD內建測試ASP.NET程式執行的程式開發伺服器,事實上,它就是1.0/1.1版名為Cassini的個人Web伺服器,這是支援ASP.NET技術的Web伺服器,可以在非IIS環境測試執行ASP.NET應用程式。 • 當VWD開啟「Ch10」資料夾網站和執行ASP.NET程式Default.aspx時,就會在工作列建立程式開發伺服器圖示,如下圖所示:

  6. 10-1-2 在VWD測試伺服器建立Web應用程式-2 • 在程式開發伺服器的圖示,執行右鍵【顯示詳細資訊】指令,可以看到伺服器的詳細資訊,一個VWD的程式開發伺服器只能建立一個Web應用程式,以此例它是在埠號1059建立Web應用程式。

  7. 10-2 設定ASP.NET的Web應用程式 • 10-2-1 Web.Config組態檔 • 10-2-2 Web介面的網站管理工具

  8. 10-2-1 Web.Config組態檔-說明 • Web組態檔是ASP.NET技術Web應用程式的資源設定檔案,它是一份XML文件,內含Web應用程式相關設定的XML標籤,可以用來簡化ASP.NET應用程式的設定。 • 雖然我們可以自行編輯位在Web應用程式根目錄的Web.Config組態檔內容,不過,另一種簡單方式是直接使用下一節的Web介面網站管理工具,使用它來更改Web.Config檔案的相關設定。

  9. 10-2-1 Web.Config組態檔-範例 <?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings/> <connectionStrings> <add name="iPodsConnectionString" connectionString="Provider=…" providerName="System.Data.OleDb" /> </connectionStrings> <system.web> <compilation debug="false" /> <authentication mode="Windows" /> <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> </system.web> </configuration>

  10. 10-2-2 Web介面的網站管理工具-啟動 • 在Visual Web Developer提供Web介面的ASP.NET網站管理工具,請啟動VWD開啟「Ch10」網站後,執行「網站」→「ASP.NET組態」指令,可以開啟瀏覽程式進入Web介面管理工具,如下圖所示:

  11. 10-2-2 Web介面的網站管理工具-安全性標籤 • 在此標籤可以建立Web應用程式的安全設定,包含驗證方式、建立和管理使用者、角色和存取規則,詳細說明請參閱第17章。

  12. 10-2-2 Web介面的網站管理工具-應用程式標籤 • 在此標籤可以更改Web應用程式設定、設定SMTP伺服器、更改應用程式狀態和除錯與追蹤模式,如下圖所示:

  13. 10-2-2 Web介面的網站管理工具-提供者標籤 • 在此標籤可以設定資料來源提供者(Data Provider),預設使用AspNetSqlProvider提供者。

  14. 10-3 網頁間的資料分享 • 10-3-1 在網頁間分享資料 • 10-3-2 網頁間資料分享的方法

  15. 10-3-1 在網頁間分享資料-說明 • 當使用者進入網站,因為HTTP通訊協定並不會保留客戶端的使用者狀態,在伺服端根本不知道瀏覽端有哪些使用者正在瀏覽和其使用狀態。 • 例如:在移至其他ASP.NET程式時,使用者資料並不會自動傳給下一頁,除非瀏覽每一頁時都讓使用者在Web表單重新輸入一次。

  16. 10-3-1 在網頁間分享資料-種類 • 分享給網站所有的使用者:在ASP.NET程式就是使用Application變數進行分享,例如:目前線上的使用者計數。 • 針對每位使用者的專屬資料:在ASP.NET程式就是Session變數的分享資料,例如:登入使用者的個人資料。

  17. 10-3-2 網頁間資料分享的方法 • ASP.NET的資料分享方法,如下所示: • Application和Session物件。 • ASP.NET 2.0版的Profile物件,請參閱第17章。 • 使用Cookies保留在客戶端電腦。 • 將Web表單處理程式指定成其他ASP.NET程式,就可以將欄位資料傳遞到其他ASP.NET程式,即跨ASP.NET程式的表單送回。 • Request物件配合表單或網址URL參數,將欄位資料和參數傳到其他ASP.NET程式,即ASP 3.0版的表單處理。

  18. 10-4 Application與Session物件 • 10-4-1 Application與Session物件的基礎 • 10-4-2 Application變數的使用 • 10-4-3 Session變數的使用

  19. 10-4-1 Application與Session物件的基礎-說明 • 在ASP.NET的Web應用程式擁有一個Application物件,針對每一位使用者擁有對應的Session物件,如下圖所示:

  20. 10-4-1 Application與Session物件的基礎-Application物件 • Application物件的主要目的是建立Application變數的集合物件,可以提供進入Web應用程式的每位使用者一個資料分享的管道。它允許客戶端的每位使用者存取Application變數。以此例使用者1和2都可以存取Application變數。 • Application物件存在期間是在第1個Session物件建立後產生,直到Web伺服器關機且所有的使用者都離線後Web應用程式結束後才會關閉。

  21. 10-4-1 Application與Session物件的基礎-Session物件 • ASP.NET的【Session期間】是指Web應用程式從一頁ASP.NET網頁移到其他ASP.NET網頁過程中所花費的時間。ASP.NET技術提供相關類別來管理Session期間的資訊,也就是建立Session物件來保留Session期間的資料。 • 當一位尚未建立Session物件的使用者執行Web應用程式的ASP.NET程式時,伺服器就會自動建立一個對應的Session物件,而且指定唯一的Session ID編號。例如:上述圖例的每一位使用者都擁有專屬ID的Session物件,只允許對應使用者存取Session變數,在同一個Web應用程式的其他使用者並不能存取。

  22. 10-4-2 Application變數的使用-1 • 不論網站的Web應用程式有多少位使用者進入,對於每一個Application變數,伺服端都只會在記憶體保留一份資料,變數的基本格式如下: Application("Page_Counter") = 0 • 上述變數名稱和ASP.NET程式變數不太一樣,這是一個字串"Page_Counter",加上Application()來取得集合物件的指定元素,它可以將Application變數Page_Counter設為零。

  23. 10-4-2 Application變數的使用-2 • 為了避免資料存取衝突的情況,因為2位使用者同時讀取Application變數並沒有關係,如果一位更改,一位讀取Application變數,在這種情況下衝突就會發生,為了避免這種情況,Application的方法可以保障在同一時間內只允許一位使用者存取Application變數,如下所示: Application.Lock() Application("Page_Counter") = _ Application("Page_Counter")+1 Application.Unlock()

  24. 10-4-3 Session變數的使用-說明 • Session變數是附屬在進入Web應用程式使用者的Session期間,每一位使用者擁有一組專屬Session變數,雖然每位使用者的Session變數名稱相同,但是內容可能完全不同,而且只有該使用者執行的ASP.NET程式才能夠存取自己專屬的Session變數。

  25. 10-4-3 Session變數的使用-方法與屬性

  26. 10-4-3 Session變數的使用-傳遞資料 • Session變數可以在網頁間分享資料,換句話說,我們可以使用Session變數將Web表單輸入資料傳遞給其他ASP.NET程式,如下所示: Session("UserName") = name.Text Session("UserPassword") = pass.Text • 只要使用者沒有超過Session期間或執行Abandon()方法,在期間內執行其他ASP.NET程式,都可以存取上述Session變數值,如下所示: name = Session("UserName") password = Session("UserPassword")

  27. 10-5 Global.asax檔案的使用 • 10-5-1 在VWD新增Global.asax檔案 • 10-5-2 Global.asax檔案的架構 • 10-5-3 Global.asax檔案的使用

  28. 10-5 Global.asax檔案的使用 • Global.asax是選擇性檔案,在ASP.NET的Web應用程式並不一定需要此檔案,除非Web應用程式需要使用到Application和Session物件的事件,因為這些事件處理程序是位在Global.asax檔案。 • 在ASP.NET的Web應用程式新增Global.asax檔案時,請注意!一個Web應用程式只能擁有唯一的Global.asax檔案,其位置是Web應用程式的根目錄。

  29. 10-5-1 在VWD新增Global.asax檔案 • ASP.NET的Global.asax檔案是ANSI文字檔案,使用Windows記事本或VWD都可以編輯Global.asax檔案的內容。在Visual Web Developer新增Global.asax檔案的步驟,如下所示: • 1. 請啟動VWD開啟「Ch10」網站後,執行「檔案」→「新增」→「檔案」指令,可以看到「加入新項目」對話方塊。 • 2. 選【全球應用程式類別】(如果網站已經新增,就不會看到此項目),按【加入】鈕就可以在網站新增Global.asax檔案。

  30. 10-5-2 Global.asax檔案的架構-架構 <%@ Application Language="VB" %> <script Runat="server"> Sub Application_Start(ByVal Sender As Object, _ ByVal E As EventArgs) End Sub Sub Application_End(ByVal Sender As Object, _ ByVal E As EventArgs) End Sub Sub Application_Error(ByVal Sender As Object, _ ByVal E As EventArgs) End Sub Sub Session_Start(ByVal sender As Object, _ ByVal e As EventArgs) End Sub Sub Session_End(ByVal sender As Object, _ ByVal e As EventArgs) End Sub </script>

  31. 10-5-2 Global.asax檔案的架構-說明

  32. 10-5-3 Global.asax檔案的使用-1 • 當使用者請求ASP.NET程式後,就會替每位使用者建立Session期間,接著檢查ASP.NET應用程式是否擁有Global.asax檔案。 • 如果有Global.asax檔案,在執行ASP.NET檔案的程式碼前,如果是第1位使用者,就觸發Application物件的Start事件,執行Global.asax檔案的Application_Start()事件處理程序,接著建立Session物件,因為Global.asax檔案存在,接著執行Session_Start()事件處理程序。

  33. 10-5-3 Global.asax檔案的使用-2 • 當Session期間超過TimeOut屬性的設定(預設20分鐘)或執行Abandon()方法,表示Session期間結束,就觸發Session物件的End事件執行Session_End()事件處理程式,處理程序是在關閉Session物件前執行。 • Web伺服器如果關機,在關閉Application物件前就會執行Application_End()事件處理程序,當然也會結束所有使用者的Session期間,和執行所有使用者的Session_End()事件處理程序。

  34. 10-6 Cookies的處理 • 10-6-1 Cookies的基礎 • 10-6-2 新增Cookie • 10-6-3 取得Cookie的值 • 10-6-4 刪除Cookie • 10-6-5 多鍵Cookie的使用

  35. 10-6-1 Cookies的基礎-說明 • Cookies的英文意義是小餅乾,源於這些儲存在客戶端電腦的檔案尺寸都很小,Cookies儲存在瀏覽程式所在的電腦,所以並不會浪費Web伺服器的資源。 • 在ASP.NET程式只需檢查客戶端是否有儲存Cookie,在取得Cookie的保留資訊後,就可以輕鬆建立複雜的Web應用程式。

  36. 10-6-1 Cookies的基礎-用途 • Cookies在網站實作上的應用相當多,使用Cookies保留的資料大都屬於幾個方面,如下所示: • 個人資訊:使用Cookies保留個人資訊,例如:使用者名稱、時區、帳號和造訪網站的次數等。 • 個人化資訊:Cookies可以定製個人化的網站外觀和個人偏好的網站內容,或是記錄使用者有興趣的資訊。 • 網站購物車:線上購物車需要保留使用者選擇的商品清單,Cookies就可以用來記錄這些選購商品。

  37. 10-6-2 新增Cookie • Cookie是一種集合物件,可以使用名稱存取Cookie值,新增Cookie是使用Response物件的Cookies屬性來新增Cookie,其程式碼如下所示: Dim name As String = "江小魚" Response.Cookies("UserName").Value = name • 在新增Cookie後還需要設定Cookie的Expires屬性,即Cookie檔案存在客戶端電腦的期限,如下所示: Dim dtDay As Date = DateAdd("D", 10, Today) Response.Cookies("UserName").Expires = dtDay

  38. 10-6-3 取得Cookie的值 • 在客戶端電腦如果擁有Cookie,ASP.NET程式可以使用Request物件的Cookies集合物件來取得指定的Cookie值,如下所示: name = Request.Cookies("UserName").Value • 上述程式碼可以取得Cookie名稱UserName的值,並且將它指定給變數name。

  39. 10-6-4 刪除Cookie • 客戶端的Cookie如果不再需要,在ASP.NET程式可以刪除Cookie,刪除方式是將Expires屬性設定成過期的時間,如下所示: Dim dtDay As Date = DateAdd("D", -365, Today) Response.Cookies("UserName").Expires = dtDay • 上述程式碼將有效期限設為一年前,因為Cookie已經過期,換句話說,就是刪除Cookie。

  40. 10-6-5 多鍵Cookie的使用-說明 • Cookie是一種目錄結構的集合物件,在同名Cookie下可以擁有不同Key的鍵名。換句話說,同一個Cookie名稱就可以儲存多種資料。

  41. 10-6-5 多鍵Cookie的使用-新增多鍵的Cookie • 在ASP.NET程式新增多鍵Cookie,需要在名稱後再加上鍵名,如下所示: Response.Cookies("User")("UserName") = "陳會安" Response.Cookies("User")("Password") = "1234" Response.Cookies("User").Expires = _ DateAdd("D",10,Today)

  42. 10-6-5 多鍵Cookie的使用-取得多鍵的Cookie值 • 多鍵Cookie如同陣列,取得Cookie值時不只需要指定名稱,還需要指定鍵名,如下所示: name = _ Request.Cookies("User")("UserName") pass = Request.Cookies("User")("Password")

  43. 10-6-5 多鍵Cookie的使用-刪除多鍵的Cookie • 多鍵Cookie的刪除和第10-6-4節相同,只需將Cookie的Expires屬性設為過期後,就可以刪除Cookie。如果只刪除Cookie其中一個鍵名,請將該鍵名設成空字串即可,如下所示: Response.Cookies("User")("Password") = "" • 上述程式碼刪除Cookie名稱為User的Password鍵名。

  44. 10-7 Request物件的表單處理 • 10-7-1 Form與QueryString集合物件 • 10-7-2 Request物件的表單處理

  45. 10-7-1 Form與QueryString集合物件-ASP 3.0版的表單處理 • ASP 3.0版的表單處理就是使用Request物件的Form與QueryString集合物件來取得輸入資料,如下所示: • 傳統HTML/XHTML表單網頁:使用表單欄位以HTTP通訊協定的檔頭傳遞表單欄位資料,可以使用POST或GET方法,如下所示: <form name="name" method="POST | GET" action="URL"> ………. </form> • URL參數:從瀏覽程式輸入的網址傳遞參數,其總長度只有1024個字元。

  46. 10-7-1 Form與QueryString集合物件-Form集合物件 • 網頁表單如果使用POST方法傳遞資料,它是將傳遞資料在編碼後,透過HTTP通訊協定的標頭資料傳送到Web伺服器,在伺服端可以使用Form集合物件來取出資料,其語法如下所示: Request(("FieldName") Request.Form("FieldName")

  47. 10-7-1 Form與QueryString集合物件-QueryString集合物件 • 網頁表單如果使用GET方法傳遞資料,就是將傳遞資料編碼後,透過URL網址後的字串傳送到Web伺服器,參數是位在問號之後,如果參數不只一個,請使用「&」符號分隔,如下所示: http://localhost/Ch10-7-2.aspx?fname1=value1&fname2=value2 • 當瀏覽程式輸入上述網址,按下Enter鍵後,伺服端就可以使用QueryString集合物件來取出資料,如下所示: Request(("FieldName") Request.QueryString(" FieldName")

  48. 10-7-2 Request物件的表單處理 • Request物件的表單處理除了可以使用使用表單方式來傳遞資料外,還可以使用超連結URL參數來傳送資料給其他ASP.NET程式。 • URL超連結傳遞的參數或表單GET方法傳遞的內容,都是使用QueryString集合物件,POST方法是使用Form集合物件來取得URL參數或欄位值,如下所示: name = Request("Username") pass = Request("Password") • 程式碼沒有指定QueryString或Form集合物件,換句話說,它可以取得URL參數和表單POST方法傳遞的參數,右邊括號內是參數或欄位名稱字串。

  49. 10-8 跨程式的Web表單送回-說明 • ASP.NET 2.0版可以使用PreviousPage物件執行跨ASP.NET程式的Web表單送回。換句話說,我們可以將Web表單處理程式指定成其他ASP.NET程式(預設是自己),也就是將欄位資料傳遞給其他ASP.NET程式。

  50. 10-8 跨程式的Web表單送回-指定Web表單處理程式 • ASP.NET 2.0版可以使用PreviousPage物件執行跨ASP.NET程式的Web表單送回。換句話說,我們可以將Web表單處理程式指定成其他ASP.NET程式(預設是自己),也就是將欄位資料傳遞給其他ASP.NET程式。 • 在Web表單的Button控制項可以使用PostBackUrl屬性來指定表單送回的ASP.NET程式,如下所示: <asp:Button Id="Button" Text="下一步" Runat="server" PostBackUrl="Ch10-8Second.aspx"/> • 上述Button控制項指定表單送回至ASP.NET程式Ch10-8Second.aspx。

More Related