Ch09 網頁間的資料分享

69
Ch09 Ch09 網網網網網網網網 網網網網網網網網 網網網網網網 網網網網網網

description

Ch09 網頁間的資料分享. 網頁程式設計. 大綱. Web 應用程式 網頁間的資料分享 Application 物件的使用 Session 物件的使用 Global.asax 檔案的使用 Cookies 的處理 Cookies 的應用. Web 應用程式的基礎-說明. Web 應用程式是指網站目錄和其子目錄執行檔案的能力, IIS 支援 ASP.NET、ASP、ISAPI、CGI、IDC 與 SSI 應用程式,能夠設定應用程式的執行權限,也就是檔案所在目錄的權限,以 Web 應用程式來說是【指令】和【執行】權限。. - PowerPoint PPT Presentation

Transcript of Ch09 網頁間的資料分享

Page 1: Ch09  網頁間的資料分享

Ch09Ch09 網頁間的資料分享網頁間的資料分享網頁程式設計網頁程式設計

Page 2: Ch09  網頁間的資料分享

22

大綱大綱 WebWeb 應用程式應用程式 網頁間的資料分享網頁間的資料分享 ApplicationApplication 物件的使用物件的使用 SessionSession 物件的使用物件的使用 Global.asaxGlobal.asax 檔案的使用檔案的使用 CookiesCookies 的處理的處理 CookiesCookies 的應用的應用

Page 3: Ch09  網頁間的資料分享

33

WebWeb 應用程式的基礎應用程式的基礎 -- 說明說明

WebWeb 應用程式是指網站目錄和其子目錄執應用程式是指網站目錄和其子目錄執行檔案的能力,行檔案的能力, IISIIS 支援支援ASP.NETASP.NET、、 ASPASP、、 ISAPIISAPI、、 CGICGI、、 IDCIDC與與 SSISSI 應用程式,能夠設定應用程式的執應用程式,能夠設定應用程式的執行權限,也就是檔案所在目錄的權限,以行權限,也就是檔案所在目錄的權限,以WebWeb 應用程式來說是【指令】和【執行】應用程式來說是【指令】和【執行】權限。權限。

Page 4: Ch09  網頁間的資料分享

44

WebWeb 應用程式的基礎應用程式的基礎 --ASP.NETASP.NET 應用程式應用程式

ASP.NETASP.NET 技術的技術的 WebWeb 應用程式就是建立應用程式就是建立ASP.NETASP.NET 應用程式,屬於一種應用程式,屬於一種 ..NET NET FrameworkFramework 應用程式。應用程式。

這是一種完全在伺服端執行的應用程這是一種完全在伺服端執行的應用程式,式, ASP.NETASP.NET 應用程式是由一些程式檔案應用程式是由一些程式檔案組成,當我們在組成,當我們在 WebWeb 伺服器的虛擬目錄建伺服器的虛擬目錄建立立 ASP.NETASP.NET 程式檔案和設定檔案程式檔案和設定檔案Global.asaxGlobal.asax ,,就是在建立就是在建立 ASP.NETASP.NET 應用應用程式。程式。

Page 5: Ch09  網頁間的資料分享

55

WebWeb 應用程式的基礎應用程式的基礎 -- 圖例圖例 每一個應用程式有一每一個應用程式有一個個 Global.asaxGlobal.asax 檔案,檔案,可以建立一個可以建立一個ApplicationApplication 物件物件

每一個進入應用程式每一個進入應用程式的使用者都擁有獨立的使用者都擁有獨立的的 SessionSession 物件物件

Page 6: Ch09  網頁間的資料分享

66

網頁間的資料分享網頁間的資料分享 ASP.NETASP.NET 使 用使 用 HTTPHTTP 通 訊 協 定 , 其 特 性 就 是通 訊 協 定 , 其 特 性 就 是

ASP.NETASP.NET 程式並不是在客戶端的電腦執行,程式並不是在客戶端的電腦執行,而是而是在伺服端執行在伺服端執行,,客戶端主要的目的只是讀取網頁客戶端主要的目的只是讀取網頁內容或提供使用者輸入資料的介面內容或提供使用者輸入資料的介面。。

在在 WebWeb 伺服器的伺服端,事實上,對於同時連線伺服器的伺服端,事實上,對於同時連線網站的使用者幾乎無法獲得任何使用者狀態,因網站的使用者幾乎無法獲得任何使用者狀態,因為網站各網頁間並沒有什麼關連,為網站各網頁間並沒有什麼關連, ASP.NETASP.NET 程程式碼的變數只限在同一個式碼的變數只限在同一個 ASP.NETASP.NET 程式存取,程式存取,而無法橫越其它的而無法橫越其它的 ASP.NETASP.NET 程式。程式。

??所以,如何將資料傳送給下一個網頁呢????所以,如何將資料傳送給下一個網頁呢??

Page 7: Ch09  網頁間的資料分享

77

在網頁間分享資料在網頁間分享資料 網站的分享資料可以分為網站的分享資料可以分為 22 種,如下所示:種,如下所示:

分享給網站所有的使用者:分享給網站所有的使用者:在在 ASP.NETASP.NET 程式程式就是所謂的就是所謂的 ApplicationApplication 變數,例如:目前線上變數,例如:目前線上的使用者數。的使用者數。

針對每位使用者的專屬資料:針對每位使用者的專屬資料:在在 ASP.NETASP.NET 程程式就是式就是 SessionSession 變數,例如:登入使用者的權變數,例如:登入使用者的權限。限。

Page 8: Ch09  網頁間的資料分享

88

網頁間資料分享的方法網頁間資料分享的方法 ASP.NETASP.NET 程式在網頁間傳遞資料的方法有很多種,程式在網頁間傳遞資料的方法有很多種,

整理如下所示:整理如下所示: 利用利用 WebWeb 表單表單將表單處理的將表單處理的 ASP.NETASP.NET 程式指定成其程式指定成其它它 ASP.NETASP.NET 程式,如此就可以將欄位資料傳遞到其它程式,如此就可以將欄位資料傳遞到其它ASP.NETASP.NET 程式。程式。

利用利用 RequestRequest 物件配合表單或網址物件配合表單或網址 URLURL 參數參數,將欄位,將欄位資料和參數傳到其它的資料和參數傳到其它的 ASP.NETASP.NET 程式。程式。

利用利用 ApplicationApplication和和 SessionSession 物件。物件。 利用利用 CookiesCookies 直接保留在客戶端電腦,以便直接保留在客戶端電腦,以便 ASP.NETASP.NET

程式取得所需的資訊。程式取得所需的資訊。

Page 9: Ch09  網頁間的資料分享

99

網頁間資料分享的方法網頁間資料分享的方法 上頁的分享方法的適用性:上頁的分享方法的適用性:

CookiesCookies 通常是儲存一些客戶端使用者的選擇通常是儲存一些客戶端使用者的選擇和狀態和狀態

對於對於 WebWeb 應用程式,若是程式間的資料分享,應用程式,若是程式間的資料分享,主要是使用儲存在伺服端的主要是使用儲存在伺服端的 ApplicationApplication和和SessionSession 物件物件

Page 10: Ch09  網頁間的資料分享

1010

範例1:利用表單方式來資料分享範例1:利用表單方式來資料分享 將每一個看起來好像是一將每一個看起來好像是一

頁的網頁以頁的網頁以 PanelPanel 來裝載來裝載 以這個範例而言,共有三以這個範例而言,共有三

個畫面要呈現及要求輸入個畫面要呈現及要求輸入資料,所以,就有三個資料,所以,就有三個panelpanel 來裝載,另外,有來裝載,另外,有第四個第四個 panelpanel 是為了要呈是為了要呈現所有之前輸入的資料現所有之前輸入的資料

這個方法,從頭到尾,都這個方法,從頭到尾,都在同一個程式中,所以,在同一個程式中,所以,變數一直都存在著,並不變數一直都存在著,並不需要做網頁間的資料傳輸。需要做網頁間的資料傳輸。

1.1. <!--<!-- 程式範例程式範例 Ex10_01.aspx:Ex10_01.aspx: 使用使用 WEBWEB 控制項控制項(panel) -->(panel) -->

2.2. <%@ Page Language="VB" %><%@ Page Language="VB" %>3.3. <html><html>4.4. <head><head>5.5. <title>Ex10_01:<title>Ex10_01: 使用使用 WEBWEB 控制項控制項 +Panel</title>+Panel</title>6.6. <script language="Vb" runat="server"><script language="Vb" runat="server">7.7. Sub Page_Load(s as object, e as eventargs)Sub Page_Load(s as object, e as eventargs)8.8. Panel1.visible="true"Panel1.visible="true"9.9. Panel2.visible="false"Panel2.visible="false"10.10. Panel3.visible="false"Panel3.visible="false"11.11. Panel4.visible="false"Panel4.visible="false"12.12. End SubEnd Sub13.13. Sub Button1_click(s as object, e as eventargs)Sub Button1_click(s as object, e as eventargs)14.14. If Page.IsValid ThenIf Page.IsValid Then15.15. panel1.visible="false"panel1.visible="false"16.16. panel2.visible="true"panel2.visible="true"17.17. panel3.visible="false"panel3.visible="false"18.18. panel4.visible="false"panel4.visible="false"19.19. End IfEnd If20.20. Label1.Text = member_id.TextLabel1.Text = member_id.Text21.21. End SubEnd Sub

Page 11: Ch09  網頁間的資料分享

1111

範例1:利用表單方式來資料分享範例1:利用表單方式來資料分享((續續 ))

22.22.Sub Button2_click( s as object, e as Sub Button2_click( s as object, e as eventargs)eventargs)

23.23. panel1.visible = "true“ panel1.visible = "true“ 24.24. panel2.visible = "false"panel2.visible = "false"25.25. panel3.visible = "false"panel3.visible = "false"26.26. panel4.visible = "false“panel4.visible = "false“27.27.End SubEnd Sub28.28.Sub Button3_click(s as object, e as Sub Button3_click(s as object, e as

eventargs)eventargs)29.29. If work1.Checked = true ThenIf work1.Checked = true Then30.30. Label2.Text = work1.TextLabel2.Text = work1.Text31.31. End IfEnd If32.32. If work2.Checked = true ThenIf work2.Checked = true Then33.33. Label2.text = work2.TextLabel2.text = work2.Text34.34. End IfEnd If35.35. If work3.Checked = true ThenIf work3.Checked = true Then36.36. Label2.text = work3.TextLabel2.text = work3.Text37.37. End IfEnd If38.38. If work4.Checked = true ThenIf work4.Checked = true Then39.39. Label2.text = work4.TextLabel2.text = work4.Text40.40. End IfEnd If41.41. If work5.Checked = true ThenIf work5.Checked = true Then42.42. Label2.text = work5.TextLabel2.text = work5.Text43.43. End IfEnd If

44.44. If male.Checked = true ThenIf male.Checked = true Then45.45. Label3.Text = "Label3.Text = " 先生先生 , , 你好你好 !"!"46.46. End IfEnd If47.47. If female.Checked = true ThenIf female.Checked = true Then48.48. Label3.Text = "Label3.Text = " 女士女士 , , 妳好妳好 !"!"49.49. End IfEnd If50.50. panel1.visible = "false"panel1.visible = "false"51.51. panel2.visible = "false"panel2.visible = "false"52.52. panel3.visible = "true"panel3.visible = "true"53.53. panel4.visible = "false" panel4.visible = "false" 54.54.End SubEnd Sub55.55.Sub Button4_click( s as object, e as Sub Button4_click( s as object, e as

eventargs)eventargs)56.56. panel1.visible = "false"panel1.visible = "false"57.57. panel2.visible = "true"panel2.visible = "true"58.58. panel3.visible = "false"panel3.visible = "false"59.59. panel4.visible = "false"panel4.visible = "false"60.60.End SubEnd Sub

Page 12: Ch09  網頁間的資料分享

1212

範例1:利用表單方式來資料分享範例1:利用表單方式來資料分享((續續 ))

61.61.Sub Button5_click(s as object, e as Sub Button5_click(s as object, e as eventargs)eventargs)

62.62. Dim i as integerDim i as integer63.63. panel1.visible = "false"panel1.visible = "false"64.64. panel2.visible = "false"panel2.visible = "false"65.65. panel3.visible = "false"panel3.visible = "false"66.66. panel4.visible = "true" panel4.visible = "true" 67.67. For i = 0 to e_news.Items.Count -1For i = 0 to e_news.Items.Count -168.68. If e_news.Items(i).Selected ThenIf e_news.Items(i).Selected Then69.69. If Label4.Text="" ThenIf Label4.Text="" Then70.70. Label4.Text += e_news.Items(i).TextLabel4.Text += e_news.Items(i).Text71.71. ElseElse72.72. Label4.Text += ", " & Label4.Text += ", " &

e_news.Items(i).Texte_news.Items(i).Text73.73. End IfEnd If74.74. End IfEnd If75.75. Next Next 76.76.End SubEnd Sub

77.77.Sub Button6_click(s as object, e as Sub Button6_click(s as object, e as eventargs)eventargs)

