Cookie & Session 异同

Http是一个无状态协议

  • HTTP协议本身是无状态的协议,一旦数据传输结束,就会断开客户端和服务器的而连接。但是在程序中,进行会话跟踪时十分有必要的。如客户端需要判断请求来自于哪个用户(Cookie) 以及 对用户的进行跟踪(Session),因而需要Cookie&Session来弥补HTTP协议本身无状态的缺点。

Cookie

  • Cookie是保存在客户端的一个数据结构,用来记录用户的一些信息,相当于客户端的通行证,服务端可以利用Cookie进行身份验证。
  • Cookie的内容主要包括:key、value、过期时间、路径和域(路径和域共同决定cookie的作用范围)。
  • 用户可以根据保存在本地的Cookie进行自动填写账户密码登录。
  • Cookie一般不能跨浏览器
  • Cookie生命周期
    // 可实现永久Cookie
    // 新建Cookie
    Cookie cookie = new Cookie("key", "value");
    // 设置生命周期为最大
    cookie.setMaxAge(Integer.MAX_VALUE);
    // 输出到客户端
    response.addCookie(cookie);
    
    • 声明周期为0 - 删除该Cookie
    • 生命周期为负数 - 该Cookie为临时Cookie,关闭浏览器或当前页面及其相关页面就关闭
    • Cookie默认maxAge为-1

Session

  • Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
// 获取Session对象
HttpSession session = request.getSession();
// 获取session中的属性
Object object = session.getAttribute("key");
// 设置Session中的属性
session.setAttribute("key","value");
  • Session生命周期
    • Session在用户第一次访问服务器时自动创建,访问HTML、IMAGE等静态资源时不会生成session。
    • Session生成后,用户访问时服务器会不断维护该Session。若长时间未访问,服务器会根据回收机制删除该Session。

Cookie和Session的区别

  1. Cookie数据存放在客户端(浏览器) & Session数据存放在服务器
  2. Session的运行依赖于SessionId,而SessionId存在Cookie中。若浏览器禁用了Cookie,Session也会失效,但是可以通过其他方式传递。
  3. Cookie可以进行会话跟踪、保存用户喜好或者保存用户名和密码 & Session用来跟踪会话&认证
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值