概述:
具體來說cookie機制採用的是在用戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。
同時我們也看到,由於才伺服器端保持狀態的方案在用戶端也需要儲存一個標識,所以session
機制可能需要藉助於cookie機制來達到儲存標識的目的,但實際上還有其他選擇。
引自:JSP入門 - 開發人員-萬維共用站(dev.w3pub.com)
論證:
如果session和cookie無關,伺服器如果判斷那個session是屬於那個使用者的呢。唯一判斷的方法就是往用戶端寫入一個sessionid,然後每次都要比較用戶端的sessionid和服務端的sessionid時候一致。不一致session就會失效。我把我的瀏覽器cookie禁用後csdn和網易的社區就告訴我已經逾時了。你可以試一下。在jsp中可以通過重寫url的方法來解決這個問題,就是把sessionid加到url後面。你還可以登陸到sina的郵件系統看一下,它的url後面都是跟著一大段字元的。
引自: Java / Web 開發 - CSDN社區 community.csdn.net
儲存session id的幾種方式
A.儲存session id的方式可以採用cookie,這樣在互動過程中瀏覽器可以自動的按照規則把這個標識發送給伺服器。
B.由於 cookie可以被人為的禁止,必須有其它的機制以便在cookie被禁止時仍然能夠把session id傳遞迴伺服器,經常採用的一種技術叫做URL 重寫,就是把session id附加在URL路徑的後面,附加的方式也有兩種,一種是作為URL路徑的附加資訊,另一種是作為查詢字串附加在URL後 面。網路在整個互動過程中始終保持狀態,就必須在每個用戶端可能請求的路徑後面都包含這個session id。
C.另一種技術叫做表單隱藏欄位。就是伺服器會自動修改表單,添加一個隱藏欄位,以便在表單提交時能夠把session id傳遞迴伺服器。
引自:JSP入門 - 開發人員-萬維共用站(dev.w3pub.com)
定義:
The servlet container uses this interface to create a session between an HTTP client and an HTTP server. The session persists for a specified time period, across more than one connection or page request from the user. A session usually corresponds to one user, who may visit a site many times. The server can maintain a session in many ways such as using cookies or rewriting URLs.
引自: HttpSession (Servlet API Documentation)
結論:
不管是cookie還是url都是為了在用戶端儲存一個唯一標記, 下載再訪問時, 瀏覽器才知道這是哪個客戶, 在session中找到這個客戶前面的資料. 因為放在url中比較麻煩些, 一般都在cookie裡面在IE中自訂安全選項, 選擇接受cookie時提示, 就會看到每次session開始的時候會給你一個cookie, 裡面的值是唯一的.cookie和url都是在訪問頁面的時候提交.