Cookie 和Session
会话技术
* 基本概念:指用户开一个浏览器,访问一个网站,只要不关闭该浏览器,不管该用户点击多少个超链接,访问多少资源,直到用户关闭浏览器,整个过程我们称为一次会话
* 用处: 登录网站或者论坛的时候询问是否要自动登录,会话技术可以让下次登录的时候不用输入密码。
* 会话跟踪技术包括Cookie和Session
Cookie和Session
Cookie
1. 是什么
通知客户端保存键值对的一种技术
2. 有什么用
* cookie的流程:浏览器访问服务器,如果服务器需要记录该用户的状态,就使用response向浏览器发送一个Cookie,浏览器会把Cookie保存起来。当浏览器再次访问服务器的时候,浏览器会把请求的网址连同Cookie一同交给服务器。
3. 用的方法
* Cookie API
* Cookie类用于创建一个Cookie对象
* response接口中定义了一个addCookie 方法,它用于在其响应头中增加一个相应的Set-Cookie头字段
* request接口中定义了一个getCookie方法,用户获取客户端提交的Cookie
* Cookie值的修改:
* 方案一:
1. 先创建一个要修改的同名(key相同的)的Cookie对象
2. 在构造器,同时赋予新的Cookie的值
3. 调用 response.addCookie(Cookie)
* 方案二:
1. 先查找到需要修改的Cookie对象
2. 调用setValue()方法赋予新的Cookie值
3. 调用response.addCookie()通知客户端保存修改
* 设置Cookie的声明周期:
* setMaxAge() 正数表示在指定的秒数后过期,负数 :表示浏览器一关,Cookie就会被删除, 零 :表示马上删除Cookie。
* 正常情况下它的默认值是 -1;
* Cookie 的path属性可以有效的过滤哪些Cookie可以发送给服务器 。 比如发给百度的Cookie不会发给Google
Session 会话(Session技术底层基于Cookie技术实现)
1. 是什么
1. 是一个接口(HttpSession)
2. 也是会话。用来维护一个客户端和服务器之间关联的一种技术
3. 每个客户端都有自己的一个Session会话
2. 有什么用:Session会话中经常用啦保存用户登录之后的信息
3. 如何用
1. 创建Session和获取(id号,是否为新)
* request.getSession() 第一次调用时创建,之后调用都是为了获取之前创建好的Session会话对象
* isNew() 是为了判断是不是刚创建出来的,是不是新的
* 每一个会话都有一个身份证号,也就是ID的值,并且它是唯一的
* getid() 获取Session的会话id值
2. 存数据 request.getSession.setAttribute()
3. 取数据 request.getSession.getAttribute()
4. 生命周期控制 public void setMaxInactiveInterval(int interval) 设置Session的超时时间,以秒为单位。 值为正数的时候是设置的时间,负数 :表示永不超时
* public void invalidate() 让当前Session会话马上超时
* 默认时长是 30 分钟
* 也可以在Tomcat的配置文件 web.xml中进行配置,默认是配置30分钟
* 超时值指的是客户端两次请求的最大间隔时长
一些理解图
浏览器与Session
Session超时理解
免用户名输入
Cookie的创建