ASP.NET頁面之間的數(shù)據(jù)傳遞與保持_第1頁
ASP.NET頁面之間的數(shù)據(jù)傳遞與保持_第2頁
ASP.NET頁面之間的數(shù)據(jù)傳遞與保持_第3頁
ASP.NET頁面之間的數(shù)據(jù)傳遞與保持_第4頁
ASP.NET頁面之間的數(shù)據(jù)傳遞與保持_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第第#頁ASP頁面之間的數(shù)據(jù)傳遞與保持頁面之間數(shù)據(jù)的傳遞與保持是實現(xiàn)網(wǎng)站與用戶交互的重要手段之一,也是Web應(yīng)程序的基本功能,它的實現(xiàn)效率對程序性能有直接的影響。 ASP提供了多種方法來實現(xiàn)數(shù)據(jù)的傳遞與保持,這些方法各有所長。以下對常用的幾種方法做闡述。一、數(shù)據(jù)在頁面間的傳遞在用戶訪問網(wǎng)站的過程中,頁面之間的跳轉(zhuǎn)總是非常頻繁。用戶通常點擊頁面上某個超鏈接而進入網(wǎng)站其它頁面,也有可能點擊某個按鈕提交信息從而打開了目標頁面,甚至是網(wǎng)頁程序在某個條件達成時自動的頁面重定向。無論哪種情況使得用戶瀏覽時換了頁面,都不能丟了用戶的狀態(tài),也就是在用戶本次訪問網(wǎng)站過程中,其狀態(tài)應(yīng)該是連續(xù)的,有些數(shù)據(jù)必須在頁面之間傳遞下去,以供目標頁面獲取。目標頁面可以通過Request對象來獲取源頁面?zhèn)鱽淼臄?shù)據(jù)。Request.QueryStringQueryString是最簡單最常用的傳值方法,它能夠獲取HTTP查詢字符串附在URL后面的參數(shù)值:URL?參數(shù)名1二參數(shù)值&參數(shù)名2二參數(shù)值 而以URL方式進行頁面轉(zhuǎn)換有以下幾種:超鏈接:<a>標記的href屬性或控件HyperLink的NavigateURL設(shè)置URL后面可以連接參數(shù);控件Button的postbackURL屬性可以設(shè)置目標頁面URL后面可以連接參數(shù);表單數(shù)據(jù)以get方法發(fā)送給指定的目標URL會將控件值作為參數(shù)連接在URL后面,參數(shù)名就是控件名或控件 ID,參數(shù)值就是控件的值;Response對象的Redirect方法可以設(shè)置參數(shù)URL使客戶端瀏覽器立即重定向到指定的URL;Session對象的Transfer方法可以設(shè)置參數(shù)URL將客戶端重定向到新的頁面,它終止當前頁的執(zhí)行,保留當前頁面的表單( Form)數(shù)據(jù)和查詢字符串(QueryString),并為當前請求幵始執(zhí)行URL指定的目標頁面,而源頁面已加載的數(shù)據(jù)依然保存。Session對象的Execute方法可以設(shè)置參數(shù)URL將客戶端重定向到新的頁面,它暫停當前頁的執(zhí)行,并為當前請求幵始執(zhí)行URL指定的新頁面,然后再回到源頁面繼續(xù)運行。當然,用戶在瀏覽器的地址欄輸入 URL時也可以直接傳遞參數(shù)。通過查詢字符串傳遞的數(shù)據(jù)直接在 URL中以明文傳遞,對用戶是可見的,雖然可以加密。此方法簡單、方便,但是傳遞的數(shù)據(jù)量少,且不能傳遞對象。這種方式傳遞的數(shù)據(jù),在目標頁面可以用Request.QueryString獲?。篟equest.QueryString[“參數(shù)名”]Request.FormRequest.Form獲取客戶端傳遞的表單數(shù)據(jù)集,即頁面表單以post方法發(fā)送的數(shù)據(jù)。該方法可以傳遞大量數(shù)據(jù),訪問源頁面表單控件中的數(shù)據(jù)。使用以上方法都可以實現(xiàn)數(shù)據(jù)在頁面之間的傳遞,但是這個數(shù)據(jù)僅能在指定的URL頁面才能獲取到,也就是說生命周期僅限于當前請求。如果某個數(shù)據(jù)在用戶訪問我們網(wǎng)站任何頁面或者大多頁面時都必須獲取到,就需要隨時傳遞,這樣無疑增加了代碼的復雜度,降低了性能。因此我們對于單個用戶在各頁面的瀏覽中都需要訪問的數(shù)據(jù),或者所有用戶需要共享的數(shù)據(jù),就要做成數(shù)據(jù)保持來提供任何頁面自由獲取,而不再要求初始頁面進行傳遞發(fā)送。二、數(shù)據(jù)保持ASP常用的狀態(tài)保持有四種,即視圖狀態(tài)、 Cookie狀態(tài)、會話狀態(tài)、應(yīng)用程序狀態(tài)。視圖狀態(tài)視圖狀態(tài)ViewState就是本窗體的狀態(tài),用來在同一頁面的多次請求之間保存和還原服務(wù)器控件視圖狀態(tài)。視圖狀態(tài)只能在本網(wǎng)頁與服務(wù)器的往返中保持,不能在不同網(wǎng)頁之間傳遞。默認情況下,所有服務(wù)器控件都具有保持視圖狀態(tài)的功能,也可以被控件、頁面和應(yīng)用程序禁用。如果控件中包含的數(shù)據(jù)量很大,將會延長網(wǎng)頁往返所需時間,加重頁面回傳的負擔,從而降低應(yīng)用程序的性能。盡管視圖狀態(tài)存儲在窗體頁的隱藏域中,并且經(jīng)過哈希函數(shù)的加密處理,但它仍然有可能被篡改,導致了潛在的安全問題。Cookie狀態(tài)Cookie就是服務(wù)器暫時存放在你的電腦里的資料,由服務(wù)器端生成,為單個用戶保留,發(fā)送并保存在客戶端。 Cookie作為“HTTP頭”的一部分隨著用戶請求在Web服務(wù)器和客戶端瀏覽器之間傳遞。與Web站點而不與具體頁面關(guān)聯(lián),用戶每次訪問站點時,Web應(yīng)用程序都可以讀取Cookie,所以無論用戶請求站點中的哪個頁面,瀏覽器和服務(wù)器都將交換Cookie信息,這樣就可以利用它來跟蹤和保存用戶的狀態(tài)。Cookie有兩種。如果沒有設(shè)置Cookie的有效期,它就是臨時性Cookie,存放在客戶端瀏覽器內(nèi)存中,當瀏覽器關(guān)閉,臨時性 Cookie就會從內(nèi)存中釋放;如果設(shè)置有效期,它就是持久性Cookie,以文本文件的格式存放在客戶端硬盤中,這個Cookie會一直存在,直到過期或者其它原因被刪除。會話狀態(tài)Session對象是為單個用戶保留的狀態(tài),保存在服務(wù)器端。會話是一個用戶在一段時間內(nèi)對站點的一次訪問。會話時間可長可短,只要用戶的Session沒有超時,或者Abandon方法沒有被調(diào)用,本次會話就沒有結(jié)束,Session中的信息就不會丟失。會話期間用戶在頁面之間跳轉(zhuǎn),存儲在Session對象中的變量不會被清除,因此可以被程序跟蹤和訪問。會話中可以存放任何類型的變量,且大小無限制。但是因為會話占用的是服務(wù)器端的內(nèi)存,因此在放置大數(shù)據(jù)量對象時應(yīng)慎重考慮。每一個新訪問的用戶都將創(chuàng)建自己的會話,在退出網(wǎng)站時撤銷。因此對于不同的用戶來說,他們的會話是不同的;對于同一用戶的每次連接訪問,其Session也不同,兩次訪問之間不能共享數(shù)據(jù)。4.應(yīng)用程序狀態(tài)Application對象用于存放應(yīng)用程序中所有用戶共享的信息。所有用戶都可以對其進行修改,因此提供Lock方法用于鎖定Application對象,阻止其他用戶修改該Application對象中的變量,以確保在同一時間僅有一個用戶可以修改和存取;Unlock方法用于解除Application對象的鎖定狀態(tài),使得下一個用戶可以訪問并修改其中的變量。Lock方法和Unlock方法必須成對使用,并且要盡可能快地解除鎖定,以免等待的用戶過多,降低效率。Application 只能在網(wǎng)站運行時存在,如果 WEB服務(wù)器關(guān)閉或崩潰,Application對象所保存的信息也會損壞或丟失。三、其他方法配置文件Web.config文件用來設(shè)置應(yīng)用程序的屬性,Machine.config文件用來設(shè)置所有應(yīng)用程序基礎(chǔ)信息。這兩種文件保存的數(shù)據(jù)一般都很小,多為明文,特別適合保存一些字符串常量,如數(shù)據(jù)庫連接字符串。個性化配置Profile是相對于一個特定的用戶的,每個用戶都有自己的 profile對象,可以自動在多個Web應(yīng)用程序的訪問之間存儲用戶信息。 Profile是持久的且是強類型的,既可以是簡單的string和integer類型,也可以是復雜的自定義類型。當修改Profile的狀態(tài)時,修改在多個訪問之間均有效。數(shù)據(jù)庫和文件數(shù)據(jù)庫和文件幾乎可以存儲任何類型、任何數(shù)量的信息,且可以永久保存。相對于數(shù)據(jù)庫來講,文件需要自定義格式,設(shè)計和使用都比較繁瑣,除非必要,很少應(yīng)用。還有很多方法也可以保持數(shù)據(jù),比如 Cache、Context等,本文不再闡述。四、分析總結(jié)基于以上論述,下面通過表1來簡單比較和分析這些方法的異同傳值方法生命周期應(yīng)用范圍數(shù)據(jù)類型QueryString目標頁單用戶字符串Form當前請求單用戶全部ViewState當前頁單用戶全部Cookie可自定義單用戶字符串Session當前會話單用戶全部Application應(yīng)用程序全局全部配置文件可永久全局字符串Profile持久單用戶全部數(shù)據(jù)庫或文件永久全局全部通過上表可以比較看出:傳遞無需保密的簡單數(shù)據(jù)使用QueryString最方便;通過控件直接傳遞數(shù)據(jù)使用 Form最好;傳遞只與具體用戶有關(guān)的數(shù)據(jù)使用Session、Cokkie或Profile;要想所有的用戶共享數(shù)據(jù)使用Application,若共享數(shù)據(jù)是字符串常量可以使用配置文件;要長期保存數(shù)據(jù)只能選用Cookie、配置文件、數(shù)據(jù)庫或文件。無論哪種傳值與保持數(shù)據(jù)的方法,都有其適用的條件和范圍。在實際應(yīng)用中,根據(jù)需求,細、全面權(quán)衡各方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論