原理:
用户使用浏览器第一次向服务器发送请求,服务器在接受到请求后,调用对应的 Servlet 进行处理。在处理过程中会给用户创建一个session 对象,用来存储用户请求处理相关的公共数据,并将此 session 对象的 JSESSIONID 以 Cookie 的形式存储在浏览器中 (临时存储,浏览器关闭即失效)。用户在发起第二次请求及后续请求时,请求信息中会附带JSESSIONID,服务器在接收到请求后, 调用对应的Servlet 进行请求处理,同时根据 JSESSIONID 返回其对应的session 对象。
特点:
Session 技术是依赖Cookie 技术的服务器端的数据存储技术。
由服务器进行创建
每个用户独立拥有一个session
默认存储时间为 30 分钟作用:
解决了一个用户的不同请求的数据共享问题。
使用:
创建Session 对象
存储数据到session 对象获取session 对象
获取数据从session 对象
如果获取session 中不存在的数据返回null。
注意:
只要不关闭浏览器,并且 session 不失效的情况下,同一个用户的任意请求在项目的任意Servlet 中获取到的都是同一个session 对象。
作用域: 一次会话
Servlet Session
HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。
HttpSession session = request.getSession();
//清除session
1、让session对象无效来清除session
session.invalidate();
//2、清除属性
session.removeAttribute("isLogin");
//3、设置有效时间,固定时间清除session,传入的整数代表有效时间多少秒
//注意:session是会话,所以设置的最大间隔失效时间,是2次请求之间的最大的间隔。如果没有失效,再次访问会重新计算时间。
session.setMaxInactiveInterval(10);
response.getWriter().println("clear session");