1. 会话
会话: 用户打开浏览器,请求了很多资源,最后关闭浏览器的过程称为会话。
有状态会话:
- 发票
- 学校登记
网站如何证明你来过?
- 服务端给客户端一个信件,下次访问时带上该信件即可,即cookie;
- 服务端登记你来过了,下次来的时候匹配你;即Session。
2. 保存会话的两种技术
-
cookie:客户端技术(相应,请求)
-
session:服务端技术, 利用该技术,可以保存用户的会话信息。
3. Cookie
-
从请求中拿到cookie
-
服务器响应给客户端cookie
Cookie[] cookies = req.getCookies(); cookie.getName(); cookie.getValue(); cookie.setMaxAge(); // 单位为s resp.addCookie(new Cookie("lastLoginTime", System.currentTimeMillis()+""));
一个网站cookie是否存在上限!聊聊细节问题
- 一个Cookie只能保存- 一个信息;
- 一个web站点可以给浏览器发送多个cookie, 最多存放20个cookie;
- Cookie大小有限制4kb;
- 300个cookie浏览器上限
-
删除cookie:将对应名称的cookie时间设为0即可
Cookie cookie = new Cookie("lastLoginTime", ""); cookie.setMaxAge(0); resp.addCookie(cookie);
4. session
4.1 什么是session:
- 服务器会给每一个用户创建一个session,一个浏览器打开网站就是一个session
- 一个session独占一个浏览器
- 应用:用户登录一个网站后,可以访问网站所有的网页。
4.2 使用场景
- 保存一个用户的登录信息;
- 购物车信息;
- 整个网站中经常会使用的数据,我们将其存放在cookie中;
4.3 使用session
-
获取session,设置属性
HttpSession session = req.getSession(); session.setAttribute("name", "yang"); out.println(session.getId());
-
注销session
HttpSession session = req.getSession(); session.invalidate();
session注销后,服务器会自动再生成一个session
-
session时间设置
<session-config> <!--设置session超时时间,单位为min--> <session-timeout>1</session-timeout> </session-config>