78.78. Response.Redirect("http://mis2.nkmu.edu.tResponse.Redirect("http://mis2.nkmu.edu.tw/wangdaj")w/wangdaj")

79.79.End SubEnd Sub

80.80.</script></script>81.81.</head></head>

Page 13: Ch09  網頁間的資料分享

1313

範例1:利用表單方式來資料分享範例1:利用表單方式來資料分享 ((續續 ))82.82.<body><body>83.83. <form runat="server"><form runat="server">84.84. <asp:Panel Id="panel1" Runat="server" backColor="Pink"><asp:Panel Id="panel1" Runat="server" backColor="Pink">85.85. <center><H4><center><H4> 會員登入會員登入 </h4></center></h4></center>86.86. <hr><hr>87.87. 會員帳號 會員帳號 : <asp:TextBox Id="member_id" runat="server"/><p>: <asp:TextBox Id="member_id" runat="server"/><p>88.88. <asp:RequiredFieldValidator Id="required_id" <asp:RequiredFieldValidator Id="required_id" 89.89. ControlToValidate="member_id"ControlToValidate="member_id"90.90. ErrorMessage="ErrorMessage=" 請輸入帳號請輸入帳號 !"!"91.91. runat="server" />runat="server" />92.92. 密 碼 密 碼 : <asp:TextBox Id="member_pass" TextMode="Password" runat="server"/><p>: <asp:TextBox Id="member_pass" TextMode="Password" runat="server"/><p>93.93. <asp:RequiredFieldValidator Id="required_pass" <asp:RequiredFieldValidator Id="required_pass" 94.94. ControlToValidate="member_pass"ControlToValidate="member_pass"95.95. ErrorMessage="ErrorMessage=" 請輸入密碼請輸入密碼 !"!"96.96. runat="server" />runat="server" />97.97. <asp:CompareValidator Id="compare_pass"<asp:CompareValidator Id="compare_pass"98.98. ControlToValidate="member_pass"ControlToValidate="member_pass"99.99. ValueToCompare="123"ValueToCompare="123"100.100. Type="String"Type="String"101.101. ErrorMessage="ErrorMessage=" 你的密碼錯誤你的密碼錯誤 ,,是是 123!"123!"102.102. runat="server" />runat="server" />103.103. <asp:button id="button1" runat="server" Text="<asp:button id="button1" runat="server" Text=" 下一步下一步 " OnClick="Button1_click" />" OnClick="Button1_click" />104.104. </asp:Panel></asp:Panel>

Page 14: Ch09  網頁間的資料分享

1414

範例1:利用表單方式來資料分享範例1:利用表單方式來資料分享 ((續續 ))105.105. <asp:Panel id="panel2" runat="server" backcolor="lightgray"><asp:Panel id="panel2" runat="server" backcolor="lightgray">106.106. <center><h4><center><h4> 個人資料個人資料 </h4></center></h4></center>107.107. <hr><hr>108.108. 職 業 別 職 業 別 : : 109.109. <asp:RadioButton id="work1" Text="<asp:RadioButton id="work1" Text=" 軍軍 ""110.110. GroupName="work" runat="server" />GroupName="work" runat="server" />111.111. <asp:RadioButton id="work2" text="<asp:RadioButton id="work2" text=" 公公 ""112.112. GroupName="work" runat="server" />GroupName="work" runat="server" />113.113. <asp:RadioButton id="work3" text="<asp:RadioButton id="work3" text=" 教教 ""114.114. GroupName="work" runat="server" />GroupName="work" runat="server" />115.115. <asp:RadioButton id="work4" text="<asp:RadioButton id="work4" text=" 工工 ""116.116. GroupName="work" runat="server" />GroupName="work" runat="server" />117.117. <asp:RadioButton id="work5" text="<asp:RadioButton id="work5" text=" 其他其他 ""118.118. GroupName="work" runat="server" />GroupName="work" runat="server" />119.119. <br><br>120.120. 性 別 性 別 : : 121.121. <asp:RadioButton id="male" Text="<asp:RadioButton id="male" Text=" 先生先生 ""122.122. GroupName="fm" runat="server" />GroupName="fm" runat="server" />123.123. <asp:RadioButton id="female" Text="<asp:RadioButton id="female" Text=" 女士女士 ""124.124. GroupName="fm" runat="server" />GroupName="fm" runat="server" />125.125. <asp:button id="button2" runat="server" Text="<asp:button id="button2" runat="server" Text=" 上一步上一步 " OnClick="Button2_click" /> " OnClick="Button2_click" /> 126.126. <asp:button id="button3" runat="server" Text="<asp:button id="button3" runat="server" Text=" 下一步下一步 " OnClick="Button3_click" />" OnClick="Button3_click" />127.127. </asp:Panel> </asp:Panel>

Page 15: Ch09  網頁間的資料分享

1515

範例1:利用表單方式來資料分享範例1:利用表單方式來資料分享 ((續續 ))128.128. <asp:Panel id="panel3" runat="server" backcolor="lightyellow"><asp:Panel id="panel3" runat="server" backcolor="lightyellow">129.129. <center><h4><center><h4> 訂閱的電子報類型訂閱的電子報類型 </h4></center></h4></center>130.130. <hr><hr>131.131. <asp:CheckBoxList Id="e_news" runat="server" RepeatColumns="3"><asp:CheckBoxList Id="e_news" runat="server" RepeatColumns="3">132.132. <asp:ListItem Text="<asp:ListItem Text=" 投資理財投資理財 " />" />133.133. <asp:ListItem Text="<asp:ListItem Text=" 體育體育 " />" />134.134. <asp:ListItem Text="<asp:ListItem Text=" 娛樂新聞娛樂新聞 " />" />135.135. <asp:ListItem Text="<asp:ListItem Text="科技新知科技新知 " />" />136.136. <asp:ListItem Text="<asp:ListItem Text="文學文學 " />" />137.137. <asp:ListItem Text="<asp:ListItem Text=" 網路遊戲網路遊戲 " />" />138.138. </asp:CheckBoxList></asp:CheckBoxList>139.139. <asp:button id="button4" runat="server" Text="<asp:button id="button4" runat="server" Text=" 上一步上一步 " OnClick="Button4_click" />" OnClick="Button4_click" />140.140. <asp:button id="button5" runat="server" Text="<asp:button id="button5" runat="server" Text=" 下一步下一步 " OnClick="Button5_click" />" OnClick="Button5_click" />141.141. </asp:Panel></asp:Panel>142.142. <asp:Panel id="panel4" runat="server" backcolor="lightgreen"><asp:Panel id="panel4" runat="server" backcolor="lightgreen">143.143. <center><h4><asp:Label id="Label1" runat="server" /><center><h4><asp:Label id="Label1" runat="server" />144.144. <asp:Label id="Label3" runat="server" /><asp:Label id="Label3" runat="server" />145.145. </h4></h4>146.146. </center></center>147.147. <hr><hr>148.148. 你的工作類型是你的工作類型是 : <asp:Label id="Label2" runat="server" /><br>: <asp:Label id="Label2" runat="server" /><br>149.149. 你訂閱的電子報類型是你訂閱的電子報類型是 : <asp:Label id="Label4" runat="server" /><br>: <asp:Label id="Label4" runat="server" /><br>150.150. <asp:button id="button6" runat="server" Text="<asp:button id="button6" runat="server" Text="回首頁回首頁 " OnClick="Button6_click" />" OnClick="Button6_click" />151.151. </asp:Panel></asp:Panel>152.152. </form></form>153.153. </body></html></body></html>

Page 16: Ch09  網頁間的資料分享

1616

FormForm與與 QueryStringQueryString 集合物件集合物件 --ASP 3.0ASP 3.0 版的表單處理版的表單處理

ASP 3.0ASP 3.0 版的表單處理使用版的表單處理使用 FormForm與與 QueryStringQueryString集合物件取得使用者輸入的資料,如下所示:集合物件取得使用者輸入的資料,如下所示: 傳統傳統 HTMLHTML表單網頁:表單網頁:使用表單欄位以使用表單欄位以 HTTPHTTP 通訊協通訊協

定的檔頭傳遞表單欄位資料,可以使用定的檔頭傳遞表單欄位資料,可以使用 POSTPOST或或 GETGET方法,如下所示:方法,如下所示:

<<form name="name" method="POST | GET" form name="name" method="POST | GET" action="URL">action="URL">

…… ……..

</form></form> URLURL參數:參數:從瀏覽程式輸入的網址傳遞參數,其總長從瀏覽程式輸入的網址傳遞參數,其總長度只有度只有 10241024 個字元。個字元。

Page 17: Ch09  網頁間的資料分享

1717

FormForm與與 QueryStringQueryString 集合物件集合物件 --FormForm 集合物件集合物件

如果網頁表單使用如果網頁表單使用 POSTPOST 方法傳遞資料,方法傳遞資料,其作法是將傳遞的資料在編碼後,透過其作法是將傳遞的資料在編碼後,透過HTTPHTTP 通訊協定的檔頭傳送到通訊協定的檔頭傳送到 WebWeb 伺服器,伺服器,在伺服端使用在伺服端使用 FormForm 集合物件取出資料,其集合物件取出資料,其語法如下所示:語法如下所示:Request("FieldName")Request("FieldName")

Request.Form("FieldName")Request.Form("FieldName")

Page 18: Ch09  網頁間的資料分享

1818

FormForm與與 QueryStringQueryString 集合物件集合物件 --QueryStringQueryString 集合物件集合物件

如果網頁表單使用如果網頁表單使用 GETGET 方法傳遞資料,其作法是方法傳遞資料,其作法是將傳遞的資料編碼後,透過將傳遞的資料編碼後,透過 URLURL 網址後的字串傳網址後的字串傳送到送到 WebWeb 伺服器,參數是位在問號之後,如果參伺服器,參數是位在問號之後,如果參數不只一個,請使用「數不只一個,請使用「 &&」符號分隔,如下所示:」符號分隔,如下所示:http://localhost/Ch10-1-1.aspx?http://localhost/Ch10-1-1.aspx?

fname1=value1&fname2=value2fname1=value1&fname2=value2

伺服端使用伺服端使用 QueryStringQueryString 集合物件取出資料,如集合物件取出資料,如下所示:下所示:Request("FieldName")Request("FieldName")

Request.QueryString(" FieldName")Request.QueryString(" FieldName")

Page 19: Ch09  網頁間的資料分享

1919

表單如何傳遞資料表單如何傳遞資料 -- 說明說明 在在 ASP.NETASP.NET 以傳統以傳統 HTMLHTML 表單處理方式表單處理方式

是使用是使用 FormForm 集合物件取得表單欄位的內容,集合物件取得表單欄位的內容,如下所示:如下所示:user = Request.Form("user")user = Request.Form("user")

pass = Request.Form("pass")pass = Request.Form("pass")

程式碼取得程式碼取得 useruser和和 passpass 欄位的值,在括欄位的值,在括號內的名稱就是表單欄位名稱。號內的名稱就是表單欄位名稱。

Page 20: Ch09  網頁間的資料分享

2020

表單如何傳遞資料表單如何傳遞資料 --HTMLHTML 表單表單欄位傳遞的資料欄位傳遞的資料

表單欄位 傳遞的資料

文字方塊、密碼和文字區域 直接傳遞使用者輸入的內容

選項鈕、下拉式功能表 傳遞 HTML標籤 value屬性的設定值

核取方塊 如果使用者勾選,傳遞”on”字串,沒有選擇

不傳遞

Page 21: Ch09  網頁間的資料分享

2121

範例2:表單傳遞資料範例2:表單傳遞資料POST(Ex09_02.html)POST(Ex09_02.html)

1.1. <form name="order" method<form name="order" method="POST"="POST" action="Ex09_02.aspx"> action="Ex09_02.aspx">2.2. <b><b> 基本資料基本資料 </b><br></b><br>3.3. 姓名姓名 : <input type="TEXT" name="user" size=20>: <input type="TEXT" name="user" size=20>4.4. 密碼密碼 : <input type="PASSWORD" name="pass" size=20><br>: <input type="PASSWORD" name="pass" size=20><br>5.5. 地址地址 : <br><textarea name="address" rows=5 cols=35>: <br><textarea name="address" rows=5 cols=35>6.6. </textarea><hr></textarea><hr>7.7. <input type="CHECKBOX" name="lang1" checked>VBScript<input type="CHECKBOX" name="lang1" checked>VBScript8.8. <input type="CHECKBOX" name="lang2">JavaScript |<input type="CHECKBOX" name="lang2">JavaScript |9.9. <input type="RADIO" name="lang" value="1">ASP.NET<input type="RADIO" name="lang" value="1">ASP.NET10.10.<input type="RADIO" name="lang" checked value="2">ASP<br><input type="RADIO" name="lang" checked value="2">ASP<br>11.11.<select name="web"><select name="web">12.12. <option value="1" selected>PHP</option><option value="1" selected>PHP</option>13.13. <option value="2">JSP</option><option value="2">JSP</option>14.14. <option value="3">Java</option><option value="3">Java</option>15.15.</select></select>16.16.<input type="SUBMIT" name"btn" value="<input type="SUBMIT" name"btn" value=" 送出送出 ">">17.17.<input type="RESET" name"btn1" value="<input type="RESET" name"btn1" value=" 重設重設 "> "> 18.18.</form></form>

Page 22: Ch09  網頁間的資料分享

2222

範例2:表單傳遞資料範例2:表單傳遞資料 (Ex09_02.aspx)(Ex09_02.aspx)1.1. Dim user, pass, address, lang As Dim user, pass, address, lang As

StringString2.2. ' ' 取得文字方塊取得文字方塊 ,, 密碼欄位的值密碼欄位的值3.3. user = user = Request.FormRequest.Form("user")("user")4.4. pass = Request.Form("pass")pass = Request.Form("pass")5.5. address = Request.Form("address")address = Request.Form("address")6.6. Response.Write("Response.Write(" 姓名姓名 : " & user & : " & user &

"<br>")"<br>")7.7. Response.Write("Response.Write(" 密碼密碼 : " & pass & : " & pass &

"<br>")"<br>")8.8. Response.Write("Response.Write(" 地址地址 : " & address & : " & address &

"<br>")"<br>")9.9. ' ' 取得核取方塊的值取得核取方塊的值10.10.If Request.Form("lang1") = "on" ThenIf Request.Form("lang1") = "on" Then11.11. Response.Write("Response.Write(" 勾選勾選

VBScript<br>")VBScript<br>")12.12.End IfEnd If13.13.If Request.Form("lang2") = "on" ThenIf Request.Form("lang2") = "on" Then14.14. Response.Write("Response.Write(" 勾選勾選

JavaScript<br>")JavaScript<br>")15.15.End IfEnd If

