Cookie和Session小知识

Cookie和Session小知识

一、会话技术

1、概念
浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开连接便结束会话,一次会话中可以包含多次请求和响应。

2、功能
一次会话的范围内可以进行多次请求和响应,会话过程中共享数据。

3、方式
(1)客户端会话技术:Cookie
(2)服务器端会话技术:Session

二、Cookie

1、概念
客户端会话技术,服务器给客户端,将数据保存到客户端

2、使用流程
(1)创建Cookie对象,绑定数据

new Cookie(String name, String value)

(2)发送Cookie对象

 response.addCookie(Cookie cookie)

(3)获取Cookie数据

Cookie[]  request.getCookies() 

3、实现原理
基于响应头set-cookie和请求头cookie实现

4、生命周期
(1)默认情况下,当浏览器关闭后,Cookie数据被销毁
(2) 持久化存储:

setMaxAge(int seconds)
正数:将Cookie数据持久化存储写到硬盘的文件中, 并指定cookie存活时间
负数:默认值
零:删除cookie信息

(3)具体实例

cookie.setMaxAge(0); 	//设置立即删除
cookie.setMaxAge(100); //100 秒

5、存储中文
中文数据用URL编码,不支持特殊字符

6、访问路径

//用于指定只有请求了指定的域名,才会带上该cookie
cookie.setDomain(".csdn.com");
//只有访问该域名下的xxx的这个路径地址才会带cookie
cookie.setPath("/xxx");

7、共享问题
(1)同一个tomcat服务器中多个web项目

默认情况下cookie不能共享
setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录
					如果要共享,则可以将path设置为"/"

(2)不同tomcat服务器间

 setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享
 setDomain(".csdn.com"),那么1111.csdn.com和222.baidu.com中cookie可以共享

8、注意
(1)cookie存储数据在客户端浏览器
(2)浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)

三、Session

1、概念
HttpSession,服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。

2、常用方法
(1) 获取HttpSession对象:

HttpSession session = request.getSession();

(2) 使用HttpSession对象:

Object getAttribute(String name)  
void setAttribute(String name, Object value)
void removeAttribute(String name)  
String id = session.getId()	//获得session会话ID
session.invalidate()		//强制删除数据

3、生命周期
(1)服务器关闭时销毁
(2) invalidate()方法
(3) 默认失效时间为30分钟

4、注意事项
(1) 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?

默认情况下,不是。
如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
				 Cookie c = new Cookie("JSESSIONID",session.getId());
		         c.setMaxAge(60*60);
		         response.addCookie(c)

(2)客户端不关闭,服务器关闭后,两次获取的session是同一个吗?

不是同一个,但是要确保数据不丢失。
tomcat自动完成以下工作
session的钝化:
在服务器正常关闭之前,将session对象系列化到硬盘上
session的活化:
在服务器启动后,将session文件转化为内存中的session对象

5、特点
(1) session用于存储一次会话的多次请求的数据,存在服务器端
(2) session可以存储任意类型,任意大小的数据

四、session与cookie区别

1、session存储数据在服务器端,cookie在客户端
2、session无数据大小限制,cookie具有数据大小限制
3、session数据安全,Cookie相对于session不安全(存储于客户端)

posted @ 2020-03-06 19:54  李泽坤  阅读(85)  评论(0编辑  收藏  举报