一:
網站開發中,為了保存用戶信息我們就會用到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。
...待續!