16.16.' ' 取得選擇鈕的值取得選擇鈕的值17.17.lang = Request.Form("lang")lang = Request.Form("lang")18.18.Select Case langSelect Case lang19.19. Case "1"Case "1"20.20. Response.Write("Response.Write(" 選擇選擇

ASP.NET<br>")ASP.NET<br>")21.21. Case "2"Case "2"22.22. Response.Write("Response.Write(" 選擇選擇 ASP<br>")ASP<br>")23.23.End SelectEnd Select24.24.' ' 取得下拉式清單方塊的值取得下拉式清單方塊的值25.25.lang = Request.Form("web")lang = Request.Form("web")26.26.Select Case langSelect Case lang27.27. Case "1"Case "1"28.28. Response.Write("Response.Write(" 選擇選擇 PHP<br>")PHP<br>")29.29. Case "2"Case "2"30.30. Response.Write("Response.Write(" 選擇選擇 JSP<br>")JSP<br>")31.31. Case "3"Case "3"32.32. Response.Write("Response.Write(" 選擇選擇 Java<br>")Java<br>")33.33.End SelectEnd Select

Page 23: Ch09  網頁間的資料分享

2323

URLURL 參數傳遞資料參數傳遞資料 URLURL 超連結傳遞的參數或表單超連結傳遞的參數或表單 GETGET 方法傳方法傳

遞的內容,都是使用遞的內容,都是使用 QueryStringQueryString 集合物件集合物件取得參數或欄位值,如下所示:取得參數或欄位值,如下所示:name = Request.QueryString("Username")name = Request.QueryString("Username")

pass = Request.QueryString("Password")pass = Request.QueryString("Password")

程式碼左邊是儲存傳遞資料的變數,在右程式碼左邊是儲存傳遞資料的變數,在右邊括號內的名稱是參數或欄位名稱,這是邊括號內的名稱是參數或欄位名稱,這是一個字串。一個字串。

Page 24: Ch09  網頁間的資料分享

2424

範例範例 33 :表單傳遞資料:表單傳遞資料 GET(Ex09_02.html)GET(Ex09_02.html)

1.1. <form name="order" method="GET" action="Ex09_03.aspx"><form name="order" method="GET" action="Ex09_03.aspx">2.2. <b><b> 基本資料基本資料 </b><br></b><br>3.3. 姓名姓名 : <input type="TEXT" name="user" size=20>: <input type="TEXT" name="user" size=20>4.4. 密碼密碼 : <input type="PASSWORD" name="pass" size=20><br>: <input type="PASSWORD" name="pass" size=20><br>5.5. 地址地址 : <br><textarea name="address" rows=5 cols=35>: <br><textarea name="address" rows=5 cols=35>6.6. </textarea><hr></textarea><hr>7.7. <input type="CHECKBOX" name="lang1" checked>VBScript<input type="CHECKBOX" name="lang1" checked>VBScript8.8. <input type="CHECKBOX" name="lang2">JavaScript |<input type="CHECKBOX" name="lang2">JavaScript |9.9. <input type="RADIO" name="lang" value="1">ASP.NET<input type="RADIO" name="lang" value="1">ASP.NET10.10.<input type="RADIO" name="lang" checked value="2">ASP<br><input type="RADIO" name="lang" checked value="2">ASP<br>11.11.<select name="web"><select name="web">12.12. <option value="1" selected>PHP</option><option value="1" selected>PHP</option>13.13. <option value="2">JSP</option><option value="2">JSP</option>14.14. <option value="3">Java</option><option value="3">Java</option>15.15.</select></select>16.16.<input type="SUBMIT" name"btn" value="<input type="SUBMIT" name"btn" value=" 送出送出 ">">17.17.<input type="RESET" name"btn1" value="<input type="RESET" name"btn1" value=" 重設重設 "> "> 18.18.</form></form>

Page 25: Ch09  網頁間的資料分享

2525

範例範例 33 :表單傳遞資料:表單傳遞資料 GET(Ex09_02.aspx)GET(Ex09_02.aspx)

1.1. Dim user, pass, address, lang As StringDim user, pass, address, lang As String2.2. ' ' 取得文字方塊取得文字方塊 ,, 密碼欄位的值密碼欄位的值3.3. user = Request.QueryString("user")user = Request.QueryString("user")4.4. pass = Request.QueryString("pass")pass = Request.QueryString("pass")5.5. address = Request.QueryString("address")address = Request.QueryString("address")6.6. Response.Write("Response.Write(" 姓名姓名 : " & user & "<br>"): " & user & "<br>")7.7. Response.Write("Response.Write(" 密碼密碼 : " & pass & "<br>"): " & pass & "<br>")8.8. Response.Write("Response.Write(" 地址地址 : " & address & : " & address &

"<br>")"<br>")9.9. ' ' 取得核取方塊的值取得核取方塊的值10.10. If Request.QueryString("lang1") = "on" ThenIf Request.QueryString("lang1") = "on" Then11.11. Response.Write("Response.Write(" 勾選勾選 VBScript<br>")VBScript<br>")12.12.End IfEnd If13.13. If Request.QueryString("lang2") = "on" ThenIf Request.QueryString("lang2") = "on" Then14.14. Response.Write("Response.Write(" 勾選勾選 JavaScript<br>")JavaScript<br>")15.15.End IfEnd If

16.16. ' ' 取得選擇鈕的值取得選擇鈕的值17.17. lang = Request.QueryString("lang")lang = Request.QueryString("lang")18.18.Select Case langSelect Case lang19.19. Case "1"Case "1"20.20. Response.Write("Response.Write(" 選擇選擇 ASP.NET<br>")ASP.NET<br>")21.21. Case "2"Case "2"22.22. Response.Write("Response.Write(" 選擇選擇 ASP<br>")ASP<br>")23.23.End SelectEnd Select24.24. ' ' 取得下拉式清單方塊的值取得下拉式清單方塊的值25.25. lang = Request.QueryString("web")lang = Request.QueryString("web")26.26.Select Case langSelect Case lang27.27. Case "1"Case "1"28.28. Response.Write("Response.Write(" 選擇選擇 PHP<br>")PHP<br>")29.29. Case "2"Case "2"30.30. Response.Write("Response.Write(" 選擇選擇 JSP<br>")JSP<br>")31.31. Case "3"Case "3"32.32. Response.Write("Response.Write(" 選擇選擇 Java<br>")Java<br>")33.33.End SelectEnd Select

Page 26: Ch09  網頁間的資料分享

2626

練習練習 11

請建立擁有三個步驟的表單網頁,各網頁是請建立擁有三個步驟的表單網頁,各網頁是使用隱藏欄位傳遞欄位資料,最後顯示各使用隱藏欄位傳遞欄位資料,最後顯示各步驟輸入或選擇的欄位資料,如下所示:步驟輸入或選擇的欄位資料,如下所示:

第一步:輸入使用者名稱和密碼第一步:輸入使用者名稱和密碼第二步:選擇個人職業,生日等資料第二步:選擇個人職業,生日等資料第三步:選擇個人興趣第三步:選擇個人興趣

Page 27: Ch09  網頁間的資料分享

2727

練習練習 1:1: 參考答案參考答案

Page 28: Ch09  網頁間的資料分享

2828

範例範例 2:2: 利用利用 RequestRequest 物件配合表單或網址物件配合表單或網址 URLURL 參參數數 Ex10_02_01.htmlEx10_02_01.html

1.1. <!--<!-- 程式範例程式範例 Ex10_02_01.html:Ex10_02_01.html: 使用使用 HTMLHTML 控制項控制項 +POST -->+POST -->2.2. <html><html>3.3. <head><head>4.4. <title>Ex10_02:<title>Ex10_02: 使用使用 HTMLHTML 控制項控制項 +POST</title>+POST</title>5.5. </head></head>6.6. <body><body>7.7. <form name="f1" method="POST" action="Ex10_02_02.aspx"><form name="f1" method="POST" action="Ex10_02_02.aspx">8.8. <center><H4><center><H4> 會員登入會員登入 </h4></center></h4></center>9.9. <hr><hr>10.10. 會員帳號 會員帳號 : <Input type="TEXT" name="mid"><br>: <Input type="TEXT" name="mid"><br>11.11. 密 碼 密 碼 : <Input type="PASSWORD" name="mpass" ><br>: <Input type="PASSWORD" name="mpass" ><br>12.12. <Input type="submit" name="b1" Value="<Input type="submit" name="b1" Value=" 下一步下一步 "><br>"><br>13.13. </form></form>14.14. </body></body>15.15.</html></html>

Page 29: Ch09  網頁間的資料分享

2929

範例範例 2:2: 利用利用 RequestRequest 物件配合表單或網址物件配合表單或網址 URLURL 參參數數 Ex10_02_02.aspxEx10_02_02.aspx

1.1. <!--<!-- 程式範例程式範例 Ex10_02_02.aspx:Ex10_02_02.aspx: 使用使用 HTMLHTML 控制項控制項 +POST -->+POST -->2.2. <%@ Page Language="VB" %><%@ Page Language="VB" %>3.3. <html><html>4.4. <head><head>5.5. <title>Ex10_02:<title>Ex10_02: 使用使用 HTMLHTML 控制項控制項 +POST</title>+POST</title>6.6. </head></head>7.7. <body><body>8.8. <% Dim name, pass As String<% Dim name, pass As String9.9. name = Request.Form("mid")name = Request.Form("mid")10.10. Response.Write(name & "ok1<br>")Response.Write(name & "ok1<br>")11.11. pass = Request.Form("mpass")pass = Request.Form("mpass")12.12. Response.Write(pass & "ok2<br>")Response.Write(pass & "ok2<br>")13.13. %>%>14.14. <form method="POST" action="Ex10_02_03.aspx"><form method="POST" action="Ex10_02_03.aspx">15.15. <Input Type="Hidden" name="member_id" Value="<%=name%>" ><Input Type="Hidden" name="member_id" Value="<%=name%>" >16.16. <Input Type="Hidden" name="member_pass" Value="<%=pass%>" ><Input Type="Hidden" name="member_pass" Value="<%=pass%>" >17.17. <center><H4><center><H4> 個人資料個人資料 </h4></center></h4></center>18.18. <hr><hr>19.19. 職 業 別 職 業 別 : : 20.20. <Input type="RADIO" id="work1" Value="<Input type="RADIO" id="work1" Value=" 軍軍 " Name="work" runat="server" />" Name="work" runat="server" /> 軍軍21.21. <Input type="Radio" id="work2" Value="<Input type="Radio" id="work2" Value=" 公公 " Name="work" runat="server" />" Name="work" runat="server" /> 公公22.22. <Input type="Radio" id="work3" Value="<Input type="Radio" id="work3" Value=" 教教 " Name="work" runat="server" />" Name="work" runat="server" /> 教教23.23. <Input type="Radio" id="work4" Value="<Input type="Radio" id="work4" Value=" 工工 " Name="work" runat="server" />" Name="work" runat="server" /> 工工24.24. <Input type="Radio" id="work5" Value="<Input type="Radio" id="work5" Value=" 其他其他 " Name="work" runat="server" />" Name="work" runat="server" /> 其他其他25.25. <br><br>26.26. 性 別 性 別 : : 27.27. <Input type="Radio" id="male" Value="<Input type="Radio" id="male" Value=" 先生先生 " Name="fm" runat="server" />" Name="fm" runat="server" /> 先生先生28.28. <Input type="Radio" id="female" Value="<Input type="Radio" id="female" Value=" 女士女士 " Name="fm" runat="server" />" Name="fm" runat="server" /> 女士女士29.29. <Input type="submit" Value="<Input type="submit" Value=" 下一步下一步 " > " > 30.30. </form></form>31.31. </body></body>32.32. </html></html>

Page 30: Ch09  網頁間的資料分享

3030

範例範例 2:2: 利用利用 RequestRequest 物件配合表單或網址物件配合表單或網址 URLURL 參參數數 Ex10_02_03.aspxEx10_02_03.aspx

