国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
狀態(tài)管理(ViewState、Cookie、Session、Application、Cache)
狀態(tài)管理(ViewState、Cookie、Session、Application、Cache)
2010-08-06 23:18

狀態(tài)管理(ViewState、Cookie、Session、Application、Cache)

速成部分:

viewstate["****"] & session["***"] 直接賦值及使用,不用聲明。

   cookie:

設(shè)置:

    HttpCookie cookieInstance = new HttpCookie("mycookie");

    cookieInstance.Values.Add("name","權(quán)昌軍");

    Response.Cooki.Add(Mycookie);

   讀取:

    HttpCookie getCookie = Request.Cookie["mycookie"];

    string myName = cookie.Values["name"]; //此時,myName中的值是“權(quán)昌軍”


--------------------------------------------------------------------------------

狀態(tài)類型
客戶端 或 服務(wù)器 資源
有效時間

ViewState
客戶端
只在一個頁面中

Cookie
客戶端
關(guān)閉瀏覽器時會刪除臨時cookie,永久cookie存儲在客戶系統(tǒng)的磁盤上

Session
服務(wù)器
會話狀態(tài)與瀏覽器會話相關(guān)。會話在超時后無效(默認(rèn)為20分鐘)

Application
服務(wù)器
應(yīng)用程序狀態(tài)在所有的客戶端上共享,這個狀態(tài)在服務(wù)器重啟之前都是有效的

Cache
服務(wù)器
類似于應(yīng)用程序狀態(tài),高速緩存是共享的。但是,是高速緩存無效有更好的控制方式

   ViewState:

        ViewState包含的狀態(tài)與控件發(fā)送給客戶端時 包含的狀態(tài)相同。

        當(dāng)瀏覽器把 窗體發(fā)送 回服務(wù)器時, 控件包含新值,而 ViewState包含初始值。如果ViewState中的初始值 與 控件中的新值有區(qū)別時,調(diào)用相應(yīng)的事件處理程序。

        使用ViewState的缺點是,數(shù)據(jù)總是要從服務(wù)器 -> 客戶端,再 客戶端 -> 服務(wù)器。增加了網(wǎng)絡(luò)流量。

        關(guān)閉ViewState的方法:

       

        還可以設(shè)置 控件的 EnableViewState屬性。只有沒有配置ViewState的控件才使用頁面配置的值。

        還可以把定制的數(shù)據(jù)存儲在ViewState中。為此,可使用索引符 和 Page類的ViewState屬性。

ViewState["mydata"] = "my data";   //將字符串存儲在 ViewState中

        讀?。?/p>

string mydata = (string)ViewState["mydata"]; //將前面存儲的值讀取出來。

        在發(fā)送客戶端的HTML代碼中,整個頁面的ViewState存儲在一個隱藏字段中:

       

        使用隱藏字段的優(yōu)點是,每個瀏覽器都能使用這個特征,用戶不能關(guān)閉它。

Cookie:

        ViewState只能保存在頁面中。如果狀態(tài)應(yīng)保存在多個不同的頁面中,就應(yīng)使用cookie在客戶端保存狀態(tài)。

cookie在HTTP頭中定義。

使用HttpRespone類可以把cookie發(fā)給客戶端。

Response是Page類的一個屬性,它返回一個HttpResponse類型的對象。

HttpResponse類定義了返回HttpCookieCollection的Cookie屬性。

使用HttpCookieCollection可以向客戶端返回多個cookie。

如何把cookie發(fā)給客戶端:

            string myval = "myval";

HttpCookie cookie = new HttpCookie("mycookie");   //首先實例化一個HttpCookie對象,并設(shè)置cookie的名稱為“mycookie”

cookie.Values.Add("mystate",myval);                 // 用HttpCookie類的Value屬性可以添加多個cookie值

Response.Cookie.Add(cookie);                        // 發(fā)送cookie

設(shè)置cookie有效期:

            cookie可以是臨時的,僅在一個瀏覽器會話中有效,也可以是存儲在客戶端磁盤上。

            可以使用HttpCookie對象設(shè)置的Expires屬性。

            HttpCookie cookie = new HttpCookie("mycookie");

            cookie.Values.Add("mystate","myval");

cookie.Expires = DateTime.Now.AddMonths(3);    // 設(shè)置cookie有效期為3個月

            Response.Cookies.Add(cookie);

        盡管設(shè)置了cookie,但不一定能存儲那么長時間。

        用戶可能會刪除cookie;

        如果本地有太多的cookie,瀏覽器也可能刪除它。

        瀏覽器只能為每個服務(wù)器存儲 20 個cookie;為所有服務(wù)器 存儲 300個cookie;

cookie大小有限制,cookie不能存儲多于4K的數(shù)據(jù)。達到極限后,就刪除有一段時間不用的cookie。

   讀取客戶端發(fā)送的cookie:

        客戶從服務(wù)器請求頁面時,相應(yīng)的cookie就可以使用了。

        并作為HTTP請求的一部分發(fā)送給服務(wù)器。

        要讀取cookie,可以訪問HttpRequest對象的cookie集合。

        與HTTP響應(yīng)一樣,Page類也有一個Request屬性 返回 HttpRequest類型的對象。

        Cookies屬性返回HttpCookieCollection,它可以讀取客戶端發(fā)送的cookie。

        可以用索引符來訪問cookie,并使用HttpCookie的value屬性從cookie中獲取值。

