概念介绍
Session是基于Cookie的一种会话机制。
–> 当前的域对象
Cookie是服务器返回一小份数据给客户端,并且存放在客户端上。
Session是,数据存放在服务器端。
工作流程
当访问服务器时,服务器自动检测是否携带了名为JSESSIONID的cookie
首次
服务器创建一个对象session–>生成一个id(保证无重复)
这个id与刚才创建的session对象映射,放入session池中
类map集合
map{
随机字符串:session
}
在服务器完成业务逻辑之后,在返回的内容中,服务器会将随机字符串封装成一个个cookie ==> 即new cookie(JSESSIONID, 随机字符串)由服务器自动完成,送达浏览器
–> 默认的路径是项目路径,存活时间为会话级别
非首次
服务器自动将JSESSIONID这个cookie进行取值(随机字符串)
自动去session池中取出对应的session对象
某次访问出现意外 –> 浏览器重启了
去session池中无法找到session对象
–> 重复首次操作
常用API
//创建&获取session对象
HttpSession session = request.getSession();
//获取id
String id = session.getId();
//取值
session.getAttribute(name)
//存值
session.setAttribute(name, value);
//移除值
session.removeAttribute(name);
移除Session中的元素
//强制干掉会话,里面存放的任何数据就都没有了。
session.invalidate();
//从session中移除某一个数据
//session.removeAttribute(“cart”);
Session生命周期
○ 创建
当某一个用户首次访问服务器的时候,开始他的会话
如果有在servlet里面调用了 request.getSession()
● 销毁
session 是存放在服务器的内存中的一份数据。 当然可以持久化. Redis . 即使关了浏览器,session也不会销毁。
1.关闭服务器
2.session会话时间过期。 有效期过了,默认有效期: 30分钟。
3.//强制干掉会话,里面存放的任何数据就都没有了。
session.invalidate();
简单购物车
数据准备
cart.jsp
您的购物城的商品如下:
<%
//先获取到MAP
Map