1.1. <!--<!-- 程式範例程式範例 Ex10_02_03.aspx:Ex10_02_03.aspx: 使用使用 HTMLHTML 控制項控制項 +POST -->+POST -->2.2. <%@ Page Language="VB" %><%@ Page Language="VB" %>3.3. <html><html>4.4. <head><head>5.5. <title>Ex10_02:<title>Ex10_02: 使用使用 HTMLHTML 控制項控制項 +POST</title>+POST</title>6.6. </head></head>7.7. <body><body>8.8. <%Dim name, pass, w, s As String<%Dim name, pass, w, s As String9.9. name = Request.Form("member_id")name = Request.Form("member_id")10.10. Response.Write(name & "<br>")Response.Write(name & "<br>")11.11. pass = Request.Form("member_pass")pass = Request.Form("member_pass")12.12. Response.Write(pass & "<br>")Response.Write(pass & "<br>")13.13. w = Request.Form("work")w = Request.Form("work")14.14. Response.Write(w & "<br>")Response.Write(w & "<br>")15.15. s = Request.Form("fm")s = Request.Form("fm")16.16. Response.Write(s & "<br>")Response.Write(s & "<br>")17.17. %>%>18.18. <form method="get" action="Ex10_02_04.aspx"><form method="get" action="Ex10_02_04.aspx">19.19. <Input Type="Hidden" name="member_id" Value="<%=name%>" ><Input Type="Hidden" name="member_id" Value="<%=name%>" >20.20. <Input Type="Hidden" name="member_pass" Value="<%=pass%>" ><Input Type="Hidden" name="member_pass" Value="<%=pass%>" >21.21. <Input Type="Hidden" name="work" Value="<%=w%>" ><Input Type="Hidden" name="work" Value="<%=w%>" >22.22. <Input Type="Hidden" name="fm" Value="<%=s%>" ><Input Type="Hidden" name="fm" Value="<%=s%>" >23.23. <center><h4><center><h4> 訂閱的電子報類型訂閱的電子報類型 </h4></center></h4></center>24.24. <hr><hr>25.25. <Input type="CHECKBOX" name="e_news1" Value="<Input type="CHECKBOX" name="e_news1" Value=" 投資理財投資理財 " >" > 投資理財投資理財26.26. <Input type="CHECKBOX" name="e_news2" Value="<Input type="CHECKBOX" name="e_news2" Value=" 體育體育 " >" > 體育體育27.27. <Input type="CHECKBOX" name="e_news3" Value="<Input type="CHECKBOX" name="e_news3" Value=" 娛樂新聞娛樂新聞 " >" > 娛樂新聞娛樂新聞28.28. <Input type="CHECKBOX" name="e_news4" Value="<Input type="CHECKBOX" name="e_news4" Value="科技新知科技新知 " >" >科技新知科技新知29.29. <Input type="CHECKBOX" name="e_news5" Value="<Input type="CHECKBOX" name="e_news5" Value="文學文學 " >" >文學文學30.30. <Input type="CHECKBOX" name="e_news6" Value="<Input type="CHECKBOX" name="e_news6" Value=" 網路遊戲網路遊戲 " >" > 網路遊戲網路遊戲31.31. <Input type="submit" Value="<Input type="submit" Value=" 下一步下一步 " > " > 32.32. </form></form>33.33. </body></body>34.34. </html></html>

Page 31: Ch09  網頁間的資料分享

3131

範例範例 2:2: 利用利用 RequestRequest 物件配合表單或網址物件配合表單或網址 URLURL 參參數數 Ex10_02_04.aspxEx10_02_04.aspx

1.1. <!--<!-- 程式範例程式範例 Ex10_02_04.aspx:Ex10_02_04.aspx: 使用使用 HTMLHTML 控制項控制項+POST -->+POST -->

2.2. <html><html>3.3. <head><head>4.4. <title>Ex10_02:<title>Ex10_02: 使用使用 HTMLHTML 控制項控制項 +POST</title>+POST</title>5.5. </head></head>6.6. <body><body>7.7. <%<%8.8. Dim name, pass, w, s As StringDim name, pass, w, s As String9.9. Dim e1, e2, e3, e4, e5, e6 As StringDim e1, e2, e3, e4, e5, e6 As String10.10. name = Request.QueryString("member_id")name = Request.QueryString("member_id")11.11. Response.Write("Response.Write(" 姓名姓名 : " & name & "<br>"): " & name & "<br>")12.12. pass = Request.QueryString("member_pass")pass = Request.QueryString("member_pass")13.13. Response.Write("Response.Write(" 密碼密碼 : " & pass & "<br>"): " & pass & "<br>")14.14. w = Request.QueryString("work")w = Request.QueryString("work")15.15. Response.Write("Response.Write(" 工作別工作別 : " & w & "<br>"): " & w & "<br>")16.16. s = Request.QueryString("fm")s = Request.QueryString("fm")17.17. Response.Write("Response.Write(" 性別性別 : " & s & "<br>"): " & s & "<br>")18.18. e1= Request.QueryString("e_news1")e1= Request.QueryString("e_news1")19.19. e2= Request.QueryString("e_news2")e2= Request.QueryString("e_news2")20.20. e3= Request.QueryString("e_news3")e3= Request.QueryString("e_news3")21.21. e4= Request.QueryString("e_news4")e4= Request.QueryString("e_news4")22.22. e5= Request.QueryString("e_news5")e5= Request.QueryString("e_news5")23.23. e6= Request.QueryString("e_news6") e6= Request.QueryString("e_news6") 24.24. Response.Write("Response.Write(" 訂閱訂閱 : <br>"): <br>")

25.25. If e1 <> "" ThenIf e1 <> "" Then26.26. Response.Write(e1 & ", ")Response.Write(e1 & ", ")27.27. End IfEnd If28.28. If e2 <> "" ThenIf e2 <> "" Then29.29. Response.Write(e2 & ", ")Response.Write(e2 & ", ")30.30. End IfEnd If31.31. If e3 <> "" ThenIf e3 <> "" Then32.32. Response.Write(e3 & ", ")Response.Write(e3 & ", ")33.33. End IfEnd If34.34. If e4 <> "" ThenIf e4 <> "" Then35.35. Response.Write(e4 & ", ")Response.Write(e4 & ", ")36.36. End IfEnd If37.37. If e5 <> "" ThenIf e5 <> "" Then38.38. Response.Write(e5 & ", ")Response.Write(e5 & ", ")39.39. End IfEnd If40.40. If e6 <> "" ThenIf e6 <> "" Then41.41. Response.Write(e6)Response.Write(e6)42.42. End IfEnd If43.43. Response.Write("<br>")Response.Write("<br>")44.44. %>%>45.45. </body></body>46.46. </html></html>

Page 32: Ch09  網頁間的資料分享

3232

CookiesCookies 的基礎的基礎 -- 說明說明 CookiesCookies 的英文意義是小餅乾,源於這些儲存在的英文意義是小餅乾,源於這些儲存在

客戶端電腦的檔案尺寸都很小,客戶端電腦的檔案尺寸都很小, CookiesCookies 儲存在儲存在瀏覽程式所在的電腦瀏覽程式所在的電腦,所以並不會浪費伺服器的,所以並不會浪費伺服器的資源,只需執行資源,只需執行 ASP.NETASP.NET 程式進入程式進入 WebWeb 應用程應用程式 時 ,檢查客 戶 端 是否儲 存式 時 ,檢查客 戶 端 是否儲 存 CookieCookie ,, 在 取 得在 取 得CookieCookie 保留的資訊後,就可以輕鬆建立複雜的保留的資訊後,就可以輕鬆建立複雜的WebWeb 應用程式。應用程式。

當當 WebWeb 應用程式需要使用者的瀏覽記錄應用程式需要使用者的瀏覽記錄 ,, 例如例如 ::使用者是否曾經瀏覽過網站使用者是否曾經瀏覽過網站 ,, 或是一些個人資訊或是一些個人資訊 ,,此時此時 CookiesCookies 是一個最佳的解決方案是一個最佳的解決方案

Page 33: Ch09  網頁間的資料分享

3333

CookiesCookies 的基礎的基礎 -- 儲存位置儲存位置

在「在「 C:\Documents and Settings\Joe Chen\C:\Documents and Settings\Joe Chen\Local Settings\Temporary Internet FilesLocal Settings\Temporary Internet Files 」」的的快取資料夾,可以看到一大堆網站保留在客戶快取資料夾,可以看到一大堆網站保留在客戶端電腦的端電腦的 CookieCookie 檔案,如下圖所示:檔案,如下圖所示:

Page 34: Ch09  網頁間的資料分享

3434

新增新增 CookieCookie CookieCookie是是 ResponseResponse 物件的物件的 CookieCookie集合物件,可集合物件,可

以使用名稱存取以使用名稱存取 CookieCookie值,新增值,新增 CookieCookie 是使用是使用ResponseResponse 物件的物件的 CookiesCookies 屬性來新增屬性來新增 CookieCookie ,,其其程式碼如下所示:程式碼如下所示:Response.Cookies("UserName").Value = "Response.Cookies("UserName").Value = "陳會安陳會安 ""

在新增在新增 CookieCookie後還需要設定後還需要設定 CookieCookie的的 ExpiresExpires 屬屬性,如下所示:性,如下所示:

Response.Cookies("UserName").Expires = _Response.Cookies("UserName").Expires = _

DateAdd("D", 10, Today)DateAdd("D", 10, Today)

程式碼使用程式碼使用 DateAdd()DateAdd()函數加上函數加上 1010天,計算出天,計算出CookieCookie過期天數,當日期到後過期天數,當日期到後 CookieCookie 就會刪除。就會刪除。

Page 35: Ch09  網頁間的資料分享

3535

取得取得 CookieCookie 的值的值 如果客戶端電腦擁有如果客戶端電腦擁有 CookieCookie ,,我們可以使用我們可以使用

RequestRequest 物件的物件的 CookiesCookies 集合物件取得指定集合物件取得指定CookieCookie 的值,其程式碼如下所示:的值,其程式碼如下所示:name = Request.Cookies("UserName").Valuename = Request.Cookies("UserName").Value

程式碼取得程式碼取得 CookieCookie 名稱名稱 UserNameUserName 的值,將它的值,將它指定給變數指定給變數 namename。。

Page 36: Ch09  網頁間的資料分享

3636

刪除刪除 CookieCookie

如果客戶端的如果客戶端的 CookieCookie 不再需要,我們可以不再需要,我們可以使用程式碼刪除使用程式碼刪除 CookieCookie ,,刪除方式只需將刪除方式只需將ExpiresExpires 屬性設定成過期即可,其程式碼如屬性設定成過期即可,其程式碼如下所示:下所示:

Response.Cookies("UserName").Expires = _Response.Cookies("UserName").Expires = _

DateAdd("D", -365, Today)DateAdd("D", -365, Today)

程式碼將有效期限設定為一年前,因為程式碼將有效期限設定為一年前,因為CookieCookie已經過期,換句話說,就是刪除已經過期,換句話說,就是刪除CookieCookie。。

Page 37: Ch09  網頁間的資料分享

3737

多鍵多鍵 CookieCookie 的使用的使用 -- 建立建立

CookieCookie 是一種目錄結構的集合物件,在同一個名稱是一種目錄結構的集合物件,在同一個名稱 CookieCookie下允許擁有不同的下允許擁有不同的 KeyKey鍵名,換句話說,同一個鍵名,換句話說,同一個 CookieCookie名名稱就可以儲存多個資料,如下:稱就可以儲存多個資料,如下:

Response.Cookies("User")("UserName") = "Response.Cookies("User")("UserName") = "陳會安陳會安 ""

Response.Cookies("User")("Password") = "1234" Response.Cookies("User")("Password") = "1234"

Response.Cookies("User").Expires = _Response.Cookies("User").Expires = _

DateAdd("D", 10, Today)DateAdd("D", 10, Today)

程式碼新增名為程式碼新增名為 UserUser的的 CookieCookie ,,這個這個 CookieCookie 擁有擁有 22 個鍵個鍵名名 UserNameUserName和和 PasswordPassword ,,分別儲存使用者名稱和密碼,分別儲存使用者名稱和密碼,最後設定最後設定 CookieCookie期限屬性期限屬性 ExpiresExpires 時只需使用時只需使用 CookieCookie名稱。名稱。

Page 38: Ch09  網頁間的資料分享

3838

多鍵多鍵 CookieCookie 的使用的使用 -- 取出與刪取出與刪除除

多鍵多鍵 CookieCookie 如同一個陣列,取得如同一個陣列,取得 CookieCookie值時不值時不只需要指定名稱,還需要指定鍵名,如下所示:只需要指定名稱,還需要指定鍵名,如下所示:name = Request.Cookies("User")("UserName") name = Request.Cookies("User")("UserName")

pass = Request.Cookies("User")("Password")pass = Request.Cookies("User")("Password")

多鍵多鍵 CookieCookie 的刪除只需使用的刪除只需使用 CookieCookie名稱設定名稱設定ExpiresExpires 屬性就可以刪除,如果只刪除屬性就可以刪除,如果只刪除 CookieCookie 其其中的一個鍵名,只需將該鍵名設成空字串,如下中的一個鍵名,只需將該鍵名設成空字串,如下所示:所示:Response.Cookies("User")("Password") = ""Response.Cookies("User")("Password") = ""

Page 39: Ch09  網頁間的資料分享

3939

CookiesCookies 的基本應用的基本應用 CookiesCookies 在網站實作上的應用相當多,使用在網站實作上的應用相當多,使用

CookiesCookies 保留的資料大都屬於幾個方面,如下所保留的資料大都屬於幾個方面,如下所示:示: 個人資訊:個人資訊:使用使用 CookiesCookies 保留個人的資訊,例如:姓保留個人的資訊,例如:姓名、地址、時區、帳號和造訪網站的次數。名、地址、時區、帳號和造訪網站的次數。

個人化的內容:個人化的內容: CookiesCookies 可以定製個人化的網站外觀可以定製個人化的網站外觀和個人偏好的網站內容,或者只提供使用者有興趣的和個人偏好的網站內容,或者只提供使用者有興趣的資訊。資訊。

網站購物車:網站購物車:線上購物車需要保留使用者選擇的商品,線上購物車需要保留使用者選擇的商品,CookiesCookies 就可以用來記錄這些選購的商品。就可以用來記錄這些選購的商品。

Page 40: Ch09  網頁間的資料分享

4040

儲存使用者的瀏覽記錄儲存使用者的瀏覽記錄 如果使用者在瀏覽網站時,一進入網頁就馬上顯示如果使用者在瀏覽網站時,一進入網頁就馬上顯示歡迎再次到訪的訊息,使用者可能會驚訝於這個網歡迎再次到訪的訊息,使用者可能會驚訝於這個網站怎麼如此站怎麼如此 SmartSmart ,,事實上,該網站早已經在您第事實上,該網站早已經在您第一次進入網頁時,就已經在電腦留下到訪的記錄,一次進入網頁時,就已經在電腦留下到訪的記錄,這就是這就是 CookiesCookies 的功能。的功能。

ASP.NETASP.NET 程式檢查客戶端的電腦是否已經留下使程式檢查客戶端的電腦是否已經留下使用者名稱的用者名稱的 CookieCookie ,,其程式碼如下所示:其程式碼如下所示:name = Request.Cookies("UserName").Valuename = Request.Cookies("UserName").Value

