jsp中session 和 cookies区别
?為什么登陸后,只要不關閉瀏覽器,session就能一直存在?當然session的數據是保存在服務器上的,但服務器是怎么識別這些數據都是誰的呢?答案是sessionid,每一個瀏覽者都唯一的sessionid,這就很好的區分了不同瀏覽者的不同session了.sessionid是怎么產生的?應該是第一次訪問服務器的時候隨即生成的.假如是111,然后他的登陸信息是true,服務器就知道sessionid為111已經登陸了,這些信息都存在了服務器上了.但當瀏覽者繼續操作的時候,也就是打開該系統的另一個頁面的時候sessionid怎么辦?如何傳遞?打開另一個頁面的時候其實相當于重新訪問系統,如果沒有特殊的處理機制,系統會再次重新分配一個sessionid的,這樣的話就失去意義了~!所以sessionid在第一次訪問后應該存在了客戶端.能寸哪呢?當然,只能寸在cookie中了,這就是為什么關閉cookie,session就失去作用了
???保存session id的幾種方式
A.保存session id的方式可以采用cookie,這樣在交互過程中瀏覽器可以自動的按照規則把這個標識發送給服務器。
B.由于cookie可以被人為的禁止,必須有其它的機制以便在cookie被禁止時仍然能夠把session id傳遞回服務器,經常采用的一種技術叫做URL重寫,就是把session id附加在URL路徑的后面,附加的方式也有兩種,一種是作為URL路徑的附加信息,另一種是作為查詢字符串附加在URL后面。網絡在整個交互過程中始終保持狀態,就必須在每個客戶端可能請求的路徑后面都包含這個session id。
C.另一種技術叫做表單隱藏字段。就是服務器會自動修改表單,添加一個隱藏字段,以便在表單提交時能夠把session id傳遞回服務器。
?
二十五、session cookie和session對象的生命周期是一樣的嗎
當用戶關閉了瀏覽器雖然session cookie已經消失,但session對象仍然保存在服務器端
二十六、是否只要關閉瀏覽器,session就消失了
程序一般都是在用戶做log off的時候發個指令去刪除session,然而瀏覽器從來不會主動在關閉之前通知服務器它將要被關閉,因此服務器根本不會有機會知道瀏覽器已經關閉。服務器會一直保留這個會話對象直到它處于非活動狀態超過設定的間隔為止。
之所以會有這種錯誤的認識,是因為大部分session機制都使用會話cookie來保存session id,而關閉瀏覽器后這個session id就消失了,再次連接到服務器時也就無法找到原來的session。
如果服務器設置的cookie被保存到硬盤上,或者使用某種手段改寫瀏覽器發出的HTTP請求報頭,把原來的session id發送到服務器,則再次打開瀏覽器仍然能夠找到原來的session。
恰恰是由于關閉瀏覽器不會導致session被刪除,迫使服務器為session設置了一個失效時間,當距離客戶上一次使用session的時間超過了這個失效時間時,服務器就可以認為客戶端已經停止了活動,才會把session刪除以節省存儲空間。
由此我們可以得出如下結論:
關閉瀏覽器,只會是瀏覽器端內存里的session cookie消失,但不會使保存在服務器端的session對象消失,同樣也不會使已經保存到硬盤上的持久化cookie消失。
?
?????打開兩個瀏覽器窗口訪問應用程序會使用同一個session還是不同的session
通常session cookie是不能跨窗口使用的,當你新開了一個瀏覽器窗口進入相同頁面時,系統會賦予你一個新的session id,這樣我們信息共享的目的就達不到了。
此時我們可以先把session id保存在persistent cookie中(通過設置session的最大有效時間),然后在新窗口中讀出來,就可以得到上一個窗口的session id了,這樣通過session cookie和persistent cookie的結合我們就可以實現了跨窗口的會話跟蹤。
?
2.cookies的屬性有:Domain(域):哪個站點發的哪個站點拿走
???????????????????Expires:是否過期
???????????????????Haskeys:是否包含關鍵
???????????????????path:存放的路徑
???????????????????secure:是否安全
注:---cookies的設置在 sever端設置,路徑與域一起構成cookie的作用范圍
?這個是什么意思的啊?為什么會是在服務器端進行設置的呢?
??---若不設置過期時間,則表示這個cookie的生命期為瀏覽器會話期間,關閉瀏覽器窗口,cookie就消失。這種生命期為瀏覽器會話期的cookie被稱為會話cookie。會話cookie一般不存儲在硬盤上而是保存在內存里,當然這種行為并不是規范規定的。若設置了過期時間,瀏覽器就會把cookie 保存到硬盤上,關閉后再次打開瀏覽器,這些cookie仍然有效直到超過設定的過期時間。存儲在硬盤上的cookie可以在不同的瀏覽器進程間共享,比如兩個IE窗口。而對于保存在內存里的cookie,不同的瀏覽器有不同的處理方式
IE與FF的區別哦!FF是共享的而IE當打開不同的窗口的時候是不共享 的
3.session(會話):適用于同一客戶在一個站點,不同頁面上的瀏覽;適用于同一客戶在一個頁面上,不斷的刷新。
6.當程序需要為某個客戶端的請求創建一個session時,服務器首先檢查這個客戶端的請求里是否已包含了一個session標識(稱為session id),如果已包含則說明以前已經為此客戶端創建過session,服務器就按照session id把這個session檢索出來使用(檢索不到,會新建一個),如果客戶端請求不包含session id,則為此客戶端創建一個session并且生成一個與此session相關聯的session id,session id的值應該是一個既不會重復,又不容易被找到規律以仿造的字符串,這個session id將被在本次響應中返回給客戶端保存。
IE中:
有效的窗中包括
1.Session對象只在建立Session對象的窗口中有效。
2.在建立Session對象的窗口中新開鏈接的窗口
無效的窗口包括
1.直接啟動IE瀏覽器的窗口
2.不是在建立Session對象的窗口中新開鏈接的窗口
?
?
文章出處:DIY部落(http://www.diybl.com/course/3_program/java/javashl/20090306/158663.html)
轉載于:https://www.cnblogs.com/yanfan/archive/2011/05/28/2989487.html
總結
以上是生活随笔為你收集整理的jsp中session 和 cookies区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么保护泰山地区的土壤资源?
- 下一篇: 怎么保护泰山地区的水资源?