第10章 Web應用程式的資料分享 10-1 Web應用程式的基礎 10-2 設定ASP.NET的Web應用程式 10-3 網頁間的資料分享

Slides:



Advertisements
Similar presentations
本章要点: 掌握HttpRequest对象的应用。 掌握HttpResponse对象的应用。
Advertisements

第7章 JSP的表單處理與Cookie 7-1 JSP狀態管理的基礎 7-2 URL參數傳遞 7-3 HTML表單欄位處理
08 CSS 基本語法 8-1 CSS 的演進 8-2 CSS 樣式規則與選擇器 8-3 連結HTML 文件與CSS 樣式表
《计算机网络技术》 asp.net 程序设计 文本类控件 笪静.
Chapter 7 網頁應用程式與狀態管理.
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
《ASP.NET数据库网站设计教程(C#版)》
發佈ASP.NET 建國科技大學 資管系 饒瑞佶 2016/1 V1.
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
LINQ 建國科技大學 資管系 饒瑞佶.
連結資料庫 ACCESS MSSQL.
Q101 在701 SDX Linux上的標準安裝與使用程序v2
JDK 安裝教學 (for Win7) Soochow University
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
Working with Databases (II) 靜宜大學資管系 楊子青
Google Data API Spreadsheet
Controls.
ASP.NET 網頁製作教本 – 從基本語法學起
SQL Stored Procedure SQL 預存程序.
R教學 安裝RStudio 羅琪老師.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
第13章 網站的使用者與會員管理 13-1 網站的使用者與會員管理 13-2 ASP.NET的表單基礎驗證
第11章 ASP.NET的Web應用程式 11-1 ASP.NET應用程式的基礎 11-2 Global.asax檔的使用
ASP动态网页设计实用教程 主讲教师: 开课单位:.
網頁切換移轉 JS vs. ASP.NET.
Quiz6 繳交期限: 12/14(四) 23:59前.
第 6 章 Application、Session 物件與Cookie
Ch10 網頁間的資料分享: Application Session 與Cookies的處理
主 讲 教 师:陆有军 Web技术与应用 第四章 内部对象 主 讲 教 师:陆有军
檔案與磁碟的基本介紹.
第二章 SPSS的使用 2.1 啟動SPSS系統 2.2 結束SPSS系統 2.3 資料分析之相關檔案 2.4 如何使用SPSS軟體.
Java 程式設計 講師:FrankLin.
FTP檔案上傳下載 實務與運用.
課程名稱:_____________ 指導教授:_____________
網頁切換移轉 JS vs. ASP.NET.
驗證 Authentication.
表單(Form).
VS.NET 2003 IDE.
第4章 ASP.NET的HTTP物件、輸出入與Cookie處理
Ch20. 計算器 (Mac 版本).
第18章 個人入口網站的建立 18-1入口網站的基礎 18-2 建立網站的搜尋引擎 18-3 網頁組件的個人化功能
第 19 章 XML記憶體執行模式.
表單(Form).
網頁程式概論 建國科技大學資管系 饒瑞佶 2015/9 V1 2016/4 V2 2016/9 V3.
表格(HTML – FORM).
1 Session对象的特性 Session 状态对象 Session 对象常用的方法有: Session 对象常用的属性有:
IIS Internet Information Services
Google協作平台+檔案分享(FileZilla+網路芳鄰)
期末考.
Controls.
個人網路空間 資訊教育.
VS.NET 2003 IDE.
如何使用Gene Ontology 網址:
利用 EditorConfig 自訂文字編輯器設定
MiRanda Java Interface v1.0的使用方法
陣列與結構.
編輯網頁可用那些應用程式? 記事本 Word FrontPage Dreamweaver.
程式移植.
Dreamweaver 進階網頁製作 B 許天彰.
1. 查詢個人電腦版本 1.進入控制台 2.點選“所有控制台項目” 3.點選“系統”.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
Brief Guide of FrontPage
國立台灣大學 關懷弱勢族群電腦課程 By 資訊工程 黃振修
Cloud Training Material- 事件 Sherman Wang
電子郵件簡報.
連結資料庫 MYSQL.
NFC (近場通訊, Near Field Communication) 靜宜大學資管系 楊子青
Chapter 4 Multi-Threads (多執行緒).
Develop and Build Drives by Visual C++ IDE
InputStreamReader Console Scanner
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

10-2-2 Web介面的網站管理工具-安全性標籤

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

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

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

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

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

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

10-4 Application與Session物件

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

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

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

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

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

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

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

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

10-5 Global.asax檔案的使用 10-5-1 在VWD新增Global.asax檔案

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

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

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

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

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

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

10-6 Cookies的處理 10-6-1 Cookies的基礎 10-6-2 新增Cookie 10-6-3 取得Cookie的值

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

10-6-1 Cookies的基礎-用途 Cookies在網站實作上的應用相當多,使用Cookies保留的資料大都屬於幾個方面,如下所示:

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

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

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

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

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

10-6-5 多鍵Cookie的使用-取得多鍵的Cookie值 name = _ Request.Cookies("User")("UserName") pass = Request.Cookies("User")("Password")

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

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

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

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

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

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

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

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

10-8 跨程式的Web表單送回-取得跨程式Web表單的控制項 ASP.NET程式的Page_Load()事件處理程序,可以使用FindControl()方法取得前一頁ASP.NET程式的控制項,如下所示: Dim txt As TextBox txt = PreviousPage.FindControl("user") name.Text = txt.Text txt = PreviousPage.FindControl("pass") pass.Text = txt.Text 上述程式碼使用PreviousPage屬性取得前一頁的Page物件後,使用FindControl()方法找尋指定名稱的控制項,以此例是名為user和pass的2個TextBox控制項,然後取得Text屬性的控制項值。