会话:当用户打开浏览器的时候,访问不同的资源,直到用户将浏览器关闭,可以认为这是一次会话.
http协议是无状态的协议,一旦数据交换完毕,客户端和服务器端的连接就会关闭,再次交换数据需要建立新的连接.这就意味着服务器无法从连接上跟踪会话
cookie:浏览器端会话技术(cookie数据存放在客户的浏览器上)
session:服务器端会话技术(session数据存放在服务器上);它们两个都可以弥补http无状态的不足
Cookie从何而来?
1、浏览器向服务器发送请求
2、服务器接收请求,生成一个cookie对象保存"标识"数据
3、然后把cookie对象放在响应头,一并发回浏览器
4、浏览器取出cookie对象的数据保存在浏览器的缓存中
5、再次访问时请求头携带cookie数据发送到服务器
6、服务器根据cookie的数据作出相应处理
Cookie的内容是存在浏览器端,默认是浏览器关闭,Cookie的内容就取消。除非设置了Cookie的过期时间。session是需要借助cookie才能正常工作的,如果客户端完全禁止cookie,session将失效。Session的生命周期默认是30分钟,但是浏览器关闭后,其Cookie就不存JSESSIONID了,所以浏览器就找不到这个session对象了(通过JSESSIONID查找)。为了浏览器关闭后还能找到上次的session,需要通过设置关于此JSESSIONID的cookie的存活时间来实现。
session在第一次访问服务器时创建,服务器一般把session存放在内存中,每个用户都有一个独立的session,所以session中的信息应该尽量精简;session生成后,只要用户继续访问,服务器就会更新session的最后访问时间
cookie和session的区别
①cookie数据存放在客户端,session数据存放在服务器端
②cookie保存的是字符串,session保存的是对象
③cookie是不安全的,session比较安全