如果變數如果變數 namename 有內容,表示已經建立有內容,表示已經建立 CookiesCookies ,,就直接顯就直接顯示歡迎使用者的訊息,否則顯示示歡迎使用者的訊息,否則顯示 WebWeb 表單輸入使用者名稱,表單輸入使用者名稱,然後建立然後建立 CookieCookie 儲存使用者名稱。儲存使用者名稱。

Page 41: Ch09  網頁間的資料分享

4141

範例範例 3:3: 利用利用 CookiesCookies 來傳送網頁間資來傳送網頁間資料料 Ex10_03_02.aspxEx10_03_02.aspx

<%@ Page Language="VB" %><%@ Page Language="VB" %> <html><html> <head><head> <title>Ex10_03_02:<title>Ex10_03_02: 使用使用 Cookies</title>Cookies</title> <script language="Vb" runat="server"><script language="Vb" runat="server"> Sub Page_Load(s as object, e as eventargs)Sub Page_Load(s as object, e as eventargs) Dim name As StringDim name As String name = Request.Cookies("UserName").Valuename = Request.Cookies("UserName").Value Response.Write(name & "<br>")Response.Write(name & "<br>") End SubEnd Sub Sub Button2_click( s as object, e as eventargs)Sub Button2_click( s as object, e as eventargs) Response.Redirect("Ex10_03_01.aspx")Response.Redirect("Ex10_03_01.aspx") End SubEnd Sub

Sub Button3_click(s as object, e as eventargs)Sub Button3_click(s as object, e as eventargs) If work1.Checked = true ThenIf work1.Checked = true Then Response.Cookies("work").Value = work1.TextResponse.Cookies("work").Value = work1.Text Response.Cookies("work").Expires = DateAdd("D", 1, Today)Response.Cookies("work").Expires = DateAdd("D", 1, Today) End IfEnd If If work2.Checked = true ThenIf work2.Checked = true Then Response.Cookies("work").Value = work2.TextResponse.Cookies("work").Value = work2.Text Response.Cookies("work").Expires = DateAdd("D", 1, Today)Response.Cookies("work").Expires = DateAdd("D", 1, Today) End IfEnd If If work3.Checked = true ThenIf work3.Checked = true Then Response.Cookies("work").Value = work3.TextResponse.Cookies("work").Value = work3.Text Response.Cookies("work").Expires = DateAdd("D", 1, Today)Response.Cookies("work").Expires = DateAdd("D", 1, Today) End IfEnd If If work4.Checked = true ThenIf work4.Checked = true Then Response.Cookies("work").Value = work4.TextResponse.Cookies("work").Value = work4.Text Response.Cookies("work").Expires = DateAdd("D", 1, Today)Response.Cookies("work").Expires = DateAdd("D", 1, Today) End IfEnd If If work5.Checked = true ThenIf work5.Checked = true Then Response.Cookies("work").Value = work5.TextResponse.Cookies("work").Value = work5.Text Response.Cookies("work").Expires = DateAdd("D", 1, Today)Response.Cookies("work").Expires = DateAdd("D", 1, Today) End IfEnd If If male.Checked = true ThenIf male.Checked = true Then Response.Cookies("s").Value = "Response.Cookies("s").Value = " 先生先生 , , 你好你好 !"!" Response.Cookies("s").Expires = DateAdd("D", 1, Today)Response.Cookies("s").Expires = DateAdd("D", 1, Today) End IfEnd If If female.Checked = true ThenIf female.Checked = true Then Response.Cookies("s").Value = "Response.Cookies("s").Value = " 女士女士 , , 妳好妳好 !"!" Response.Cookies("s").Expires = DateAdd("D", 1, Today)Response.Cookies("s").Expires = DateAdd("D", 1, Today) End IfEnd If

Response.Redirect("Ex10_03_03.aspx") Response.Redirect("Ex10_03_03.aspx") End SubEnd Sub </script></script> </head></head> <body><body> <form runat="server"><form runat="server"> <asp:Panel id="panel2" runat="server" backcolor="lightgray" <asp:Panel id="panel2" runat="server" backcolor="lightgray"

Visible="true">Visible="true"> <center><h4><center><h4> 個人資料個人資料 </h4></center></h4></center> <hr><hr> 職 業 別 職 業 別 : : <asp:RadioButton id="work1" Text="<asp:RadioButton id="work1" Text=" 軍軍 "" GroupName="work" runat="server" />GroupName="work" runat="server" /> <asp:RadioButton id="work2" text="<asp:RadioButton id="work2" text=" 公公 "" GroupName="work" runat="server" />GroupName="work" runat="server" /> <asp:RadioButton id="work3" text="<asp:RadioButton id="work3" text=" 教教 "" GroupName="work" runat="server" />GroupName="work" runat="server" /> <asp:RadioButton id="work4" text="<asp:RadioButton id="work4" text=" 工工 "" GroupName="work" runat="server" />GroupName="work" runat="server" /> <asp:RadioButton id="work5" text="<asp:RadioButton id="work5" text=" 其他其他 "" GroupName="work" runat="server" />GroupName="work" runat="server" /> <br><br> 性 別 性 別 : : <asp:RadioButton id="male" Text="<asp:RadioButton id="male" Text=" 先生先生 "" GroupName="fm" runat="server" />GroupName="fm" runat="server" /> <asp:RadioButton id="female" Text="<asp:RadioButton id="female" Text=" 女士女士 "" GroupName="fm" runat="server" />GroupName="fm" runat="server" /> <asp:button id="button2" runat="server" Text="<asp:button id="button2" runat="server" Text=" 上一步上一步 " "

OnClick="Button2_click" /> OnClick="Button2_click" /> <asp:button id="button3" runat="server" Text="<asp:button id="button3" runat="server" Text=" 下一步下一步 " "

OnClick="Button3_click" />OnClick="Button3_click" /> </asp:Panel> </asp:Panel> </form></form> </body></body> </html></html>

Page 42: Ch09  網頁間的資料分享

4242

範例範例 3:3: 利用利用 CookiesCookies 來傳送網頁間資料來傳送網頁間資料 Ex10_03_03.aspxEx10_03_03.aspx <%@ Page Language="VB" %><%@ Page Language="VB" %> <html><html> <head><head> <title>Ex10_03_03:<title>Ex10_03_03: 使用使用 Cookies</title>Cookies</title> <script language="Vb" runat="server"><script language="Vb" runat="server"> Sub Button4_click( s as object, e as eventargs)Sub Button4_click( s as object, e as eventargs) Response.Redirect("Ex10_03_02.aspx")Response.Redirect("Ex10_03_02.aspx") End SubEnd Sub

Sub Button5_click(s as object, e as eventargs)Sub Button5_click(s as object, e as eventargs) Dim i as integerDim i as integer Dim news As StringDim news As String news = ""news = "" For i = 0 to e_news.Items.Count -1For i = 0 to e_news.Items.Count -1 If e_news.Items(i).Selected ThenIf e_news.Items(i).Selected Then If news= "" ThenIf news= "" Then news += e_news.Items(i).Textnews += e_news.Items(i).Text ElseElse news += ", " & e_news.Items(i).Textnews += ", " & e_news.Items(i).Text End IfEnd If End IfEnd If Next Next Response.Cookies("e_news").Value = newsResponse.Cookies("e_news").Value = news Response.Cookies("e_news").Expires = DateAdd("D", 1, Today)Response.Cookies("e_news").Expires = DateAdd("D", 1, Today) Response.Redirect("Ex10_03_04.aspx") Response.Redirect("Ex10_03_04.aspx") End SubEnd Sub </script></script> </head></head> <body><body> <form runat="server"><form runat="server"> <asp:Panel id="panel3" runat="server" backcolor="lightyellow" Visible="true"><asp:Panel id="panel3" runat="server" backcolor="lightyellow" Visible="true"> <center><h4><center><h4> 訂閱的電子報類型訂閱的電子報類型 </h4></center></h4></center> <hr><hr> <asp:CheckBoxList Id="e_news" runat="server" RepeatColumns="3"><asp:CheckBoxList Id="e_news" runat="server" RepeatColumns="3"> <asp:ListItem Text="<asp:ListItem Text=" 投資理財投資理財 " />" /> <asp:ListItem Text="<asp:ListItem Text=" 體育體育 " />" /> <asp:ListItem Text="<asp:ListItem Text=" 娛樂新聞娛樂新聞 " />" /> <asp:ListItem Text="<asp:ListItem Text=" 科技新知科技新知 " />" /> <asp:ListItem Text="<asp:ListItem Text=" 文學文學 " />" /> <asp:ListItem Text="<asp:ListItem Text=" 網路遊戲網路遊戲 " />" /> </asp:CheckBoxList></asp:CheckBoxList> <asp:button id="button4" runat="server" Text="<asp:button id="button4" runat="server" Text=" 上一步上一步 " OnClick="Button4_click" />" OnClick="Button4_click" /> <asp:button id="button5" runat="server" Text="<asp:button id="button5" runat="server" Text=" 下一步下一步 " OnClick="Button5_click" />" OnClick="Button5_click" /> </asp:Panel></asp:Panel> </form></form> </body></body> </html></html>

Page 43: Ch09  網頁間的資料分享

4343

範例範例 3:3: 利用利用 CookiesCookies 來傳送網頁間資料來傳送網頁間資料 Ex10_03_04.aspxEx10_03_04.aspx <!--<!-- 程式範例程式範例 Ex10_03_04.aspx:Ex10_03_04.aspx: 使用使用 Cookies -->Cookies --> <%@ Page Language="VB" %><%@ Page Language="VB" %> <html><html> <head><head> <title>Ex10_03_04:<title>Ex10_03_04: 使用使用 Cookies</title>Cookies</title> <script language="VB" runat="server"><script language="VB" runat="server"> Sub Page_Load(s as object, e as eventargs)Sub Page_Load(s as object, e as eventargs) Label1.Text = Request.Cookies("UserName").ValueLabel1.Text = Request.Cookies("UserName").Value Label2.Text = Request.Cookies("work").ValueLabel2.Text = Request.Cookies("work").Value Label3.Text = Request.Cookies("s").ValueLabel3.Text = Request.Cookies("s").Value Label4.Text = Request.Cookies("e_news").ValueLabel4.Text = Request.Cookies("e_news").Value End SubEnd Sub Sub Button6_click(s as object, e as eventargs)Sub Button6_click(s as object, e as eventargs) Response.Redirect("http://mis2.nkmu.edu.tw/wangdaj")Response.Redirect("http://mis2.nkmu.edu.tw/wangdaj") End SubEnd Sub </script></script> </head></head> <body><body> <form runat="server"><form runat="server"> <asp:Panel id="panel4" runat="server" backcolor="lightgreen" Visible="true"><asp:Panel id="panel4" runat="server" backcolor="lightgreen" Visible="true"> <center><h4><asp:Label id="Label1" runat="server" /><center><h4><asp:Label id="Label1" runat="server" /> <asp:Label id="Label3" runat="server" /><asp:Label id="Label3" runat="server" /> </h4></h4> </center></center> <hr><hr> 你的工作類型是你的工作類型是 : <asp:Label id="Label2" runat="server" /><br>: <asp:Label id="Label2" runat="server" /><br> 你訂閱的電子報類型是你訂閱的電子報類型是 : <asp:Label id="Label4" runat="server" /><br>: <asp:Label id="Label4" runat="server" /><br> <asp:button id="button6" runat="server" Text="<asp:button id="button6" runat="server" Text="回首頁回首頁 " OnClick="Button6_click" />" OnClick="Button6_click" /> </asp:Panel></asp:Panel> </form></form> </body></body> </html></html>

Page 44: Ch09  網頁間的資料分享

4444

範例範例 3:3: 利用利用 CookiesCookies 來傳送網頁間資料來傳送網頁間資料 Ex10_03_01.aspxEx10_03_01.aspx <!--<!-- 程式範例程式範例 Ex10_03_01.aspx:Ex10_03_01.aspx: 使用使用 Cookies -->Cookies --> <%@ Page Language="VB" %><%@ Page Language="VB" %> <html><html> <head><head> <title>Ex10_03_01:<title>Ex10_03_01: 使用使用 Cookies</title>Cookies</title> <script language="Vb" runat="server"><script language="Vb" runat="server"> Sub Button1_click(s as object, e as eventargs)Sub Button1_click(s as object, e as eventargs) If Page.IsValid ThenIf Page.IsValid Then Response.Cookies("UserName").Value = member_id.TextResponse.Cookies("UserName").Value = member_id.Text Response.Cookies("UserName").Expires = DateAdd("D", 1, Today)Response.Cookies("UserName").Expires = DateAdd("D", 1, Today) Response.Cookies("Passwd").Value = member_pass.TextResponse.Cookies("Passwd").Value = member_pass.Text Response.cookies("Passwd").Expires = DateAdd("D", 1, Today)Response.cookies("Passwd").Expires = DateAdd("D", 1, Today) Response.Redirect("Ex10_03_02.aspx")Response.Redirect("Ex10_03_02.aspx") End IfEnd If End SubEnd Sub </script></script> </head></head> <body><body> <form runat="server"><form runat="server"> <asp:Panel Id="panel1" Runat="server" backColor="Pink" Visible="True"><asp:Panel Id="panel1" Runat="server" backColor="Pink" Visible="True"> <center><H4><center><H4> 會員登入會員登入 </h4></center></h4></center> <hr><hr> 會員帳號 會員帳號 : <asp:TextBox Id="member_id" runat="server"/><p>: <asp:TextBox Id="member_id" runat="server"/><p> <asp:RequiredFieldValidator Id="required_id" <asp:RequiredFieldValidator Id="required_id" ControlToValidate="member_id"ControlToValidate="member_id" ErrorMessage="ErrorMessage=" 請輸入帳號請輸入帳號 !"!" runat="server" />runat="server" /> 密 碼 密 碼 : <asp:TextBox Id="member_pass" TextMode="Password" runat="server"/><p>: <asp:TextBox Id="member_pass" TextMode="Password" runat="server"/><p> <asp:RequiredFieldValidator Id="required_pass" <asp:RequiredFieldValidator Id="required_pass" ControlToValidate="member_pass"ControlToValidate="member_pass" ErrorMessage="ErrorMessage=" 請輸入密碼請輸入密碼 !"!" runat="server" />runat="server" /> <asp:CompareValidator Id="compare_pass"<asp:CompareValidator Id="compare_pass" ControlToValidate="member_pass"ControlToValidate="member_pass" ValueToCompare="123"ValueToCompare="123" Type="String"Type="String" ErrorMessage="ErrorMessage=" 你的密碼錯誤你的密碼錯誤 ,,是是 123!"123!" runat="server" />runat="server" /> <asp:button id="button1" runat="server" Text="<asp:button id="button1" runat="server" Text=" 下一步下一步 " OnClick="Button1_click" />" OnClick="Button1_click" /> </asp:Panel></asp:Panel> </form></form> </body></body> </html></html>

