Cookie 和 Session

1、通過URL傳遞
   兩個頁面之間傳遞數據最好、後續麻煩最少、最簡單的方法就是通過URL傳遞。
 優點:簡單,直接,明確知道發給誰,數據不會亂。
 缺點:1、如果多個頁面或者不確定頁面之間要傳那麼就需要每次跳轉都帶着;2、不保密。

2、Cookie
      1、如果想自由的傳遞和讀取,用Cookie。Cookie是和站點相關的,並且每次向服務器請求的時候除了發送表單參數外,還會將和站點相關的所有Cookie都提交給服務器,是強制性的。Cookie也是保存在瀏覽器端的,而且瀏覽器會在每次請求的時候都會把和這個站點的相關的Cookie提交到服務器,並且將服務端返回的Cookie更新回數據庫,因此可以將信息保存在Cookie中,然後在服務器端讀取、修改。服務器返回數據除了普通的html數據外,還會返回修改的Cookie,瀏覽器把拿到的Cookie值更新本地瀏覽器的Cookie就可以。
    2、在服務器端控制Cookie案例,實現記住用戶名的功能。
               1》設置值的頁面:Response.SetCookie(new HttpCookie("UserName",username));  //生命週期是瀏覽器的生命週期。
                     設置值的頁面:
                                           HttpCookie cookie = new HttpCookie("Name", "xlt");
                                           cookie.Expires = DateTime.Now.AddDays(3); //表示三天後過期
                                           context.Response.SetCookie(cookie);
               2》讀取值的頁面:username = Request.Cookies["UserName"].Value;
    3、如果不設定Expires那麼生命週期則是關閉瀏覽器則終止,否則“最多”到Expires的時候終止。
    4、Cookie的缺點:還不能存儲過多信息,機密信息不能存,cookie是可以被清除的,不能把不能丟的數據存到Cookie中;Cookie的大小是有限制的,一般爲幾K,幾百K
    5、Cookie無法跨不同的瀏覽器。

3、submit :只有被點擊的submit的 name和value會被傳送給服務器。

Session的原理
1、Cookie不能存儲機密數據。如果想儲存,可以保存一個Guid到Cookie中,然後在服務器中建立一個以Guid爲Key,複雜數據爲Value全局Dictionary。放到Application中。
2、asp.net已經內置了Session機制,把上面的例子用ASP.NET Session重寫。普通的HttpHandler要能夠操作Session,要實現IRequiresSessionState接口。
3、Cookie是存在客戶端的,Session是存在服務器端的。目的是一樣的:保存和當前客戶端相關的數據(當前網站的任何一個頁面都能取到Session、Cookie)
4、Session有自動銷燬機制,如果一段時間內瀏覽器沒有和服務器發生任何的交互,則Session會定時銷燬,這也就是爲什麼一段時間沒操作,系統就會自動退出。

asp.net 如何設置單個session 過期時間?
在WEB.CONFIG中配置<sessionState mode="InProc" timeout="60"/>這是60分鐘後過期。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

發佈了33 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章