【JavaWeb】带图认识Cookie和Session
【前言】
接触了这么长时间的web开发,问个问题。什么是会话?
会话会话,就像你拿起电话拨号打电话又挂电话一气呵成的整个过程。在浏览器中呢,就是用户打开一个浏览器,点击多个超链接,访问服务器的多个web资源,然后关闭浏览器。整个过程称为一个会话。
保存会话数据的两种技术为cookie和Session。本篇博客简介cookie和session实现原理和区别对比。希望可以给读者带来收获~【Cookie】
Cookie 是客户端技术,程序把每个用户的数据以cookie的形式,给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据。这样,web资源处理的就是用户各自的数据了。
一个cookie只能标识一种信息,至少含有一个标识该信息的名称和设置值。
一个web站点可以给一个web浏览器发送多个cookie,一个web浏览器也可以存储多个web站点提供的cookie。浏览器一般只允许存放300个cookie,每个站点最多存放20个cookie,每个cookie大小限制为4KB。
如果创建了一个cookie,并将它发送到浏览器,默认情况下它是一个会话级别的cookie。用户退出浏览器之后即被删除。如果希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0,则是命令浏览器删除该cookie。
【Session】
Session 是服务器端技术,服务器再运行时,可以为每一个用户的浏览器,创建一个其独享的session对象。由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再访问服务器中其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。以购买商品为例:
那么,服务器怎么知道应该调用哪个session呢?服务器时如何实现一个session为一个用户浏览器服务的呢?
每个session创建的时候都会有一个ID,ID会通过cookie回显给浏览器。所以,session一定意义上又是基于cookie的。
session和cookie的主要区别:
cookie是把用户的数据写给用户的浏览器。
session技术把用户的数据写到用户独占的session中。
大型商务网站大多选用cookie,session占用内存太大。