Page 45: Ch09  網頁間的資料分享

4545

SessionSession 物件的基礎物件的基礎 -- 說明說明 當一位尚未建立當一位尚未建立 SessionSession 物件的使用者執物件的使用者執行行 WebWeb 應用程式的應用程式的 ASP.NETASP.NET 程式,伺服程式,伺服器就會自動建立一個新的器就會自動建立一個新的 SessionSession 物件,物件,並且指定唯一的並且指定唯一的 Session IDSession ID 編號。編號。

如果同時有多位使用者進入網站,每位使如果同時有多位使用者進入網站,每位使用者都會指定一個專屬的用者都會指定一個專屬的 Session IDSession ID 編號,編號,以便建立不同的以便建立不同的 SessionSession 物件。物件。

Page 46: Ch09  網頁間的資料分享

4646

SessionSession 物件的基礎物件的基礎 -- 圖例圖例

Page 47: Ch09  網頁間的資料分享

4747

SessionSession 變數的使用變數的使用 -- 說明說明 SessionSession 變數是附屬在進入變數是附屬在進入 WebWeb 應用程式應用程式

使用者的使用者的 SessionSession 期間,每一位使用者都期間,每一位使用者都擁有一組專屬的擁有一組專屬的 SessionSession 變數,雖然每位變數,雖然每位使用者的使用者的 SessionSession 變數名稱相同,但是內變數名稱相同,但是內容可能完全不同,而且只有該使用者執行容可能完全不同,而且只有該使用者執行的的 ASP.NETASP.NET 程式才能夠存取自己專屬的程式才能夠存取自己專屬的SessionSession 變數。變數。

Page 48: Ch09  網頁間的資料分享

4848

SessionSession 變數的使用變數的使用 -- 方法與屬方法與屬性性

方法 說明

Abandon() 使用者建立的 Session 變數都會被清除掉,也就是說再也不能存

取 Session變數值

Remove() 刪除指定的 Session變數,參數是 Session變數的名稱字串

屬性 說明

TimeOut 設定每一個 Session 期間的持續時間,以分鐘計,如果超過時

間,Session變數將自動刪除

SessionID 取得使用者唯一的 Session編號,這是一個唯讀屬性

Page 49: Ch09  網頁間的資料分享

4949

SessionSession 變數的使用變數的使用 -- 存取存取 在在 ASP.NETASP.NET 程式設定程式設定 SessionSession 變數的程式碼,變數的程式碼,

如下所示:如下所示:Session("User_Pages")=Session("User_Pages")+1Session("User_Pages")=Session("User_Pages")+1

程式碼將程式碼將 SessionSession 變數變數 User_PagesUser_Pages 加加一,一, SessionSession 變數並不需要考慮資料衝突的問題,變數並不需要考慮資料衝突的問題,因為它是附屬於使用者的因為它是附屬於使用者的 SessionSession 期間,我們可期間,我們可以使用下列程式碼取得使用者目前的以使用下列程式碼取得使用者目前的 Session Session IDID ,,如下所示:如下所示:

使用者的使用者的 Session ID : <%=Session.SessionID%><br>Session ID : <%=Session.SessionID%><br>

Page 50: Ch09  網頁間的資料分享

5050

使用使用 SessionSession 變數傳遞資料變數傳遞資料

SessionSession 變數主要的用途是在網頁間分享資料,換句話變數主要的用途是在網頁間分享資料,換句話說。例如:儲存使用者資訊的名稱和密碼,首先是使用說。例如:儲存使用者資訊的名稱和密碼,首先是使用者者 hueyanhueyan的的 SessionSession 變數,如下:變數,如下:Session("UserName") = "hueyan"Session("UserName") = "hueyan"

Session("UserPassword") = "1234"Session("UserPassword") = "1234"

只要使用者沒有超過只要使用者沒有超過 SessionSession期間或執行期間或執行 Abandon()Abandon() 方方法,在期間內執行其它法,在期間內執行其它 ASP.NETASP.NET 程式都可以存取上述程式都可以存取上述SessionSession 變數的值,如下所示:變數的值,如下所示:name = Session("UserName")name = Session("UserName")

password = Session("UserPassword")password = Session("UserPassword")

Page 51: Ch09  網頁間的資料分享

5151

SessionSession 變數的使用限制變數的使用限制

在在 SessionSession 變數使用上的一些限制,如下:變數使用上的一些限制,如下: 如果瀏覽程式為如果瀏覽程式為 Internet Explorer 4.0xInternet Explorer 4.0x 前的版本,前的版本,

需要開啟需要開啟 CookiesCookies功能。功能。 ASP.NETASP.NET 程式執行轉向指令,只限同一個程式執行轉向指令,只限同一個 WebWeb

應用程式,不能轉向到其它的應用程式,不能轉向到其它的 WebWeb 伺服器。伺服器。 如果是十分龐大的如果是十分龐大的 WebWeb 應用程式,擁有多個子目應用程式,擁有多個子目

錄,子目錄錄,子目錄 ASP.NETASP.NET 程式所建立的程式所建立的 SessionSession 變數變數是無法在其它子目錄中存取。是無法在其它子目錄中存取。

SessionSession 變數的使用上比較浪費記憶體。變數的使用上比較浪費記憶體。

Page 52: Ch09  網頁間的資料分享

5252

範例範例 4:4: 利用利用 SessionesSessiones 來傳送網頁間資來傳送網頁間資料料 Ex10_04_01.aspxEx10_04_01.aspx

1.1. <%@ Page Language="VB" %><%@ Page Language="VB" %>2.2. <html><html>3.3. <head><head>4.4. <title>Ex10_04_01:<title>Ex10_04_01: 使用使用 Session</title>Session</title>5.5. <script language="Vb" runat="server"><script language="Vb" runat="server">6.6. Sub Button1_click(s as object, e as eventargs)Sub Button1_click(s as object, e as eventargs)7.7. If Page.IsValid ThenIf Page.IsValid Then8.8. Session("UserName") = member_id.TextSession("UserName") = member_id.Text9.9. Session("Passwd") = member_pass.TextSession("Passwd") = member_pass.Text10.10. Response.Redirect("Ex10_04_02.aspx")Response.Redirect("Ex10_04_02.aspx")11.11. End IfEnd If12.12. End SubEnd Sub13.13. </script></script>14.14. </head></head>15.15. <body><body>16.16. <form runat="server"><form runat="server">17.17. <asp:Panel Id="panel1" Runat="server" backColor="Pink" Visible="True"><asp:Panel Id="panel1" Runat="server" backColor="Pink" Visible="True">18.18. <center><H4><center><H4> 會員登入會員登入 </h4></center></h4></center>19.19. <hr><hr>20.20. 會員帳號 會員帳號 : <asp:TextBox Id="member_id" runat="server"/><p>: <asp:TextBox Id="member_id" runat="server"/><p>21.21. <asp:RequiredFieldValidator Id="required_id" <asp:RequiredFieldValidator Id="required_id" 22.22. ControlToValidate="member_id"ControlToValidate="member_id"23.23. ErrorMessage="ErrorMessage=" 請輸入帳號請輸入帳號 !"!"24.24. runat="server" />runat="server" />25.25. 密 碼 密 碼 : <asp:TextBox Id="member_pass" TextMode="Password" runat="server"/><p>: <asp:TextBox Id="member_pass" TextMode="Password" runat="server"/><p>26.26. <asp:RequiredFieldValidator Id="required_pass" <asp:RequiredFieldValidator Id="required_pass" 27.27. ControlToValidate="member_pass"ControlToValidate="member_pass"28.28. ErrorMessage="ErrorMessage=" 請輸入密碼請輸入密碼 !"!"29.29. runat="server" />runat="server" />30.30. <asp:CompareValidator Id="compare_pass"<asp:CompareValidator Id="compare_pass"31.31. ControlToValidate="member_pass"ControlToValidate="member_pass"32.32. ValueToCompare="123"ValueToCompare="123"33.33. Type="String"Type="String"34.34. ErrorMessage="ErrorMessage=" 你的密碼錯誤你的密碼錯誤 ,,是是 123!"123!"35.35. runat="server" />runat="server" />36.36. <asp:button id="button1" runat="server" Text="<asp:button id="button1" runat="server" Text=" 下一步下一步 " OnClick="Button1_click" />" OnClick="Button1_click" />37.37. </asp:Panel></asp:Panel>38.38. </form></form>39.39. </body></body>40.40. </html></html>

Page 53: Ch09  網頁間的資料分享

5353

範例範例 4:4: 利用利用 SessionesSessiones 來傳送網頁間資來傳送網頁間資料料 Ex10_04_02.aspxEx10_04_02.aspx

<%@ Page Language="VB" %><%@ Page Language="VB" %> <html><html> <head><head> <title>Ex10_04_02:<title>Ex10_04_02: 使用使用 Cookies</title>Cookies</title> <script language="Vb" runat="server"><script language="Vb" runat="server"> Sub Button2_click( s as object, e as eventargs)Sub Button2_click( s as object, e as eventargs) Response.Redirect("Ex10_04_01.aspx")Response.Redirect("Ex10_04_01.aspx") End SubEnd Sub

Sub Button3_click(s as object, e as eventargs)Sub Button3_click(s as object, e as eventargs) If work1.Checked = true ThenIf work1.Checked = true Then Session("work") = work1.TextSession("work") = work1.Text End IfEnd If If work2.Checked = true ThenIf work2.Checked = true Then Session("work") = work2.TextSession("work") = work2.Text End IfEnd If If work3.Checked = true ThenIf work3.Checked = true Then Session("work") = work3.TextSession("work") = work3.Text End IfEnd If If work4.Checked = true ThenIf work4.Checked = true Then Session("work") = work4.TextSession("work") = work4.Text End IfEnd If If work5.Checked = true ThenIf work5.Checked = true Then Session("work") = work5.TextSession("work") = work5.Text End IfEnd If If male.Checked = true ThenIf male.Checked = true Then Session("s") = "Session("s") = " 先生先生 , , 你好你好 !"!" End IfEnd If If female.Checked = true ThenIf female.Checked = true Then Session("s") = "Session("s") = " 女士女士 , , 妳好妳好 !"!" End IfEnd If Response.Redirect("Ex10_04_03.aspx") Response.Redirect("Ex10_04_03.aspx") End SubEnd Sub </script></script> </head></head>

<body><body> <form runat="server"><form runat="server"> <asp:Panel id="panel2" runat="server" backcolor="lightgray" <asp:Panel id="panel2" runat="server" backcolor="lightgray"

Visible="true">Visible="true"> <center><h4><center><h4> 個人資料個人資料 </h4></center></h4></center> <hr><hr> 職 業 別 職 業 別 : : <asp:RadioButton id="work1" Text="<asp:RadioButton id="work1" Text="軍軍 "" GroupName="work" runat="server" />GroupName="work" runat="server" /> <asp:RadioButton id="work2" text="<asp:RadioButton id="work2" text="公公 "" GroupName="work" runat="server" />GroupName="work" runat="server" /> <asp:RadioButton id="work3" text="<asp:RadioButton id="work3" text="教教 "" GroupName="work" runat="server" />GroupName="work" runat="server" /> <asp:RadioButton id="work4" text="<asp:RadioButton id="work4" text="工工 "" GroupName="work" runat="server" />GroupName="work" runat="server" /> <asp:RadioButton id="work5" text="<asp:RadioButton id="work5" text=" 其他其他 "" GroupName="work" runat="server" />GroupName="work" runat="server" /> <br><br> 性 別 性 別 : : <asp:RadioButton id="male" Text="<asp:RadioButton id="male" Text=" 先生先生 "" GroupName="fm" runat="server" />GroupName="fm" runat="server" /> <asp:RadioButton id="female" Text="<asp:RadioButton id="female" Text=" 女士女士 "" GroupName="fm" runat="server" />GroupName="fm" runat="server" /> <asp:button id="button2" runat="server" Text="<asp:button id="button2" runat="server" Text=" 上一步上一步 " "

OnClick="Button2_click" /> OnClick="Button2_click" /> <asp:button id="button3" runat="server" Text="<asp:button id="button3" runat="server" Text=" 下一步下一步 " "

OnClick="Button3_click" />OnClick="Button3_click" /> </asp:Panel> </asp:Panel> </form></form> </body></body> </html></html>

Page 54: Ch09  網頁間的資料分享

5454

範例範例 4:4: 利用利用 SessionesSessiones 來傳送網頁間資來傳送網頁間資料料 Ex10_04_03.aspxEx10_04_03.aspx

