Cookie和Session都是爲了解決HTTP協議的無狀態問題,存儲HTTP通信中客戶端與服務器之間的會話狀態。html
不一樣的是Cookie依賴HTTP請求頭與響應頭實現且存儲在客戶端,而Session存儲在服務器端,Session能夠經過Cookie實現,也可使用URL回寫的方式實現。html5
若是若是瀏覽器不支持 Cookie,也可使用如下辦法,記錄標識符:java
Set-Cookie - 服務器響應頭,用於告訴客戶端要設置Cookie
Cookie - 請求頭,根據Set-Cookie設置並保存到客戶端的Cookie值,會在再次發送HTTP請求時經過這個請求頭一同發送到服務器spring
Cookie很好的解決了HTTP通信中狀態問題,但其自己也存在一些問題,如:apache
與Cookie相比Session有必定的優點:後端
Java API Servlet中的會話由javax.servlet.http.HttpSession接口的實現表示。可經過HttpServletRequest方法getSession()或getSession(boolean create)進行訪問。根據選擇的方法,該方法的調用將致使如下狀況之一:瀏覽器
好的,咱們已經知道一個會話與當前請求相關聯,而且能夠經過兩種不一樣的方法進行檢索。假設咱們檢索了所需的會話對象。如今咱們能夠將一些數據放入(方法putValue()或setAttribute()),從(getValue())獲取一些數據或刪除一些數據(removeValue()或removeAttribute())。請注意,在2.2版本的API Servlet中,value已由attribute代替。這就是爲何咱們要使用兩種方法來設置或刪除會話信息的緣由。緩存
會話與請求相關聯,因爲會話ID,會話能夠在多個請求中持續存在。可是,能夠經過如下三種方式中斷持久性:
-會話超時:當在一段時間內不使用會話時。
-服務器故障:當服務器關閉時,會話可能會丟失(要了解更多信息,請直接參閱會話恢復部分)。
-顯式會話無效:經過調用HttpSession方法invalidate(),咱們能夠顯式使整個會話無效。tomcat
Spring Session提供了一種API和實現,用於管理用戶的會話信息,同時使其輕鬆地支持集羣會話,而沒必要依賴於特定於應用程序容器的解決方案。它還提供與如下內容的透明集成:安全
http://jm.taobao.org/2013/06/13/2769/
緩存服務器緩存了header
https://docs.spring.io/spring-session/docs/current/reference/html5/#introduction