Post 傳值(看不見的傳值) Get 傳值(看得見的傳值)
Session - 全局變量組
存放位置:服務端
作用:只要里面有內容,那么這個網站中所有的C#端都能訪問到這個變量 —— object類型
格式:
web1 后台代碼:
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; } //按鈕點擊事件 void Button1_Click(object sender, EventArgs e) { string s = TextBox1.Text; Session["un"] = s; } }
Session 是個一個object類型的“組”,可以放任何東西,string、int、數組等等
使用時先進行判斷Session是否是Null,不為空時進行賦值(李獻策lxc)
web2 后台代碼:
public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Session["un"] != null) { Label1.Text = Session["un"].ToString(); } } }
優點:安全、方便、全局訪問無限制
劣勢:消耗服務器內存資源(每一個用戶是一條獨立的通道,每一條通道有若干的Session,如果同時很多人訪問,那么會造成服務器崩潰)
生命周期:20分鍾
網頁打開時會打開一個新的Session,此Session會存在20分鍾,結束時自動清空,如果Session重新讀取時將重新計時
當關閉網頁時,Session是不會取消的,仍然在倒計時;再重新打開網頁時,會打開新的Session,舊的Session仍在后台計時
注意:1、不要大量數據在Session里,盡量不要放集合
2、臨時Session取完無用后記得清空(李獻策lxc)
Cookie - “全局變量組”
存放位置:客戶端電腦硬盤上
作用:保存數據信息,只能保存字符串,全局訪問 —— string類型
賦值:response 取值:request 判斷時不用value
格式:
web1 后台代碼:
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; } //按鈕點擊事件 void Button1_Click(object sender, EventArgs e) { string s = TextBox1.Text; Response.Cookies["un"].Value = s; } }
Cookies 是一個String類型的“組”,只能存放字符串類型,以文本文檔字符串類型存放在客戶端某個地方
使用時先進行判斷Cookies是否是Null,不為空時進行賦值(李獻策lxc)
web2 后台代碼:
public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Request.Cookies["un"]!=null) { Label1.Text = Request.Cookies["un"].Value; } } }
優點:不消耗服務器資源、全局訪問、只能保存字符串
劣勢:消耗電腦資源、不安全(Cookie會被抓取)、不可靠(用戶隨時可以刪除)
注意:不要用Cookie保存密碼(登錄成功后才會將用戶名賦值給Cookie)
分類:會話Cookie 與 持久Cookie
生命周期:
1、會話Cookie - 20分鍾
網頁打開時會打開一個新的Cookie,此Cookie會存在20分鍾,結束時自動清空,如果Cookie重新讀取時將重新計時
刪除辦法:
(1)瀏覽器一關,此次訪問已中斷
(2)沒有任何新的提交,20分鍾后過期
(3)手動清除瀏覽器Cookie
2、持久Cookie - 可以設置時間
刪除辦法:(李獻策lxc)
(1)代碼設置過期
(2)手動清除瀏覽器Cookie
持久Cookie如何制作?
前台界面 - 當復選框被選中時,保持持久Cookie:
后台代碼:
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; } //按鈕點擊事件 void Button1_Click(object sender, EventArgs e) { string s = TextBox1.Text; if (s == "adimn" && TextBox2.Text == "1234") { Response.Cookies["un"].Value = s; //被選中時設置[持久Cookie]時間 if (CheckBox1.Checked) { Response.Cookies["un"].Expires = DateTime.Now.AddDays(3); } Response.Redirect("Default2.aspx"); } } }
如何刪除持久cookie?
后台代碼:
public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Request.Cookies["un"]!=null) { Label1.Text = Request.Cookies["un"].Value; } Button1.Click += Button1_Click; } //點擊按鈕清除Cookie並退回登錄界面 void Button1_Click(object sender, EventArgs e) { Response.Cookies["un"].Expires = DateTime.Now.AddDays(-10); Response.Redirect("Default.aspx"); } }
擴展一:
沒有登錄是無法跳至主頁面的 - 登錄驗證 - 不放入 IsPostBack 中
public partial class Default2 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Request.Cookies["un"] != null) { Label1.Text = Request.Cookies["un"].Value; } //登錄驗證:如果未登錄跳至登錄頁面 else { Response.Redirect("Default.aspx"); } Button1.Click += Button1_Click; } //點擊按鈕清除Cookie並退回登錄界面 void Button1_Click(object sender, EventArgs e) { Response.Cookies["un"].Expires = DateTime.Now.AddDays(-10); Response.Redirect("Default.aspx"); } }
擴展二:
跳轉至主頁面后,地址欄仍然顯示的是登錄界面的地址
特點:用地址欄傳值,但不會在地址欄中顯示傳值的內容(李獻策lxc)
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { Button1.Click += Button1_Click; } //按鈕點擊事件 void Button1_Click(object sender, EventArgs e) { string s = TextBox1.Text; if (s == "adimn" && TextBox2.Text == "1234") { Response.Cookies["un"].Value = s; //Response.Redirect("Default2.aspx"); Server.Transfer("Default2.aspx"); } } }