<%@ Page Language="VB" %><%@ Page Language="VB" %> <html><html> <head><head> <title>Ex10_04_03:<title>Ex10_04_03: 使用使用 Cookies</title>Cookies</title> <script language="Vb" runat="server"><script language="Vb" runat="server"> Sub Button4_click( s as object, e as eventargs)Sub Button4_click( s as object, e as eventargs) Response.Redirect("Ex10_04_02.aspx")Response.Redirect("Ex10_04_02.aspx") End SubEnd Sub

Sub Button5_click(s as object, e as eventargs)Sub Button5_click(s as object, e as eventargs) Dim i as integerDim i as integer Dim news As StringDim news As String news = ""news = "" For i = 0 to e_news.Items.Count -1For i = 0 to e_news.Items.Count -1 If e_news.Items(i).Selected ThenIf e_news.Items(i).Selected Then If news= "" ThenIf news= "" Then news += e_news.Items(i).Textnews += e_news.Items(i).Text ElseElse news += ", " & e_news.Items(i).Textnews += ", " & e_news.Items(i).Text End IfEnd If End IfEnd If Next Next Session("e_news") = newsSession("e_news") = news Response.Redirect("Ex10_04_04.aspx") Response.Redirect("Ex10_04_04.aspx") End SubEnd Sub

</script></script> </head></head> <body><body> <form runat="server"><form runat="server"> <asp:Panel id="panel3" runat="server" <asp:Panel id="panel3" runat="server"

backcolor="lightyellow" Visible="true">backcolor="lightyellow" Visible="true">

<center><h4><center><h4> 訂閱的電子報類型訂閱的電子報類型 </h4></center></h4></center> <hr><hr> <asp:CheckBoxList Id="e_news" <asp:CheckBoxList Id="e_news"

runat="server" RepeatColumns="3">runat="server" RepeatColumns="3"> <asp:ListItem Text="<asp:ListItem Text=" 投資理財投資理財 " />" /> <asp:ListItem Text="<asp:ListItem Text=" 體育體育 " />" /> <asp:ListItem Text="<asp:ListItem Text=" 娛樂新聞娛樂新聞 " />" /> <asp:ListItem Text="<asp:ListItem Text=" 科技新知科技新知 " />" /> <asp:ListItem Text="<asp:ListItem Text=" 文學文學 " />" /> <asp:ListItem Text="<asp:ListItem Text=" 網路遊戲網路遊戲 " />" /> </asp:CheckBoxList></asp:CheckBoxList> <asp:button id="button4" runat="server" Text<asp:button id="button4" runat="server" Text

="=" 上一步上一步 " OnClick="Button4_click" />" OnClick="Button4_click" /> <asp:button id="button5" runat="server" Text<asp:button id="button5" runat="server" Text

="=" 下一步下一步 " OnClick="Button5_click" />" OnClick="Button5_click" /> </asp:Panel></asp:Panel> </form></form> </body></body> </html></html>

Page 55: Ch09  網頁間的資料分享

5555

範例範例 4:4: 利用利用 SessionesSessiones 來傳送網頁間資來傳送網頁間資料料 <%@ Page Language="VB" %><%@ Page Language="VB" %>

<html><html> <head><head> <title>Ex10_04_04:<title>Ex10_04_04: 使用使用 Session</title>Session</title> <script language="VB" runat="server"><script language="VB" runat="server"> Sub Page_Load(s as object, e as eventargs)Sub Page_Load(s as object, e as eventargs) Label1.Text = Session("UserName")Label1.Text = Session("UserName") Label2.Text = Session("work")Label2.Text = Session("work") Label3.Text = Session("s")Label3.Text = Session("s") Label4.Text = Session("e_news")Label4.Text = Session("e_news") End SubEnd Sub Sub Button6_click(s as object, e as eventargs)Sub Button6_click(s as object, e as eventargs) Response.Redirect("http://mis2.nkmu.edu.tw/wangdaj")Response.Redirect("http://mis2.nkmu.edu.tw/wangdaj") End SubEnd Sub </script></script> </head></head> <body><body> <form runat="server"><form runat="server"> <asp:Panel id="panel4" runat="server" backcolor="lightgreen" Visible="true"><asp:Panel id="panel4" runat="server" backcolor="lightgreen" Visible="true"> <center><h4><asp:Label id="Label1" runat="server" /><center><h4><asp:Label id="Label1" runat="server" /> <asp:Label id="Label3" runat="server" /><asp:Label id="Label3" runat="server" /> </h4></h4> </center></center> <hr><hr> 你的工作類型是你的工作類型是 : <asp:Label id="Label2" runat="server" /><br>: <asp:Label id="Label2" runat="server" /><br> 你訂閱的電子報類型是你訂閱的電子報類型是 : <asp:Label id="Label4" runat="server" /><br>: <asp:Label id="Label4" runat="server" /><br> <asp:button id="button6" runat="server" Text="<asp:button id="button6" runat="server" Text=" 回首頁回首頁 " OnClick="Button6_click" />" OnClick="Button6_click" /> </asp:Panel></asp:Panel> </form></form> </body></body> </html></html>

Page 56: Ch09  網頁間的資料分享

5656

ApplicationApplication 物件的基礎物件的基礎 -- 說明說明 ApplicationApplication 物件最主要的目的是建立物件最主要的目的是建立

ApplicationApplication 變數,這和一般的程式變數不變數,這和一般的程式變數不同,它是一個集合物件,同,它是一個集合物件, ApplicationApplication 變數變數提供進入提供進入 WebWeb 應用程式的每位使用者一個應用程式的每位使用者一個分享資料的管道,因為分享資料的管道,因為 ApplicationApplication 變數的變數的內容允許網站的每位使用者存取其值。內容允許網站的每位使用者存取其值。

Page 57: Ch09  網頁間的資料分享

5757

ApplicationApplication 物件的基礎物件的基礎 -- 圖例圖例

Page 58: Ch09  網頁間的資料分享

5858

ApplicationApplication 變數的使用變數的使用 -- 基本格基本格式式

不論網站的不論網站的 WebWeb 應用程式同時有多少位使用者進應用程式同時有多少位使用者進入,入,對於每一個對於每一個 ApplicationApplication 變數,伺服端都只會變數,伺服端都只會在記憶體保留一份資料在記憶體保留一份資料,變數的基本格式如下:,變數的基本格式如下:Application("Page_Counter")=0Application("Page_Counter")=0

變數名稱和一般變數名稱和一般 ASP.NETASP.NET 程式使用的變數不太程式使用的變數不太一樣,這是一個字串一樣,這是一個字串 ""Page_Counter"Page_Counter" ,,加上加上Application()Application() 表示為集合物件,上述程式碼將表示為集合物件,上述程式碼將ApplicationApplication 變數變數 Page_CounterPage_Counter 設為零。設為零。

Page 59: Ch09  網頁間的資料分享

5959

ApplicationApplication 變數的使用變數的使用 -- 方法方法方法 說明

Lock() 禁止其它使用者修改 Application變數

Unlock() 允許其它使用者修改 Application變數

Page 60: Ch09  網頁間的資料分享

6060

ApplicationApplication 變數的使用變數的使用 -- 存取存取

如果如果 22 位使用者同時讀取位使用者同時讀取 ApplicationApplication 變數並沒有變數並沒有關係,如果一位更改,一位是讀取關係,如果一位更改,一位是讀取 ApplicationApplication 變變數,在這種情況下衝突就會發生,為了避免這種情數,在這種情況下衝突就會發生,為了避免這種情況,況, ApplicationApplication 的的 22 個方法可以保障在同一時間個方法可以保障在同一時間內只允許一位使用者存取內只允許一位使用者存取 ApplicationApplication 變數,如下變數,如下所示:所示:

Application.Lock()Application.Lock()

Application("Page_Counter")= _Application("Page_Counter")= _

Application("Page_Counter")+1Application("Page_Counter")+1

Application.Unlock()Application.Unlock()

Page 61: Ch09  網頁間的資料分享

6161

範例範例 5:5: 利用利用 ApplicationApplication 來傳送網頁間資料來傳送網頁間資料 Ex10_05_01.aspxEx10_05_01.aspx1.1. <%@ Page Language="VB" %><%@ Page Language="VB" %>2.2. <html><html>3.3. <head><head>4.4. <title>Ex10_05_01:<title>Ex10_05_01: 使用使用 Application</title>Application</title>5.5. <script language="Vb" runat="server"><script language="Vb" runat="server">6.6. Sub Button1_click(s as object, e as Sub Button1_click(s as object, e as

eventargs)eventargs)7.7. If Page.IsValid ThenIf Page.IsValid Then8.8. Application.Lock()Application.Lock()9.9. Application("UserName") = Application("UserName") =

member_id.Textmember_id.Text10.10. Application("Passwd") = Application("Passwd") =

member_pass.Textmember_pass.Text11.11. Application.Unlock()Application.Unlock()12.12. Response.Redirect("Ex10_05_02.aspx")Response.Redirect("Ex10_05_02.aspx")13.13. End IfEnd If14.14. End SubEnd Sub15.15. </script></script>16.16. </head></head>17.17. <body><body>18.18. <form runat="server"><form runat="server">19.19. <asp:Panel Id="panel1" Runat="server" <asp:Panel Id="panel1" Runat="server"

backColor="Pink" Visible="True">backColor="Pink" Visible="True">20.20. <center><H4><center><H4> 會員登入會員登入 </h4></center> </h4></center>

21.21. <hr><hr>22.22. 會員帳號 會員帳號 : <asp:TextBox Id="member_id" : <asp:TextBox Id="member_id"

runat="server"/><p>runat="server"/><p>23.23. <asp:RequiredFieldValidator <asp:RequiredFieldValidator

Id="required_id" Id="required_id" 24.24. ControlToValidate="member_id"ControlToValidate="member_id"25.25. ErrorMessage="ErrorMessage=" 請輸入帳號請輸入帳號 !"!"26.26. runat="server" />runat="server" />27.27. 密 碼 密 碼 : <asp:TextBox Id="member_pass" : <asp:TextBox Id="member_pass"

TextMode="Password" runat="server"/><p>TextMode="Password" runat="server"/><p>28.28. <asp:RequiredFieldValidator <asp:RequiredFieldValidator

Id="required_pass" Id="required_pass" 29.29. ControlToValidate="member_pass"ControlToValidate="member_pass"30.30. ErrorMessage="ErrorMessage=" 請輸入密碼請輸入密碼 !"!"31.31. runat="server" />runat="server" />32.32. <asp:CompareValidator Id="compare_pass"<asp:CompareValidator Id="compare_pass"33.33. ControlToValidate="member_pass"ControlToValidate="member_pass"34.34. ValueToCompare="123"ValueToCompare="123"35.35. Type="String"Type="String"36.36. ErrorMessage="ErrorMessage=" 你的密碼錯誤你的密碼錯誤 ,,是是 123!"123!"37.37. runat="server" />runat="server" />38.38. <asp:button id="button1" runat="server" <asp:button id="button1" runat="server"

Text="Text=" 下一步下一步 " OnClick="Button1_click" />" OnClick="Button1_click" />39.39. </asp:Panel></asp:Panel>40.40. </form></form>41.41. </body></body>42.42. </html></html>

Page 62: Ch09  網頁間的資料分享

6262

範例範例 5:5: 利用利用 ApplicationApplication 來傳送網頁間資料來傳送網頁間資料 Ex10_05_02.aspxEx10_05_02.aspx1.1. <%@ Page Language="VB" %><%@ Page Language="VB" %>2.2. <html><html>3.3. <head><head>4.4. <title>Ex10_05_02:<title>Ex10_05_02: 使用使用 Application</title>Application</title>5.5. <script language="Vb" runat="server"><script language="Vb" runat="server">6.6. Sub Button2_click( s as object, e as eventargs)Sub Button2_click( s as object, e as eventargs)7.7. Response.Redirect("Ex10_05_01.aspx")Response.Redirect("Ex10_05_01.aspx")8.8. End SubEnd Sub9.9. Sub Button3_click(s as object, e as eventargs)Sub Button3_click(s as object, e as eventargs)10.10. If work1.Checked = true ThenIf work1.Checked = true Then11.11. Application.Lock()Application.Lock()12.12. Application("work") = work1.TextApplication("work") = work1.Text13.13. Application.Unlock()Application.Unlock()14.14. End IfEnd If15.15. If work2.Checked = true ThenIf work2.Checked = true Then16.16. Application.Lock()Application.Lock()17.17. Application("work") = work2.TextApplication("work") = work2.Text18.18. Application.Unlock()Application.Unlock()19.19. End IfEnd If20.20. If work3.Checked = true ThenIf work3.Checked = true Then21.21. Application.Lock()Application.Lock()22.22. Application("work") = work3.TextApplication("work") = work3.Text23.23. Application.Unlock()Application.Unlock()24.24. End IfEnd If25.25. If work4.Checked = true ThenIf work4.Checked = true Then26.26. Application.Lock()Application.Lock()27.27. Application("work") = work4.TextApplication("work") = work4.Text28.28. Application.Unlock()Application.Unlock()29.29. End IfEnd If30.30. If work5.Checked = true ThenIf work5.Checked = true Then31.31. Application.Lock()Application.Lock()32.32. Application("work") = work5.TextApplication("work") = work5.Text33.33. Application.Unlock()Application.Unlock()34.34. End IfEnd If35.35. If male.Checked = true ThenIf male.Checked = true Then36.36. Application.Lock()Application.Lock()37.37. Application("s") = "Application("s") = " 先生先生 , , 你好你好 !"!"38.38. Application.Unlock()Application.Unlock()39.39. End If End If

