session
session:是在服務器端狀態(tài)保持機制,提供了一種把信息保存在服務器內存中的一種方法摩疑,它能存儲任何數(shù)據(jù)類型斋扰,包括用戶自定義的數(shù)據(jù)類型陵刹。
每個客戶端的session是獨立存儲的缕坎,每個session對象用于存儲對應用戶的信息持搜,用戶不能訪問和修改其他用戶的session。在服務器端有一個session池也糊,用來存儲每個用戶的session信息毫玖。為了區(qū)別掀虎,給每個session對象增加一個sessionID凌盯,而且這個sessionID是唯一的,然后返回給瀏覽器烹玉。用戶下次訪問時驰怎,帶著這個sessionID,從session池中找到對應的session對象二打。每個用戶都有自己的一個session對象县忌,不能對其他用戶的session對象進行操作。
sessionID是以cookie的形式返回給瀏覽器端址儒,瀏覽器將接收到的存儲sessionID的cookie保存在內存中(瀏覽器端)
session不能跨進程使用(不能跨瀏覽器使用)
當調用session的abandon方法時芹枷,強制性關閉,如注銷
session.Abandon();//銷毀服務端的session對象
session.Clear();//清除session中鍵值對
cookie
cookie:是一個在客戶端狀態(tài)保持的文本文件莲趣,是一種能夠讓網(wǎng)站服務端把少量數(shù)據(jù)保存在客戶端(瀏覽器)的內存或者硬盤鸳慈,并且能夠讀取出來的一種技術。
cookie是由服務端生成喧伞,發(fā)送給user-Agent(一般是瀏覽器走芋,以下以瀏覽器來說),瀏覽器會將cookie中的key-value鍵值對寫入到某個目錄下的文本文件內。下次請求同一網(wǎng)站時就發(fā)送該cookie給服務器(前提是瀏覽器設置為啟用cookie)潘鲫。cookie的鍵和值可以由服務端開發(fā)自己定義翁逞。這樣服務器就知道訪問用戶是否是合法用戶,以及用戶是否已經(jīng)登錄過溉仑。
服務器可以利用cookie包含信息的任意性來篩選并維護這些信息挖函。
cookie最典型的應用是判斷用戶是否登錄網(wǎng)站,用戶可能得到提示:是否記住用戶名密碼以便在下次訪問該網(wǎng)址時不用輸入用戶名密碼而可以直接登錄浊竟。這就是cookie的功勞怨喘。另一個重要的應用場景就是購物車之類的場景:用戶可能在一段時間內在同一家網(wǎng)站的不同頁面選擇不同商品,這些信息都會被寫入cookies振定,以便在最后付款時提取信息必怜。
瀏覽器會自動將屬于該網(wǎng)站的cookie文件發(fā)送給該網(wǎng)站服務端。通過域名來區(qū)分cookie文件后频。域名和cookie文件有一一映射的關系梳庆。
cookie的缺點:不能存儲過多的信息。
cookie和session的生存周期(以20分鐘為例)的區(qū)別:
(1)cookie的生命周期是累計的卑惜,從創(chuàng)建時膏执,就開始計時,20分鐘后残揉,cookie生命周期結束胧后,
(2)session的生命周期是間隔的,從創(chuàng)建時抱环,開始計時如在20分鐘壳快,沒有訪問session纸巷,那么session生命周期被銷毀
但是,如果在20分鐘內(如在第19分鐘時)訪問過session眶痰,那么瘤旨,將重新計算session的生命周期
(3)關機會造成session生命周期的結束,但是對cookie沒有影響