HttpCookie cookie = Request.Cookies["mycookie"];

string myval = cookie.Values["mystate"];

Session:

會話狀態(tài) 與 瀏覽器會話相關(guān)。 當(dāng)客戶第一次打開ASP.NET頁面時,會話就開始了。當(dāng)客戶20分鐘(session默認(rèn)值)內(nèi)沒有訪問服務(wù)器時,會話結(jié)束。


        可以在Global Application類中定義自己的代碼,在會話開始或結(jié)束時運行。新的Global Application類會創(chuàng)建global.asax文件。

文件中定義了一些事件處理程序:


    < runat="server">

            void Application_Start(object sender, EventArgs e) {......}


    void Application_End(object sender, EventArgs e) {......}

    .......

   

        會話狀態(tài)可以存儲在HttpSessionState對象中。

        與當(dāng)前HTTP環(huán)境相關(guān)的會話狀態(tài)對象可以使用Page類的Session屬性來訪問。

設(shè)置會話狀態(tài):

        void Session_Start(Object sender, EventArgs e) { Session["mydata"] = 0; }

// 在Session_Start()事件處理程序中,初始化會話變量,mydata會話被初始化為 0

讀取會話狀態(tài):

int val = (int)Session["mydata"];

       要把客戶端 與 會話變量 關(guān)聯(lián)起來, ASP.NET默認(rèn)使用一個臨時cookie 和 一個會話標(biāo)識符。

       ASP.NET也支持沒有cookie的會話,其中URL標(biāo)示符 用于把 HTTP請求映射到同一個會話。

    Application:

       如果數(shù)據(jù)要在多個客戶端共享,就可以使用應(yīng)用程序狀態(tài)(Application)。比如,網(wǎng)站訪問計數(shù)器。

       應(yīng)用程序狀態(tài)使用HttpApplicationState類,通過Page類的Application屬性訪問。

       以網(wǎng)站訪問計數(shù)器為例:

設(shè)置狀態(tài):

void Application_start(object sender, EventArgs e) { Application["userCount"] = 0 ; }

// Application_Start()是global.asax文件中的事件處理方法,在啟動網(wǎng)站的第一個頁面時啟動。


改變狀態(tài):

       void Session_Start(Object sender, EventArgs e)

       {

Application.Lock();                                // 應(yīng)用程序狀態(tài)改變之前,必須要用Lock()鎖定,因為多個用戶可以同時訪問這個應(yīng)用程序變量。

            Application["userCount"] = (int) Application["userCount"] +1;       

Application.UnLock();                          // 鎖定 與 解鎖之間的時間應(yīng)盡量短,否則,其他人就得等解鎖之后才能操作。

       }

讀取狀態(tài):

label1.Text = Application["userCount"].ToString();

Cache:

        類似于Application,可以在多個客戶端上共享。但Cache可以自定義何時失效。我們不是給每個請求讀取文件或數(shù)據(jù)庫,而是把數(shù)據(jù)存儲在高速緩存(Cache)中。

        Cache使用System.Web.Caching名稱空間 和 Cache類。

給Cache添加對象:

        Cache.Add("mycache", myobj, null, DateTime.MaxValue, TimeSpan.FromMinutes(10), CacheItemPriority.Normal, null );

        Page類的Cache屬性返回一個Cache對象。使用Cache類的Add()方法可以把任意對象賦予高速緩存。

第一個參數(shù),定義Cache項的名稱;

第二個參數(shù),是要被緩存的對象;

第三個參數(shù),定義了依賴關(guān)系。比如,Cache依賴于一個文件,當(dāng)文件改變時,高速緩存對象就失效,本例中沒有依賴關(guān)系;

第四個參數(shù),定義了Cache失效的絕對時間;

第五個參數(shù),定義了Cache失效的相對時間;

第六個參數(shù),定義了Cache的優(yōu)先級,當(dāng)需要刪除Cache時,會根據(jù)優(yōu)先級刪除。優(yōu)先級低的先刪除。

最后一個參數(shù),定義了一個方法,當(dāng)刪除Cache調(diào)用。當(dāng)Cache依賴于一個文件時,就可以用該參數(shù):文件改變時,刪除Cache,調(diào)用方法,再次讀取文件,重新建立Cache。

讀取Cache:

        object o = Cache["mycache"];

        if(o == null)

            { //reload the cache }

        else

            { //use the cache

                MyClass myObj = (MyClass)o;

            }

        使用Cache屬性返回的對象之前,必須檢查結(jié)果是否為null,當(dāng)高速緩存失效時,結(jié)果就是null。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Application、Cookie、Session和Cache
APPlication,Session,Cookie,ViewState和Cache之間的...
Application, Session, Cookie, Viewstate, Cache對象用法和區(qū)別(轉(zhuǎn))
Visual?C#?Web?應(yīng)用程序示例主題(一)(MSDN整理)
在頁面之間傳遞參數(shù)大全
頁面間傳遞變量的方法及使用范圍的討論
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服