內建對象session ,cookic,Application,ViewState

來源:互聯網
上載者:User

標籤:

一、內建對象

(一)Response - 響應請求對象
1.定義:Response對象用於動態響應用戶端請示,控制發送給使用者的資訊,並將動態產生響應。Response對象只提供了一個資料集合cookie,它用於在用戶端寫入cookie值。若指定的cookie不存在,則建立它。若存在,則將自動進行更新。結果返回給用戶端瀏覽器。
2.方法
(1)Redirect
用法:Response.Redirect("url")
作用是在伺服器端重新導向於另一個網頁
(2)Write
功能:向用戶端發送瀏覽器能夠處理的各種資料,包括:html代碼,指令碼程式等
用法:Response.Write("")輸入字串在介面裡顯示,輸入<script>alert(‘‘)</script>彈出對話方塊
(二)Request - 擷取請求對象
Request["key"] - 預設返回的就是string類型
來擷取傳遞過來的值,Request對象的作用是與用戶端互動,收集用戶端的Form、Cookies、超連結,或者收集伺服器端的環境變數。

(三)Session  相對全域對象

在不同的瀏覽器之間傳值,像銀行之類的網站為了安全把使用者名稱密碼儲存在session裡面。每一台電腦訪問伺服器,都會是獨立的一套session,key值都一樣,但是內容都是不一樣的。

賦值:Session["key"] = 值;

在另一個網頁取值:首先先要判斷Session["key"] 是不是null,不是的話取值,否則定向到原網頁

 string a = Session["key"];

優缺點:

Session是非常安全的,因為它存在於伺服器的記憶體中,取資料也是最快的;但是,Session不要濫用,因為會造成伺服器記憶體溢出,導致伺服器崩潰(為了避免同一帳號短時間大量訪問所以設定了看不清的驗證碼)
Session裡面不要放大東西,如果不用那麼就會造成資源浪費。

Session生命週期:20分鐘(當一個帳號關閉遊覽器後,仍然會在伺服器走完這20分鐘,使用者的每一個會導致頁面重新整理的操作都會使這20分鐘重新計時)

很多網站,特別是涉及到moneyde ,使用者長時間不操作之後都要重新登入就是因為他的生命週期。

ps:當一個使用者關閉遊覽器然後再用這個遊覽器登入相同的帳號後,串連就不是原來的串連了,就像是打客服電話,

用同一部手機撥打同一個客服電話,對面接電話的就不一定是同一個人了。

(四)Cookies

賦值:   Response.Cookies["key"].Value =值;

取值: Request.Cookies["key"].Value;

與Session比較:

相同點:每一台電腦訪問伺服器,都會是獨立的一套session或者Cookies,key值都一樣,但是內容都是不一樣的。

不同點:●Session的儲存位置是儲存在伺服器記憶體上,Cookies儲存在使用者硬碟上

           ●Session沒有持久的,在不對頁面進行任何操作的情況下,它的儲存周期就是20分鐘;Cookies可以持久也可不持久,取決於使用者

設定生命週期: Response.Cookies["key"].Expires = DateTime.Now.AddDays(7);//儲存7天

問題:如果傳的是中文會亂碼

解決方案:輸入的文字用特定的編碼方式編碼。然後用該方式解碼

string a = HttpUtility.UrlEncode(值, System.Text.Encoding.GetEncoding("utf-8"));Response.Cookies["key"].Value = a;Response.Redirect("Default2.aspx");
if (Request.Cookies["user"] != null)          解碼{string a = HttpUtility.UrlDecode(Request.Cookies["key"].Value, System.Text.Encoding.GetEncoding("utf-8"));Label1.Text = a;}

(五)Application,比如說版本號碼,所有人擷取的都是同一個東西,使用範圍較小。

它是全域對象,全域只有這一個對象
只要被建立出來,所有人取的值都是一樣的
生命週期:永久
儲存位置:服務端

賦值:Application["key"]=值;
取值:Application("key");

(六)ViewState(瞭解)

可以理解成為病例

類似於中間過程,由於網頁的不固定性,點擊按鈕會重新整理,控制項賦得值藉助viewstate儲存,把重新整理前的值儲存成專門代碼。重新整理後再賦值給控制項

二、Repeater的Command操作(不常用)

1、ItemCommand事件 :在Repeater中所有能觸發事件的控制項,都會來觸發這一個事件

                                    後台建立:在Page_Load中  Repeater1.ItemCommand +=  ,然後雙擊Tab鍵建立

2、CommandName : 判斷點擊的是什麼按鈕,

                                後台調用:e.CommandName

3、CommandArgument : 觸發事件所傳遞過來的主索引值資料,放在這裡面 介面值綁定時要用  單引號 !!!!!! 

                                      後台調用:e.CommandArgument 

已刪除為例

   <asp:Button ID="Button1" CommandName="Delete" CommandArgument=<%#Eval("UserName") %> runat="server" Text="刪除" />  //前台代碼--------------------------------------------------------------------------------------後台代碼 protected void Page_Load(object sender, EventArgs e)    {        if (!IsPostBack)        {            Repeater1.DataSource = new UsersData().Select();            Repeater1.DataBind();        }        Repeater1.ItemCommand += Repeater1_ItemCommand;    }    void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)    {        if (e.CommandName == "Delete")        {            new UsersData().Delete(e.CommandArgument.ToString());        }                }    }

內建對象session ,cookic,Application,ViewState

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.