1 / 69

Ch09 網頁間的資料分享

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

milica
Download Presentation

Ch09 網頁間的資料分享

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. Ch09 網頁間的資料分享 網頁程式設計

  2. 大綱 • Web應用程式 • 網頁間的資料分享 • Application物件的使用 • Session物件的使用 • Global.asax檔案的使用 • Cookies的處理 • Cookies的應用

  3. Web應用程式的基礎-說明 • Web應用程式是指網站目錄和其子目錄執行檔案的能力,IIS支援ASP.NET、ASP、ISAPI、CGI、IDC與SSI應用程式,能夠設定應用程式的執行權限,也就是檔案所在目錄的權限,以Web應用程式來說是【指令】和【執行】權限。

  4. Web應用程式的基礎-ASP.NET應用程式 • ASP.NET技術的Web應用程式就是建立ASP.NET應用程式,屬於一種.NET Framework應用程式。 • 這是一種完全在伺服端執行的應用程式,ASP.NET應用程式是由一些程式檔案組成,當我們在Web伺服器的虛擬目錄建立ASP.NET程式檔案和設定檔案Global.asax,就是在建立ASP.NET應用程式。

  5. Web應用程式的基礎-圖例 • 每一個應用程式有一個Global.asax檔案,可以建立一個Application物件 • 每一個進入應用程式的使用者都擁有獨立的Session物件

  6. 網頁間的資料分享 • ASP.NET使用HTTP通訊協定,其特性就是ASP.NET程式並不是在客戶端的電腦執行,而是在伺服端執行,客戶端主要的目的只是讀取網頁內容或提供使用者輸入資料的介面。 • 在Web伺服器的伺服端,事實上,對於同時連線網站的使用者幾乎無法獲得任何使用者狀態,因為網站各網頁間並沒有什麼關連,ASP.NET程式碼的變數只限在同一個ASP.NET程式存取,而無法橫越其它的ASP.NET程式。 ??所以,如何將資料傳送給下一個網頁呢??

  7. 在網頁間分享資料 • 網站的分享資料可以分為2種,如下所示: • 分享給網站所有的使用者:在ASP.NET程式就是所謂的Application變數,例如:目前線上的使用者數。 • 針對每位使用者的專屬資料:在ASP.NET程式就是Session變數,例如:登入使用者的權限。

  8. 網頁間資料分享的方法 • ASP.NET程式在網頁間傳遞資料的方法有很多種,整理如下所示: • 利用Web表單將表單處理的ASP.NET程式指定成其它ASP.NET程式,如此就可以將欄位資料傳遞到其它ASP.NET程式。 • 利用Request物件配合表單或網址URL參數,將欄位資料和參數傳到其它的ASP.NET程式。 • 利用Application和Session物件。 • 利用Cookies直接保留在客戶端電腦,以便ASP.NET程式取得所需的資訊。

  9. 網頁間資料分享的方法 • 上頁的分享方法的適用性: • Cookies通常是儲存一些客戶端使用者的選擇和狀態 • 對於Web應用程式,若是程式間的資料分享,主要是使用儲存在伺服端的Application和Session物件

  10. 將每一個看起來好像是一頁的網頁以Panel來裝載將每一個看起來好像是一頁的網頁以Panel來裝載 以這個範例而言,共有三個畫面要呈現及要求輸入資料,所以,就有三個panel來裝載,另外,有第四個panel是為了要呈現所有之前輸入的資料 這個方法,從頭到尾,都在同一個程式中,所以,變數一直都存在著,並不需要做網頁間的資料傳輸。 <!--程式範例Ex10_01.aspx:使用WEB控制項(panel) --> <%@ Page Language="VB" %> <html> <head> <title>Ex10_01:使用WEB控制項+Panel</title> <script language="Vb" runat="server"> Sub Page_Load(s as object, e as eventargs) Panel1.visible="true" Panel2.visible="false" Panel3.visible="false" Panel4.visible="false" End Sub Sub Button1_click(s as object, e as eventargs) If Page.IsValid Then panel1.visible="false" panel2.visible="true" panel3.visible="false" panel4.visible="false" End If Label1.Text = member_id.Text End Sub 範例1:利用表單方式來資料分享

  11. Sub Button2_click( s as object, e as eventargs) panel1.visible = "true“ panel2.visible = "false" panel3.visible = "false" panel4.visible = "false“ End Sub Sub Button3_click(s as object, e as eventargs) If work1.Checked = true Then Label2.Text = work1.Text End If If work2.Checked = true Then Label2.text = work2.Text End If If work3.Checked = true Then Label2.text = work3.Text End If If work4.Checked = true Then Label2.text = work4.Text End If If work5.Checked = true Then Label2.text = work5.Text End If If male.Checked = true Then Label3.Text = "先生, 你好!" End If If female.Checked = true Then Label3.Text = "女士, 妳好!" End If panel1.visible = "false" panel2.visible = "false" panel3.visible = "true" panel4.visible = "false" End Sub Sub Button4_click( s as object, e as eventargs) panel1.visible = "false" panel2.visible = "true" panel3.visible = "false" panel4.visible = "false" End Sub 範例1:利用表單方式來資料分享(續)

  12. Sub Button5_click(s as object, e as eventargs) Dim i as integer panel1.visible = "false" panel2.visible = "false" panel3.visible = "false" panel4.visible = "true" For i = 0 to e_news.Items.Count -1 If e_news.Items(i).Selected Then If Label4.Text="" Then Label4.Text += e_news.Items(i).Text Else Label4.Text += ", " & e_news.Items(i).Text End If End If Next End Sub Sub Button6_click(s as object, e as eventargs) Response.Redirect("http://mis2.nkmu.edu.tw/wangdaj") End Sub </script> </head> 範例1:利用表單方式來資料分享(續)

  13. 範例1:利用表單方式來資料分享(續) • <body> • <form runat="server"> • <asp:Panel Id="panel1" Runat="server" backColor="Pink"> • <center><H4>會員登入</h4></center> • <hr> • 會員帳號 : <asp:TextBox Id="member_id" runat="server"/><p> • <asp:RequiredFieldValidator Id="required_id" • ControlToValidate="member_id" • ErrorMessage="請輸入帳號!" • runat="server" /> • 密 碼 : <asp:TextBox Id="member_pass" TextMode="Password" runat="server"/><p> • <asp:RequiredFieldValidator Id="required_pass" • ControlToValidate="member_pass" • ErrorMessage="請輸入密碼!" • runat="server" /> • <asp:CompareValidator Id="compare_pass" • ControlToValidate="member_pass" • ValueToCompare="123" • Type="String" • ErrorMessage="你的密碼錯誤,是123!" • runat="server" /> • <asp:button id="button1" runat="server" Text="下一步" OnClick="Button1_click" /> • </asp:Panel>

  14. 範例1:利用表單方式來資料分享(續) • <asp:Panel id="panel2" runat="server" backcolor="lightgray"> • <center><h4>個人資料</h4></center> • <hr> • 職 業 別 : • <asp:RadioButton id="work1" Text="軍" • GroupName="work" runat="server" /> • <asp:RadioButton id="work2" text="公" • GroupName="work" runat="server" /> • <asp:RadioButton id="work3" text="教" • GroupName="work" runat="server" /> • <asp:RadioButton id="work4" text="工" • GroupName="work" runat="server" /> • <asp:RadioButton id="work5" text="其他" • GroupName="work" runat="server" /> • <br> • 性 別 : • <asp:RadioButton id="male" Text="先生" • GroupName="fm" runat="server" /> • <asp:RadioButton id="female" Text="女士" • GroupName="fm" runat="server" /> • <asp:button id="button2" runat="server" Text="上一步" OnClick="Button2_click" /> • <asp:button id="button3" runat="server" Text="下一步" OnClick="Button3_click" /> • </asp:Panel>

  15. 範例1:利用表單方式來資料分享(續) • <asp:Panel id="panel3" runat="server" backcolor="lightyellow"> • <center><h4>訂閱的電子報類型</h4></center> • <hr> • <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:CheckBoxList> • <asp:button id="button4" runat="server" Text="上一步" OnClick="Button4_click" /> • <asp:button id="button5" runat="server" Text="下一步" OnClick="Button5_click" /> • </asp:Panel> • <asp:Panel id="panel4" runat="server" backcolor="lightgreen"> • <center><h4><asp:Label id="Label1" runat="server" /> • <asp:Label id="Label3" runat="server" /> • </h4> • </center> • <hr> • 你的工作類型是: <asp:Label id="Label2" runat="server" /><br> • 你訂閱的電子報類型是: <asp:Label id="Label4" runat="server" /><br> • <asp:button id="button6" runat="server" Text="回首頁" OnClick="Button6_click" /> • </asp:Panel> • </form> • </body></html>

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

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

  18. Form與QueryString集合物件-QueryString集合物件 • 如果網頁表單使用GET方法傳遞資料,其作法是將傳遞的資料編碼後,透過URL網址後的字串傳送到Web伺服器,參數是位在問號之後,如果參數不只一個,請使用「&」符號分隔,如下所示: http://localhost/Ch10-1-1.aspx?fname1=value1&fname2=value2 • 伺服端使用QueryString集合物件取出資料,如下所示: Request("FieldName") Request.QueryString(" FieldName")

  19. 表單如何傳遞資料-說明 • 在ASP.NET以傳統HTML表單處理方式是使用Form集合物件取得表單欄位的內容,如下所示: user = Request.Form("user") pass = Request.Form("pass") • 程式碼取得user和pass欄位的值,在括號內的名稱就是表單欄位名稱。

  20. 表單如何傳遞資料-HTML表單欄位傳遞的資料

  21. 範例2:表單傳遞資料POST(Ex09_02.html) • <form name="order" method="POST" action="Ex09_02.aspx"> • <b>基本資料</b><br> • 姓名: <input type="TEXT" name="user" size=20> • 密碼: <input type="PASSWORD" name="pass" size=20><br> • 地址: <br><textarea name="address" rows=5 cols=35> • </textarea><hr> • <input type="CHECKBOX" name="lang1" checked>VBScript • <input type="CHECKBOX" name="lang2">JavaScript | • <input type="RADIO" name="lang" value="1">ASP.NET • <input type="RADIO" name="lang" checked value="2">ASP<br> • <select name="web"> • <option value="1" selected>PHP</option> • <option value="2">JSP</option> • <option value="3">Java</option> • </select> • <input type="SUBMIT" name"btn" value="送出"> • <input type="RESET" name"btn1" value="重設"> • </form>

  22. Dim user, pass, address, lang As String ' 取得文字方塊,密碼欄位的值 user = Request.Form("user") pass = Request.Form("pass") address = Request.Form("address") Response.Write("姓名: " & user & "<br>") Response.Write("密碼: " & pass & "<br>") Response.Write("地址: " & address & "<br>") ' 取得核取方塊的值 If Request.Form("lang1") = "on" Then Response.Write("勾選VBScript<br>") End If If Request.Form("lang2") = "on" Then Response.Write("勾選JavaScript<br>") End If ' 取得選擇鈕的值 lang = Request.Form("lang") Select Case lang Case "1" Response.Write("選擇ASP.NET<br>") Case "2" Response.Write("選擇ASP<br>") End Select ' 取得下拉式清單方塊的值 lang = Request.Form("web") Select Case lang Case "1" Response.Write("選擇PHP<br>") Case "2" Response.Write("選擇JSP<br>") Case "3" Response.Write("選擇Java<br>") End Select 範例2:表單傳遞資料(Ex09_02.aspx)

  23. URL參數傳遞資料 • URL超連結傳遞的參數或表單GET方法傳遞的內容,都是使用QueryString集合物件取得參數或欄位值,如下所示: name = Request.QueryString("Username") pass = Request.QueryString("Password") • 程式碼左邊是儲存傳遞資料的變數,在右邊括號內的名稱是參數或欄位名稱,這是一個字串。

  24. 範例3:表單傳遞資料GET(Ex09_02.html) • <form name="order" method="GET" action="Ex09_03.aspx"> • <b>基本資料</b><br> • 姓名: <input type="TEXT" name="user" size=20> • 密碼: <input type="PASSWORD" name="pass" size=20><br> • 地址: <br><textarea name="address" rows=5 cols=35> • </textarea><hr> • <input type="CHECKBOX" name="lang1" checked>VBScript • <input type="CHECKBOX" name="lang2">JavaScript | • <input type="RADIO" name="lang" value="1">ASP.NET • <input type="RADIO" name="lang" checked value="2">ASP<br> • <select name="web"> • <option value="1" selected>PHP</option> • <option value="2">JSP</option> • <option value="3">Java</option> • </select> • <input type="SUBMIT" name"btn" value="送出"> • <input type="RESET" name"btn1" value="重設"> • </form>

  25. Dim user, pass, address, lang As String ' 取得文字方塊,密碼欄位的值 user = Request.QueryString("user") pass = Request.QueryString("pass") address = Request.QueryString("address") Response.Write("姓名: " & user & "<br>") Response.Write("密碼: " & pass & "<br>") Response.Write("地址: " & address & "<br>") ' 取得核取方塊的值 If Request.QueryString("lang1") = "on" Then Response.Write("勾選VBScript<br>") End If If Request.QueryString("lang2") = "on" Then Response.Write("勾選JavaScript<br>") End If ' 取得選擇鈕的值 lang = Request.QueryString("lang") Select Case lang Case "1" Response.Write("選擇ASP.NET<br>") Case "2" Response.Write("選擇ASP<br>") End Select ' 取得下拉式清單方塊的值 lang = Request.QueryString("web") Select Case lang Case "1" Response.Write("選擇PHP<br>") Case "2" Response.Write("選擇JSP<br>") Case "3" Response.Write("選擇Java<br>") End Select 範例3:表單傳遞資料GET(Ex09_02.aspx)

  26. 練習1 請建立擁有三個步驟的表單網頁,各網頁是使用隱藏欄位傳遞欄位資料,最後顯示各步驟輸入或選擇的欄位資料,如下所示: 第一步:輸入使用者名稱和密碼 第二步:選擇個人職業,生日等資料 第三步:選擇個人興趣

  27. 練習1:參考答案

  28. 範例2:利用Request物件配合表單或網址URL參數 • Ex10_02_01.html • <!--程式範例Ex10_02_01.html:使用HTML控制項+POST --> • <html> • <head> • <title>Ex10_02:使用HTML控制項+POST</title> • </head> • <body> • <form name="f1" method="POST" action="Ex10_02_02.aspx"> • <center><H4>會員登入</h4></center> • <hr> • 會員帳號 : <Input type="TEXT" name="mid"><br> • 密 碼 : <Input type="PASSWORD" name="mpass" ><br> • <Input type="submit" name="b1" Value="下一步"><br> • </form> • </body> • </html>

  29. 範例2:利用Request物件配合表單或網址URL參數 • Ex10_02_02.aspx • <!--程式範例Ex10_02_02.aspx:使用HTML控制項+POST --> • <%@ Page Language="VB" %> • <html> • <head> • <title>Ex10_02:使用HTML控制項+POST</title> • </head> • <body> • <% Dim name, pass As String • name = Request.Form("mid") • Response.Write(name & "ok1<br>") • pass = Request.Form("mpass") • Response.Write(pass & "ok2<br>") • %> • <form method="POST" action="Ex10_02_03.aspx"> • <Input Type="Hidden" name="member_id" Value="<%=name%>" > • <Input Type="Hidden" name="member_pass" Value="<%=pass%>" > • <center><H4>個人資料</h4></center> • <hr> • 職 業 別 : • <Input type="RADIO" id="work1" Value="軍" Name="work" runat="server" />軍 • <Input type="Radio" id="work2" Value="公" Name="work" runat="server" />公 • <Input type="Radio" id="work3" Value="教" Name="work" runat="server" />教 • <Input type="Radio" id="work4" Value="工" Name="work" runat="server" />工 • <Input type="Radio" id="work5" Value="其他" Name="work" runat="server" />其他 • <br> • 性 別 : • <Input type="Radio" id="male" Value="先生" Name="fm" runat="server" />先生 • <Input type="Radio" id="female" Value="女士" Name="fm" runat="server" />女士 • <Input type="submit" Value="下一步" > • </form> • </body> • </html>

  30. 範例2:利用Request物件配合表單或網址URL參數 • Ex10_02_03.aspx • <!--程式範例Ex10_02_03.aspx:使用HTML控制項+POST --> • <%@ Page Language="VB" %> • <html> • <head> • <title>Ex10_02:使用HTML控制項+POST</title> • </head> • <body> • <%Dim name, pass, w, s As String • name = Request.Form("member_id") • Response.Write(name & "<br>") • pass = Request.Form("member_pass") • Response.Write(pass & "<br>") • w = Request.Form("work") • Response.Write(w & "<br>") • s = Request.Form("fm") • Response.Write(s & "<br>") • %> • <form method="get" action="Ex10_02_04.aspx"> • <Input Type="Hidden" name="member_id" Value="<%=name%>" > • <Input Type="Hidden" name="member_pass" Value="<%=pass%>" > • <Input Type="Hidden" name="work" Value="<%=w%>" > • <Input Type="Hidden" name="fm" Value="<%=s%>" > • <center><h4>訂閱的電子報類型</h4></center> • <hr> • <Input type="CHECKBOX" name="e_news1" Value="投資理財" >投資理財 • <Input type="CHECKBOX" name="e_news2" Value="體育" >體育 • <Input type="CHECKBOX" name="e_news3" Value="娛樂新聞" >娛樂新聞 • <Input type="CHECKBOX" name="e_news4" Value="科技新知" >科技新知 • <Input type="CHECKBOX" name="e_news5" Value="文學" >文學 • <Input type="CHECKBOX" name="e_news6" Value="網路遊戲" >網路遊戲 • <Input type="submit" Value="下一步" > • </form> • </body> • </html>

  31. 範例2:利用Request物件配合表單或網址URL參數 • If e1 <> "" Then • Response.Write(e1 & ", ") • End If • If e2 <> "" Then • Response.Write(e2 & ", ") • End If • If e3 <> "" Then • Response.Write(e3 & ", ") • End If • If e4 <> "" Then • Response.Write(e4 & ", ") • End If • If e5 <> "" Then • Response.Write(e5 & ", ") • End If • If e6 <> "" Then • Response.Write(e6) • End If • Response.Write("<br>") • %> • </body> • </html> • Ex10_02_04.aspx • <!--程式範例Ex10_02_04.aspx:使用HTML控制項+POST --> • <html> • <head> • <title>Ex10_02:使用HTML控制項+POST</title> • </head> • <body> • <% • Dim name, pass, w, s As String • Dim e1, e2, e3, e4, e5, e6 As String • name = Request.QueryString("member_id") • Response.Write("姓名: " & name & "<br>") • pass = Request.QueryString("member_pass") • Response.Write("密碼: " & pass & "<br>") • w = Request.QueryString("work") • Response.Write("工作別: " & w & "<br>") • s = Request.QueryString("fm") • Response.Write("性別: " & s & "<br>") • e1= Request.QueryString("e_news1") • e2= Request.QueryString("e_news2") • e3= Request.QueryString("e_news3") • e4= Request.QueryString("e_news4") • e5= Request.QueryString("e_news5") • e6= Request.QueryString("e_news6") • Response.Write("訂閱: <br>")

  32. Cookies的基礎-說明 • Cookies的英文意義是小餅乾,源於這些儲存在客戶端電腦的檔案尺寸都很小,Cookies儲存在瀏覽程式所在的電腦,所以並不會浪費伺服器的資源,只需執行ASP.NET程式進入Web應用程式時,檢查客戶端是否儲存Cookie,在取得Cookie保留的資訊後,就可以輕鬆建立複雜的Web應用程式。 • 當Web應用程式需要使用者的瀏覽記錄,例如:使用者是否曾經瀏覽過網站,或是一些個人資訊,此時Cookies是一個最佳的解決方案

  33. Cookies的基礎-儲存位置 • 在「C:\Documents and Settings\Joe Chen\Local Settings\Temporary Internet Files」的快取資料夾,可以看到一大堆網站保留在客戶端電腦的Cookie檔案,如下圖所示:

  34. 新增Cookie • Cookie是Response物件的Cookie集合物件,可以使用名稱存取Cookie值,新增Cookie是使用Response物件的Cookies屬性來新增Cookie,其程式碼如下所示: Response.Cookies("UserName").Value = "陳會安" • 在新增Cookie後還需要設定Cookie的Expires屬性,如下所示: Response.Cookies("UserName").Expires = _ DateAdd("D", 10, Today) • 程式碼使用DateAdd()函數加上10天,計算出Cookie過期天數,當日期到後Cookie就會刪除。

  35. 取得Cookie的值 • 如果客戶端電腦擁有Cookie,我們可以使用Request物件的Cookies集合物件取得指定Cookie的值,其程式碼如下所示: name = Request.Cookies("UserName").Value • 程式碼取得Cookie名稱UserName的值,將它指定給變數name。

  36. 刪除Cookie • 如果客戶端的Cookie不再需要,我們可以使用程式碼刪除Cookie,刪除方式只需將Expires屬性設定成過期即可,其程式碼如下所示: Response.Cookies("UserName").Expires = _ DateAdd("D", -365, Today) • 程式碼將有效期限設定為一年前,因為Cookie已經過期,換句話說,就是刪除Cookie。

  37. 多鍵Cookie的使用-建立 • Cookie是一種目錄結構的集合物件,在同一個名稱Cookie下允許擁有不同的Key鍵名,換句話說,同一個Cookie名稱就可以儲存多個資料,如下: Response.Cookies("User")("UserName") = "陳會安" Response.Cookies("User")("Password") = "1234" Response.Cookies("User").Expires = _ DateAdd("D", 10, Today) • 程式碼新增名為User的Cookie,這個Cookie擁有2個鍵名UserName和Password,分別儲存使用者名稱和密碼,最後設定Cookie期限屬性Expires時只需使用Cookie名稱。

  38. 多鍵Cookie的使用-取出與刪除 • 多鍵Cookie如同一個陣列,取得Cookie值時不只需要指定名稱,還需要指定鍵名,如下所示: name = Request.Cookies("User")("UserName") pass = Request.Cookies("User")("Password") • 多鍵Cookie的刪除只需使用Cookie名稱設定Expires屬性就可以刪除,如果只刪除Cookie其中的一個鍵名,只需將該鍵名設成空字串,如下所示: Response.Cookies("User")("Password") = ""

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

  40. 儲存使用者的瀏覽記錄 • 如果使用者在瀏覽網站時,一進入網頁就馬上顯示歡迎再次到訪的訊息,使用者可能會驚訝於這個網站怎麼如此Smart,事實上,該網站早已經在您第一次進入網頁時,就已經在電腦留下到訪的記錄,這就是Cookies的功能。 • ASP.NET程式檢查客戶端的電腦是否已經留下使用者名稱的Cookie,其程式碼如下所示: name = Request.Cookies("UserName").Value • 如果變數name有內容,表示已經建立Cookies,就直接顯示歡迎使用者的訊息,否則顯示Web表單輸入使用者名稱,然後建立Cookie儲存使用者名稱。

  41. Ex10_03_02.aspx <%@ Page Language="VB" %> <html> <head> <title>Ex10_03_02:使用Cookies</title> <script language="Vb" runat="server"> Sub Page_Load(s as object, e as eventargs) Dim name As String name = Request.Cookies("UserName").Value Response.Write(name & "<br>") End Sub Sub Button2_click( s as object, e as eventargs) Response.Redirect("Ex10_03_01.aspx") End Sub Sub Button3_click(s as object, e as eventargs) If work1.Checked = true Then Response.Cookies("work").Value = work1.Text Response.Cookies("work").Expires = DateAdd("D", 1, Today) End If If work2.Checked = true Then Response.Cookies("work").Value = work2.Text Response.Cookies("work").Expires = DateAdd("D", 1, Today) End If If work3.Checked = true Then Response.Cookies("work").Value = work3.Text Response.Cookies("work").Expires = DateAdd("D", 1, Today) End If If work4.Checked = true Then Response.Cookies("work").Value = work4.Text Response.Cookies("work").Expires = DateAdd("D", 1, Today) End If If work5.Checked = true Then Response.Cookies("work").Value = work5.Text Response.Cookies("work").Expires = DateAdd("D", 1, Today) End If If male.Checked = true Then Response.Cookies("s").Value = "先生, 你好!" Response.Cookies("s").Expires = DateAdd("D", 1, Today) End If If female.Checked = true Then Response.Cookies("s").Value = "女士, 妳好!" Response.Cookies("s").Expires = DateAdd("D", 1, Today) End If Response.Redirect("Ex10_03_03.aspx") End Sub </script> </head> <body> <form runat="server"> <asp:Panel id="panel2" runat="server" backcolor="lightgray" Visible="true"> <center><h4>個人資料</h4></center> <hr> 職 業 別 : <asp:RadioButton id="work1" Text="軍" GroupName="work" runat="server" /> <asp:RadioButton id="work2" text="公" GroupName="work" runat="server" /> <asp:RadioButton id="work3" text="教" GroupName="work" runat="server" /> <asp:RadioButton id="work4" text="工" GroupName="work" runat="server" /> <asp:RadioButton id="work5" text="其他" GroupName="work" runat="server" /> <br> 性 別 : <asp:RadioButton id="male" Text="先生" GroupName="fm" runat="server" /> <asp:RadioButton id="female" Text="女士" GroupName="fm" runat="server" /> <asp:button id="button2" runat="server" Text="上一步" OnClick="Button2_click" /> <asp:button id="button3" runat="server" Text="下一步" OnClick="Button3_click" /> </asp:Panel> </form> </body> </html> 範例3:利用Cookies來傳送網頁間資料

  42. 範例3:利用Cookies來傳送網頁間資料 • Ex10_03_03.aspx • <%@ Page Language="VB" %> • <html> • <head> • <title>Ex10_03_03:使用Cookies</title> • <script language="Vb" runat="server"> • Sub Button4_click( s as object, e as eventargs) • Response.Redirect("Ex10_03_02.aspx") • End Sub • Sub Button5_click(s as object, e as eventargs) • Dim i as integer • Dim news As String • news = "" • For i = 0 to e_news.Items.Count -1 • If e_news.Items(i).Selected Then • If news= "" Then • news += e_news.Items(i).Text • Else • news += ", " & e_news.Items(i).Text • End If • End If • Next • Response.Cookies("e_news").Value = news • Response.Cookies("e_news").Expires = DateAdd("D", 1, Today) • Response.Redirect("Ex10_03_04.aspx") • End Sub • </script> • </head> • <body> • <form runat="server"> • <asp:Panel id="panel3" runat="server" backcolor="lightyellow" Visible="true"> • <center><h4>訂閱的電子報類型</h4></center> • <hr> • <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:CheckBoxList> • <asp:button id="button4" runat="server" Text="上一步" OnClick="Button4_click" /> • <asp:button id="button5" runat="server" Text="下一步" OnClick="Button5_click" /> • </asp:Panel> • </form> • </body> • </html>

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

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

  45. Session物件的基礎-說明 • 當一位尚未建立Session物件的使用者執行Web應用程式的ASP.NET程式,伺服器就會自動建立一個新的Session物件,並且指定唯一的Session ID編號。 • 如果同時有多位使用者進入網站,每位使用者都會指定一個專屬的Session ID編號,以便建立不同的Session物件。

  46. Session物件的基礎-圖例

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

  48. Session變數的使用-方法與屬性

  49. Session變數的使用-存取 • 在ASP.NET程式設定Session變數的程式碼,如下所示: Session("User_Pages")=Session("User_Pages")+1 • 程式碼將Session變數User_Pages加一,Session變數並不需要考慮資料衝突的問題,因為它是附屬於使用者的Session期間,我們可以使用下列程式碼取得使用者目前的Session ID,如下所示: 使用者的Session ID : <%=Session.SessionID%><br>

  50. 使用Session變數傳遞資料 • Session變數主要的用途是在網頁間分享資料,換句話說。例如:儲存使用者資訊的名稱和密碼,首先是使用者hueyan的Session變數,如下: Session("UserName") = "hueyan" Session("UserPassword") = "1234" • 只要使用者沒有超過Session期間或執行Abandon()方法,在期間內執行其它ASP.NET程式都可以存取上述Session變數的值,如下所示: name = Session("UserName") password = Session("UserPassword")

More Related