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