內置對象session ,cookic,Application,ViewState

1、內置對象

(一)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、超連接,或者收集服務器端的環境變量。html

(三)Session  相對全局對象瀏覽器

在不一樣的瀏覽器之間傳值,像銀行之類的網站爲了安全把用戶名密碼保存在session裏面。每一臺電腦訪問服務器,都會是獨立的一套session,key值都同樣,可是內容都是不同的。安全

賦值:Session["key"] = 值;服務器

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

 string a = Session["key"];session

優缺點:post

Session是很是安全的,由於它存在於服務器的內存中,取數據也是最快的;可是,Session不要濫用,由於會形成服務器內存溢出,致使服務器崩潰(爲了不同一帳號短期大量訪問因此設置了看不清的驗證碼)
Session裏面不要放大東西,若是不用那麼就會形成資源浪費。網站

Session生命週期:20分鐘(當一個帳號關閉遊覽器後,仍然會在服務器走完這20分鐘,用戶的每個會致使頁面刷新的操做都會使這20分鐘從新計時)編碼

不少網站,特別是涉及到moneyde ,用戶長時間不操做以後都要從新登入就是由於他的生命週期。url

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保存,把刷新前的值保存成專門代碼。刷新後再賦值給控件

2、Repeater的Command操做(不經常使用)

一、ItemCommand事件 :在Repeater中全部能觸發事件的控件,都會來觸發這一個事件

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

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

                                後臺調用:e.CommandName

三、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());
        }
        
        }


    }
相關文章
相關標籤/搜索