Cookie与Session

Cookie&Session

1、会话

会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话

一个网站,怎么证明你来过?

客户端 -----> 服务端

  1. 服务端给客户端一个信件,客户端下次访问服务端带上信件就可以; cookie
  2. 服务器登记你来过了,下次你来的时候我来匹配你; session

2、保存会话的两种技术

cookie

  • 客户端技术(响应,请求)

session

  • 服务器技术,利用这个技术,可以保存用户的会话信息,我们可以把信息或者数据放在session中

常见场景:网站登录之后,下次不需要再登录,第二次访问直接上去

3、Cookie

  1. 从请求中拿到cookie信息
  2. 服务器响应给客户端cookie
//获得cookie
Cookie[] cookies = req.getCookies(); // 这里返回数组,说明cookie可能存在多个
cookie.getName() //获得cookie中的key
cookie.getValue() //获得cookie中的value
cookie.setMaxAge(24*60*60); //设置cookie的有效期
new Cookie("lastLoginTime", System.currentTimeMillis() + ""); //新建一个cookie
resp.addCookie(cookie); //xiang'y

Cookie一般会保存在本地的 用户目录下的/appdata

一个网站cookie是否存在上限?

  • 一个Cookie只能保存一个信息;
  • 一个web站点可以给浏览器发送多个cookie,最多存放20个cookie;
  • Cookie大小有限制 4kb;
  • 300个cookie,浏览器的上限

4、Session

什么是Session:

  • 服务器会给每一个用户(浏览器)创建一个Session对象
  • 一个Session独占一个浏览器,只要浏览器没有关闭,这个Session就存在
  • 用户登录之后,当前整个网站的页面都可以都有记录

Session和Cookie的区别

  • Cookie是把用户的数据写给用户的浏览器,浏览器保存;
  • Session把用户的数据写到用户独占Session中,服务端保存(保存重要的信息,减少服务器资源的浪费);
  • Session对象由服务器创建;

使用场景

  • 保存一个用户的登录信息
  • 购物车信息
  • 在整个网站中经常会使用的数据,将他保存在Session中;

使用Session

// 得到Session
HttpSession session = req.getSession();
// 给Session中存东西
session.setAttribute("name",new Person("Cen",19));
// 获取Session的ID
String sessionId = session.getId();
// 判断Session是不是新创建的
session.isNew()
// 获取Session中保存的属性
System.out.println(session.getAttribute("name"));
// 手动清理Session
session.removeAttribute("name");
session.invalidate();

会话自动过期:web.xml配置

<!-- 设置Session默认的失效时间-->
<session-config>
<!-- 一分钟后Session失效-->
<session-timeout>1</session-timeout>
</session-config>
posted @   CenGeng  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示