Seesion和Cookie的区别和联系

Http是无状态的协议,那如何标记两次请求是来自统一客户端(或浏览器)呢?

1.在客户端保存用户信息,以后每次请求带上该信息(Cookie)

2.服务器端保存用户信息,并告知客户端一个标识码,以后每次请求都带上这个标识码(Session)

SessionCookie联系

所以具体来说Cookie机制采用的是在客户端保持状态的方案,而Session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于采用服务器端保持状态的方案在客户端也需要保存一个标识,所以Session机制可能需要借助于Cookie机制来达到保存标识的目的。但实际上它还有其他选择,如URL重写

SessionCookie区别

Session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会由服务器生成一个唯一的SessionID,用该SessionID为标识符来存取服务器端的Session存储空间。而SessionID这一数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这一SessionID提交到服务器端,来存取Session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用Cookie,那么Session也会失效。 

服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。 

可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。 

Cookie是客户端的存储空间,由浏览器来维持。


参考:http://beyond99.blog.51cto.com/1469451/543282/

你可能感兴趣的:(Seesion和Cookie的区别和联系)