Cookie&&Session
Posted xiang-liang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie&&Session相关的知识,希望对你有一定的参考价值。
1、服务器发给浏览器要保存的数据。浏览器保存相关数据
HTTP是无状态协议;
无状态:服务器无法分辨每次的请求来自谁?
如果客户端来的时候能带上类似会员卡的东西,记录有卡号。
Cookie:在浏览器端缓存数据的一种技术
服务器发给浏览器的“会员卡”;
服务器让浏览器去保存一份数据,以后访问的时候带上相应的数据。
服务器发给浏览器
1、cookie创建发送给浏览器;响应头多了:Set-Cookie:username=leifengyang。
就是命令浏览器保存一个cookie;username=leifengyang
浏览器就保存这个字段,默认在一个会话期间只要访问我这个项目cookie都在
以后只要是请求当前项目下的资源都会携带。
2、获取;
Cookie[] cookies = request.getCookies();
3、删除:cookie的生命周期
1)、默认cookie是在会话期间有效(浏览器一直不关)
2)、cookie可以修改默认的存活时间
cookie.setMaxAge(0);
Set-Cookie:username=xiangliang; Expires=Thu, 01-Jan-1970 00:00:10 GMT
4、持久化cookie
cookie.setMaxAge(60*60) 表示一小时后cookie才会被删除(浏览器自己会删除)
5、设置cookie路径:告诉浏览器访问哪些资源会携带我这个cookie。
默认:访问当前项目下的任何东西都会携带cookie
6、修改cookie。
浏览器如何识别是否同一cookie 根据的cookie的name
利用同名cookie来进行cookie修改操作
Session:
服务器端保存数据的技术;域对象(在整个会话期间保存的数据在任意资源都可以取到)
作用:
域对象共享数据;
1、可以在cookie中保存用户身份。
1)、获取session
2、session保存数据共享数据
3、有生命周期
创建:第一次用session会创建一个新的session
1、第一次获取
html(使用servletrequest)
jsp(已经内置session获取好了)
销毁:
1、默认30分钟后session销毁
2、手动设置session多少秒后过期session.setMaxInactiveInterval(3);
3、使session立即失效session.invalidate();
1)、所以新的会话获取的session是新的,和cookie的生命周期有关系。浏览器打开关闭开启新会话并不会导致
之前的session销毁。只是找不到之前的session了。
2)、session在服务器有很多的垃圾。。。
4、cookie被禁用
导致会话控制会失效
使用url重写
当cookie被禁用,可以使用url重写(把要访问的地址动态的加上jsessionid)
5、session的活化和钝化
现象:服务器关闭重新启动,只要浏览器没关,还是能获取到session里面的内容
钝化:服务器关闭以后,会将session(序列化)保存硬盘中。可以在 work/当前项目下观察 SESSION.ser
活化:服务器再启动时,把之前的序列化好的文件加载进来。就会再次加载之前保存的session
SESSION.ser包含了session域中的所有内容
session域中的对象要能同session一起钝化到磁盘中必须实现序列化接口。
cookie机制:
cookie送咖啡(案例):
session创建:
session生命周期:
会话控制流程:
以上是关于Cookie&&Session的主要内容,如果未能解决你的问题,请参考以下文章