1.1. If female.Checked = true ThenIf female.Checked = true Then2.2. Application.Lock()Application.Lock()3.3. Application("s") = "Application("s") = " 女士女士 , , 妳好妳好 !"!"4.4. Application.Unlock()Application.Unlock()5.5. End IfEnd If6.6. Response.Redirect("Ex10_05_03.aspx") Response.Redirect("Ex10_05_03.aspx") 7.7. End SubEnd Sub8.8. </script></script>9.9. </head></head>10.10. <body><body>11.11. <form runat="server"><form runat="server">12.12. <asp:Panel id="panel2" runat="server" backcolor="lightgray" <asp:Panel id="panel2" runat="server" backcolor="lightgray"

Visible="true">Visible="true">13.13. <center><h4><center><h4> 個人資料個人資料 </h4></center></h4></center>14.14. <hr><hr>15.15. 職 業 別 職 業 別 : : 16.16. <asp:RadioButton id="work1" Text="<asp:RadioButton id="work1" Text="軍軍 ""17.17. GroupName="work" runat="server" />GroupName="work" runat="server" />18.18. <asp:RadioButton id="work2" text="<asp:RadioButton id="work2" text="公公 ""19.19. GroupName="work" runat="server" />GroupName="work" runat="server" />20.20. <asp:RadioButton id="work3" text="<asp:RadioButton id="work3" text="教教 ""21.21. GroupName="work" runat="server" />GroupName="work" runat="server" />22.22. <asp:RadioButton id="work4" text="<asp:RadioButton id="work4" text="工工 ""23.23. GroupName="work" runat="server" />GroupName="work" runat="server" />24.24. <asp:RadioButton id="work5" text="<asp:RadioButton id="work5" text=" 其他其他 ""25.25. GroupName="work" runat="server" />GroupName="work" runat="server" />26.26. <br><br>27.27. 性 別 性 別 : : 28.28. <asp:RadioButton id="male" Text="<asp:RadioButton id="male" Text=" 先生先生 ""29.29. GroupName="fm" runat="server" />GroupName="fm" runat="server" />30.30. <asp:RadioButton id="female" Text="<asp:RadioButton id="female" Text=" 女士女士 ""31.31. GroupName="fm" runat="server" />GroupName="fm" runat="server" />32.32. <asp:button id="button2" runat="server" Text="<asp:button id="button2" runat="server" Text=" 上一步上一步 " "

OnClick="Button2_click" /> OnClick="Button2_click" /> 33.33. <asp:button id="button3" runat="server" Text="<asp:button id="button3" runat="server" Text=" 下一步下一步 " "

OnClick="Button3_click" />OnClick="Button3_click" />34.34. </asp:Panel> </asp:Panel> 35.35. </form></form>36.36. </body></body>37.37. </html></html>

Page 63: Ch09  網頁間的資料分享

6363

範例範例 5:5: 利用利用 ApplicationApplication 來傳送網頁間資料來傳送網頁間資料 Ex10_05_03.aspxEx10_05_03.aspx1.1. <%@ Page Language="VB" %><%@ Page Language="VB" %>2.2. <html><html>3.3. <head><head>4.4. <title>Ex10_05_03:<title>Ex10_05_03: 使用使用 Application</title>Application</title>5.5. <script language="Vb" runat="server"><script language="Vb" runat="server">6.6. Sub Button4_click( s as object, e as eventargs)Sub Button4_click( s as object, e as eventargs)7.7. Response.Redirect("Ex10_05_02.aspx")Response.Redirect("Ex10_05_02.aspx")8.8. End SubEnd Sub

9.9. Sub Button5_click(s as object, e as eventargs)Sub Button5_click(s as object, e as eventargs)10.10. Dim i as integerDim i as integer11.11. Dim news As StringDim news As String12.12. news = ""news = ""13.13. For i = 0 to e_news.Items.Count -1For i = 0 to e_news.Items.Count -114.14. If e_news.Items(i).Selected ThenIf e_news.Items(i).Selected Then15.15. If news= "" ThenIf news= "" Then16.16. news += e_news.Items(i).Textnews += e_news.Items(i).Text17.17. ElseElse18.18. news += ", " & e_news.Items(i).Textnews += ", " & e_news.Items(i).Text19.19. End IfEnd If20.20. End IfEnd If21.21. NextNext22.22. Application.Lock() Application.Lock() 23.23. Application("e_news") = newsApplication("e_news") = news24.24. Application.Unlock()Application.Unlock()25.25. Response.Redirect("Ex10_05_04.aspx") Response.Redirect("Ex10_05_04.aspx") 26.26. End SubEnd Sub

27.27. </script></script>28.28. </head></head>29.29. <body><body>30.30. <form runat="server"><form runat="server">31.31. <asp:Panel id="panel3" runat="server" <asp:Panel id="panel3" runat="server"

backcolor="lightyellow" Visible="true">backcolor="lightyellow" Visible="true">32.32. <center><h4><center><h4> 訂閱的電子報類型訂閱的電子報類型 </h4></center></h4></center>33.33. <hr><hr>34.34. <asp:CheckBoxList Id="e_news" runat="server" <asp:CheckBoxList Id="e_news" runat="server"

RepeatColumns="3">RepeatColumns="3">35.35. <asp:ListItem Text="<asp:ListItem Text=" 投資理財投資理財 " />" />36.36. <asp:ListItem Text="<asp:ListItem Text=" 體育體育 " />" />37.37. <asp:ListItem Text="<asp:ListItem Text=" 娛樂新聞娛樂新聞 " />" />38.38. <asp:ListItem Text="<asp:ListItem Text=" 科技新知科技新知 " />" />39.39. <asp:ListItem Text="<asp:ListItem Text=" 文學文學 " />" />40.40. <asp:ListItem Text="<asp:ListItem Text=" 網路遊戲網路遊戲 " />" />41.41. </asp:CheckBoxList></asp:CheckBoxList>42.42. <asp:button id="button4" runat="server" Text="<asp:button id="button4" runat="server" Text=" 上一上一

步步 " OnClick="Button4_click" />" OnClick="Button4_click" />43.43. <asp:button id="button5" runat="server" Text="<asp:button id="button5" runat="server" Text=" 下一下一

步步 " OnClick="Button5_click" />" OnClick="Button5_click" />44.44. </asp:Panel></asp:Panel>45.45. </form></form>46.46. </body></body>47.47. </html></html>

Page 64: Ch09  網頁間的資料分享

6464

範例範例 5:5: 利用利用 ApplicationApplication 來傳送網頁間資來傳送網頁間資料料 Ex10_05_04.aspxEx10_05_04.aspx

1.1. <%@ Page Language="VB" %><%@ Page Language="VB" %>2.2. <html><html>3.3. <head><head>4.4. <title>Ex10_05_04:<title>Ex10_05_04: 使用使用 Application</title>Application</title>5.5. <script language="VB" runat="server"><script language="VB" runat="server">6.6. Sub Page_Load(s as object, e as eventargs)Sub Page_Load(s as object, e as eventargs)7.7. Label1.Text = Application("UserName")Label1.Text = Application("UserName")8.8. Label2.Text = Application("work")Label2.Text = Application("work")9.9. Label3.Text = Application("s")Label3.Text = Application("s")10.10. Label4.Text = Application("e_news")Label4.Text = Application("e_news")11.11. End SubEnd Sub12.12. Sub Button6_click(s as object, e as eventargs)Sub Button6_click(s as object, e as eventargs)13.13. Response.Redirect("http://mis2.nkmu.edu.tw/wangdaj")Response.Redirect("http://mis2.nkmu.edu.tw/wangdaj")14.14. End SubEnd Sub15.15. </script></script>16.16. </head></head>17.17. <body><body>18.18. <form runat="server"><form runat="server">19.19. <asp:Panel id="panel4" runat="server" backcolor="lightgreen" Visible="true"><asp:Panel id="panel4" runat="server" backcolor="lightgreen" Visible="true">20.20. <center><h4><asp:Label id="Label1" runat="server" /><center><h4><asp:Label id="Label1" runat="server" />21.21. <asp:Label id="Label3" runat="server" /><asp:Label id="Label3" runat="server" />22.22. </h4></h4>23.23. </center></center>24.24. <hr><hr>25.25. 你的工作類型是你的工作類型是 : <asp:Label id="Label2" runat="server" /><br>: <asp:Label id="Label2" runat="server" /><br>26.26. 你訂閱的電子報類型是你訂閱的電子報類型是 : <asp:Label id="Label4" runat="server" /><br>: <asp:Label id="Label4" runat="server" /><br>27.27. <asp:button id="button6" runat="server" Text="<asp:button id="button6" runat="server" Text=" 回首頁回首頁 " OnClick="Button6_click" />" OnClick="Button6_click" />28.28. </asp:Panel></asp:Panel>29.29. </form></form>30.30. </body></body>31.31. </html></html>

Page 65: Ch09  網頁間的資料分享

6565

範例範例 6:6: 利用利用 ApplicationApplication 計算進入網頁的次計算進入網頁的次數數1.1. <%@ Page Language="VB" %><%@ Page Language="VB" %>

2.2. <html><html>3.3. <head><head>4.4. <title><title> 範例範例 6:6: 計算進入本網頁次數計算進入本網頁次數 (Application(Application 應用應用 )</title>)</title>5.5. </head></head>6.6. <body><body>7.7. <%<%8.8. If IsNothing(Application("Page_Counter")) ThenIf IsNothing(Application("Page_Counter")) Then9.9. Application.Lock()Application.Lock()10.10. Application("Page_Counter") = 0Application("Page_Counter") = 011.11. Application.Unlock()Application.Unlock()12.12. End IfEnd If13.13. Application.Lock()Application.Lock()14.14. Application("Page_Counter") = Application("Page_Counter") + 1Application("Page_Counter") = Application("Page_Counter") + 115.15. Application.Unlock()Application.Unlock()16.16.%>%>17.17. 共有共有 <%=Application("Page_Counter") %><%=Application("Page_Counter") %> 人拜訪過這個網頁人拜訪過這個網頁 <br><br>18.18. </body></body>19.19.</html></html>

Page 66: Ch09  網頁間的資料分享

6666

Global.asaxGlobal.asax 檔案的使用檔案的使用 Global.asaxGlobal.asax 是 一 個 選 擇 性 檔 案 , 在是 一 個 選 擇 性 檔 案 , 在

ASP.NETASP.NET 的的 WebWeb 應用程式並不一定需要應用程式並不一定需要此檔案,除非此檔案,除非 WebWeb 應用程式需要使用到應用程式需要使用到ApplicationApplication 和和 SessionSession 物件的事件,因為物件的事件,因為這些事件處理程序是位在這些事件處理程序是位在 Global.asaxGlobal.asax 檔案。檔案。

Page 67: Ch09  網頁間的資料分享

6767

Global.asaxGlobal.asax 檔案的架構檔案的架構 Global.asaxGlobal.asax 檔案定義應用程式檔案定義應用程式

Application_StartApplication_Start、、 Application_EndApplication_End、、 Session_StartSession_Start和和 Session_EndSession_End 的事件處理程序,檔案架構如下所示:的事件處理程序,檔案架構如下所示:

<<script language="VB" runat="Server">script language="VB" runat="Server">Sub Application_Start(sender As Object, e As EventArgs)Sub Application_Start(sender As Object, e As EventArgs)End SubEnd SubSub Application_End(sender As Object, e As EventArgs)Sub Application_End(sender As Object, e As EventArgs)End SubEnd SubSub Session_Start(sender As Object, e As EventArgs)Sub Session_Start(sender As Object, e As EventArgs)End SubEnd SubSub Session_End(Sender As Object, E As EventArgs)Sub Session_End(Sender As Object, E As EventArgs)End SubEnd Sub</script></script>

Page 68: Ch09  網頁間的資料分享

6868

ApplicationApplication與與 SessionSession 物件的事物件的事件處理程序件處理程序

事件處理程序 說明Application_Start 當第一位使用者進入 ASP.NET程式時,Application_Start的事件就觸

發,在觸發後就算有成千上萬位使用者進入網站都不會重新觸發,除非Web伺服器關機。程序內容通常是屬於系統設定的 Application

變數,例如:初始的訪客計數Application_End 當Web伺服器關機,此事件就會觸發Session_Start 每一位使用者在執行 ASP.NET程式前,就觸發此事件,如果有 50

位使用者,就觸發 50次事件處理程式,每個事件是獨立觸發,如同瀏覽網頁一般,並不會互相影響,程序內容通常是一些使用者專屬Session變數的初始設定

Session_End 使用者在預設的 20分鐘內沒有進入其它的 ASP.NET程式,就會觸發此事件,這個時間是由 TimeOut屬性設定,程序內容並沒有辦法處理已經離開網站的使用者,通常屬於一些善後用途的程式碼,例如:將 Session變數存入資料庫或文字檔案

Page 69: Ch09  網頁間的資料分享

6969

Global.asaxGlobal.asax 檔案的使用檔案的使用 在在 IISIIS的的 WebWeb 伺服器(伺服器( Cassini Personal Web Cassini Personal Web

ServerServer 的每一個應用程式目錄可以擁有一個的每一個應用程式目錄可以擁有一個Global.asaxGlobal.asax 檔案),檔案), Global.asaxGlobal.asax 檔案能夠放在檔案能夠放在22 個地方,如下所示:個地方,如下所示: 網站的主目錄:網站的主目錄:如果將如果將 Global.asaxGlobal.asax 檔案放在此目錄檔案放在此目錄(預設是(預設是 WebWeb 應用程式),不論目錄本身,實際或其應用程式),不論目錄本身,實際或其虛擬子目錄都可以存取檔案內建立的虛擬子目錄都可以存取檔案內建立的 ApplicationApplication和和SessionSession 變數。變數。

虛擬應用程式的主目錄:虛擬應用程式的主目錄:如果已經將虛擬目錄設定成如果已經將虛擬目錄設定成WebWeb 應用程式,虛擬目錄的根目錄也允許擁有應用程式,虛擬目錄的根目錄也允許擁有Global.asaxGlobal.asax 檔案。檔案。