Cookie And Session用法解析
Cookie技术
- Cookie技术使用场景:
将会话数据保存在浏览器客户端。 - Cookie原理:
2.1 服务器端创建Cookie数据,然后通过set-cookie的响应头把cookie数据发送给浏览器保存。
响应头:例如set-cookie:name=admin
2.2 浏览器第一次访问服务器,同时将cookie数据保存在浏览器cookie目录中。
2.3 浏览器在下次访问服务器时,会带cookie数据访问服务器,通过cookie的请求头将数据发送给服务器。
请求头:例如cookie:name=admin
2.4 服务器接受浏览器发送的cookie数据
request.getCookies() - Cookie常用API方法:
3.1 创建cookie对象,用于保存会话数据,
new Cookie(String name,String value);
3.2 设置cookie对象
void setPath(String url);设置cookie有效路径,表示只有访问此路径的时候才会带cookie数据。
void setMaxAge(int time);设置cookie有效时间。
void setValue(String value);设置value值;
3.3 发送浏览器数据到浏览器保存。
response.addCookie(cookie);
3.4 接收浏览器发送的cookie数据
Cookie[] request.getCookies(); - Cookie细节:
4.1设置cookie的有效路径:setPath(uri);如果访问的路径是有效路径,那么下次访问的时候请求会带着cookie数据到服务器。
4.2设置cookie有效时长:setMaxAge(int time);
time:
正整数—-cookie数据保存在浏览器的缓存目录中(硬盘中)。例如10。10秒之后就cookie就会丢失。(从最后一次访问cookie开始计算)。
负数—-cookie数据保存在浏览器内存中,浏览器关闭,cookie数据就会丢失。
0—-删除同名的cookie
4.3可以同时往浏览器放松多cookie数据,但是必须是字符串类型。浏览器一般只允许存储300个cookie,每个站点最多存放20个cookie,每个cookie大小限制在4kb.
Session技术
Session技术使用场景:
session的数据保存在服务器端(服务器端的内存中)session原理:
2.1服务器创建Session对象,分配一个唯一的标记(JSESSIONID),会话数据保存sessino对象中,然后服务器把JSESSION作为cookie发送给浏览器保存。
响应头:JSESSIONID=7EBC5D0B44D9D3DDE7FAD83C077E3D3E
2.2浏览器得到JSESSIONID的cookie,保存在浏览器的目录中。
2.3浏览器在下次访问服务器时,带着JSESSIONID的cookie数据访问服务器。
请求头:Cookie: JSESSIONID=7EBC5D0B44D9D3DDE7FAD83C077E3D3E
2.4服务器得到JSESSIONID,在服务器内存中查询是否存在对应的编号的session对象。
2.5如果找到对应的session对象,返回这个对象。session核心方法:
HttpSession session=request.getSession();session细节:
4.1设置session有效时长
注意:关闭浏览器并不会导致session对象销毁。
4.1.1服务器默认30分钟收回session对象,最后一次访问session开始计算。
4.1.2设置session代码有效时长
void setMaxInactiveInterval(int interval) 以秒为单位
4.1.3全局设置session的有效时长,在web.xml文件中设置,以分为单位
4.1.4立即手动销毁session对象:invalidate()
4.2 request.getSession()方法
HttpSession getSession()/getSession(true)创建或得到session对象。当前没有找到对应的session 对象,创建新的session对象
HttpSession getSession(false) 得到session对象。如果找不到,则返回null