Web表格網頁是基于HTTP的,它們沒有狀態,這意味著它們不知道所有的請求是否來自同一臺客戶端計算機,網頁是否受到了破壞,以及是否得到了刷新,這樣就可能造成信息的丟失。于是,狀態管理就成了開發互聯網應用程序中的一個實實在在的問題。
我們在ASP中能夠通過cookie、查詢字符串、應用程序、對話等輕易地解決這些問題,F在到了ASP.NET環境中,我們仍然可以使用這些功能,只是它們的種類更多了,功能也更強大了。
管理互聯網網頁主要有二種不同的方法:客戶端和服務器端。
1、客戶端的狀態管理:
在客戶端、服務器之間的多次請求-應答期間,服務器上不保存信息,信息將被存儲在網頁或用戶的計算機上。
A、Cookie
cookie是存儲在客戶端文件系統的文本文件中或客戶端瀏覽器對話的內存中的少量數據,它主要用來跟蹤數據設置。下面我們舉例說明:假設我們要定制化一個歡迎互聯網網頁,當用戶請求缺省的互聯網網頁時,應用程序會首先檢查用戶在此前是否已經注冊,我們可以從cookie中獲取用戶的信息:
[c#]
if (Request.Cookies[“username”]!=null)
lbMessage.text=”Dear “+Request.Cookies[“username”].Value+”, Welcome shopping here!”;
else
lbMessage.text=”Welcome shopping here!”;
如果要存儲用戶的資料,我們可以使用下面的代碼:
[c#]
Response.Cookies[“username’].Value=username;
這樣,當用戶請求該網頁時,我們就可以方便地識別該用戶。
B、隱藏域
隱藏域不會顯示在用戶的瀏覽器中,但我們可以象設置標準控制的屬性那樣設置其屬性。當一個網頁被提交給服務器時,隱藏域的內容和其他控制的值一塊兒被送到HTTP Form集合中。隱藏域可以是任何存儲在網頁中的與網頁有關的信息的存儲庫,隱藏域在其value屬性中存儲一個變量,而且必須被顯性地添加在網頁上。
ASP.NET中的HtmlInputHidden控制提供了隱藏域的功能。
[c#]
protected System.Web.UI.HtmlControls.HtmlInputHidden Hidden1;
file://給隱藏域賦值
Hidden1.Value=”this is a test”;
file://獲得一個隱藏域的值
string str=Hidden1.Value;
需要注意的是,要使用隱藏域,就必須使用HTTP-Post方法提交互聯網網頁。盡管其名字是隱藏域,但它的值并不是隱藏的,我們可以通過“查看源代碼”功能找到它的值。
C、狀態查看
包括網頁本身在內的Web Forms網頁上的每個控制都有一個名字為ViewState的屬性,它是一個自動保持網頁和控制狀態的內置結構,這意味著在向服務器提交網頁后,我們無需采取任何措施來恢復控制的數據。
在這里,對我們有用的是ViewState屬性,我們可以利用它來保存與服務器之間多次的請求-應答期間的信息。
[c#]
file://保存信息
ViewState.Add(“shape”,”circle”);
file://獲取信息
string shapes=ViewState[“shape”];
注意:與隱藏域不同的是,在使用查看源代碼功能時,ViewState屬性的值是不可見的,它們是被壓縮和加密的。
D、查詢字符串
查詢字符串提供了一種簡單而受限制的維護狀態信息的方法,我們可以方便地將信息從一個網頁傳遞給另一個網頁,但大多數瀏覽器和客戶端裝置都把URL的長度限制在255個字符長。此外,查詢值是通過URL傳遞給互聯網的,因此,在有些情況下,安全就成了一個大問題。
帶有查詢字符串的URL如下所示:
http://www.examples.com/list.aspx?categoryid=1&productid=101
當有客戶端請求list.aspx后,可以通過下面的代碼獲取目錄和產品信息:
[c#]
string categoryid, productid;
categoryid=Request.Params[“categoryid”];
productid=Request.Params[“productid”];
注意,我們只能使用HTTP-Get提交該互聯網網頁,否則就不能從查詢字符串獲得需要的值。
2、服務器端的狀態管理
信息存儲在服務器上,盡管其安全性較高,但會占用較多的web服務器資源。
A、Aplication對象
本新聞共2頁,當前在第1頁 1 2
文章來源于領測軟件測試網 http://www.kjueaiud.com/