標籤:
一:
網站開發中,為了儲存使用者資訊我們就會用到session。
Session具有以下特點:
(1)Session中的資料儲存在伺服器端;
(2)Session中可以儲存任意類型的資料;
(2)Session預設的生命週期是20分鐘,可以手動設定更長或更短的時間。
我們在aspx頁面中的調用一般只需要這麼寫:<%=session["key"]=value %>;
擷取session時一般這麼寫:string username=session["username"],但是在給對象賦值的時候我們需要注意兩點
1:判斷是否為null
2:類型的轉換
例子:
//使用Session對象來傳送使用者的登入名稱,在另一頁中將使用者的登入名稱顯示出//使用Session對象儲存使用者登入名稱的代碼如下:Session.Remove("UserName");Session["UserName"] = txtName.Text;Response.Redirect("a.aspx");
這裡用的重新導向去跳轉到指定頁面;是要注意:如果我們的請求是通過Ajax方法的時候,重新導向是不起作用的!
好,那這裡讓我們分析一下Response.Redirect的跳轉原因:
->Response.Redirect是本地跳轉,並不服務端跳轉;是往瀏覽器端輸出一個響應碼,這個響應碼為301或者302,告訴瀏覽器跳轉。
二:
a:使用Session變數
使用Session變數是可以在頁面間傳遞值的的另一種方式,在本例中我們把控制項中的值存在Session變數中,然後在另一個頁面中使用它,以不同頁面間實現值傳遞的目的。但是,需要注意的是在Session變數儲存過多的資料會消耗比較多的伺服器資源,在使用session時應該謹慎,當然了,我們也應該使用一些清理動作來去除一些不需要的session來降低資源的無謂消耗。
釋放方式:session.remove();
session.removeAll();
session.Abandon();
b:session傳遞數組的用法:
protected void Button1_Click(object sender, EventArgs e) { ArrayList sArr = new ArrayList(); sArr.Add("0"); sArr.Add("1"); sArr.Add("2"); sArr.Add("3"); sArr.Add("4"); sArr.Add("5"); Session["Array"] = sArr; ArrayList sRarr = new ArrayList(); string ssMsg = ""; sRarr = (ArrayList)Session["Array"]; ssMsg = sRarr[3].ToString(); Response.Write("<script>window.alert(‘" + ssMsg + "‘)</script>"); }
c:使用Session驗證使用者登入
if (txtName.Text == "mr" && txtPassword.Text == "mrsoft"){Session["UserName"] = txtName.Text.Trim();Response.Redirect("a.aspx");}
Session對象預設失效期為20分鐘,使用者也可以在Web.Config中對其進行設定。
在用session的時候讓我想到我用過的viewdata,我感覺這兩個都能起到傳值的作用。
MVC中的弱類型,主要有ViewData和TempData
實則上應該都是字典,用於索引值對應關係,分別對應ViewDataDictionary以及TempDataDictionary。
ViewData只能在當前的HTTP請求中,不會像session一樣可以把資料帶到下一個HTTP請求。
TempData跟ViewData的區別是他是臨時性的,例如取代一些viewstatus一樣儲存用戶端的上一次資料。他的內部是通過session來儲存的。只要被取用一次後就自動清除session。
...待續!
C#中的Session