Session和cookie是网络编程中很重要的两个东西
介绍:
Session:在计算机的网络应用中,称为“会话控制”。Session对象储存特定用户会话所需的属性及配置信息,这样当用户应用程序的web页之间跳转时,储存在session对象中的变量将不会丢失,而是在整个用户会话的过程中一直存在下去,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。
它是一个最常用的一个用法。
Cookie:中文饼干的意思,不过在网络应用中的作用是由网络服务器发送出来以存储在网络浏览器上,从而下次这位用户又回到该网络服务器时,可从该浏览器上继续阅读此信息。让浏览器记住这位用户的特定信息,这对于用户来说是很重要的一个作用,节省了很多用户再次去查找该信息的时间。
Session的特点:
不是线程安全的,应该避免多个线程共享同一个Session实例
Session实例是轻量级的,所谓轻量级:是指他的创建和删除不需要消耗太多资源
Session对象内部有一个缓存,被称为Hibernate第一缓存,他存放被当前工作单元中加载的对象,每个Session实例都有自己的缓存
Cookie的特点:
在同一个页面设置cookie它的作用顺序上是从后往前的进行的。
在一个目录页面里设置的 Cookie 在另一个目录的页面里是看不到的
它必须在HTML文件的内容输出之前设置。
本质:
Session是相当于在服务器的那层中,每一个浏览器去连接它,它都会分配一块空间来单独存放与它在对话的浏览器的体型,而且它一般有一段保存的时间,大部分为30分钟,也就是说当用户超过30分钟,没有再去登录它,它就会失效。
Cookie是一个数据记录的格式,它是用在浏览器,浏览器用于记录,不是本身的作用 是服务器要求,需要服务器返回一个生成cookie的要求,也是有一段时效的,当一段时间没用后到达有效时效 就会被服务器删除。
比如你把用户信息登录,它就在浏览器中把用户信息放在那,浏览器就以一个cookie的数据本件存在内部。
根据HTTP协议的一个无状态效果,也就是说如果你不发送一个代表你身份的一个标识符,比如一串数字或者你的ID,服务器或者浏览器都无法区分相互的身份,是每没有状态的。
比如你打开一个网站查了一个东西,隔了段时间又来这个网站想找这个东西,结果没有任何记录 又得你重新登录搜索。
但是用户有了登录的需求,我们就得保存用户的信息,因为不可能每次都让用户重新登录。
而且,在制造网页的过程中 我们也是非常的麻烦,比如推送客户信息什么的。
所以我们得实现用户追踪,而seeion和cookie得作用就是用户追踪,seeion就是在服务器端追踪用户,就是把一段时间的会话或者网站浏览记录保存一段时间。cookie就是在服务器要求记的信息记下来,当你下次打开这网站的时候cookie就会发送给服务器。就是这样实现了用户追踪。
它们都有不同的缺陷,所以当它们联合在一起用的时候效果才会更好。当一个用户从一个网站访问到另外一个网站时,这些Session信息并不会随之迁移过去,只有依靠cookie才能过去。
例:打开一个百度的网页
在这段代码中就包括了登录到百度的信息,Cookie是加密了的信息,不容易被盗取。在以前是以文件的方式储存,可以被拷贝出去,然后将cookie在另一个网站打开,另一个网站也就有了你登录过的信息。就是等于盗取你登录到这个网站的信息。因为客户端的session信息是储存在cookie中的,而Session 的作用就是它在 Web服务器上保持用户的状态信息供在任何时间从任何设备上的页面进行访问。因为浏览器不需要存储任何这种信息,所以可以使用任何浏览器。
浏览器的回复:Requset Headers
Set-Cookie 就是服务器要浏览器记录的cookie,这是服务器返回给浏览器的命令,浏览器就会根据这些信息执行,然后产生一个cookie.大多数都是加密后的内容,path里面写的是路径。