07-Cookie&Session

1、 会话跟踪技术

  • 概念
    • 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束,在一次会话中可以包含多次请求和响应
  • HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求,因此我们需要会话跟踪技术来实现会话内数据共享
  • 实现方式
    • 客户端会话跟踪技术:Cookie
    • 服务端会话跟踪技术:Session

2、Cookie

  • Cookie
    • 客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问
  • Cookie的基本使用

2.1、Cookie原理

  • Cookie的实现是基于HTTP协议的
    • 响应头:set-cookie
    • 请求头:cookie
  • 查看Cookie

2.2、Cookie细节

  • Cookie存活时间
    • 默认情况下,Cookie存储在浏览器内存中,当浏览器关闭,内存释放,则Cookie被销毁
    • setMaxAge(int seconds):设置Cookie存活时间,单位是秒
      • 1.正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储,到时间自动删除
      • 2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭时,Cookie被销毁
      • 3.零:删除对应Cookie
  • Cookie存储中文
    • Tomcat7 Cookie 不能直接存储中文
    • 如果需要存储中文,则需要进行转码,URL编码

3、Session

  • Session

    • 服务端会话跟踪技术:将数据保存到服务端
    • JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能
  • Session的基本使用

    • 1.获取Session对象

      • HttpSession session = request.getSession();
        
    • 2.Session对象功能

      • void setAttribute(String name, Object o):将数据存储到session域中
      • Object getAttribute(String name):根据key获取值
      • void removeAttribute(String name):根据key删除该键值对

3.1、Session原理

  • Session是基于Cookie实现的

3.2、Session细节

  • Session钝化、活化
    • 钝化
      • 在服务器正常关闭后,Tomcat自动将Session数据写入硬盘的文件中
    • 活化
      • 再次启动服务器后, 从文件中加载数据到Session中
  • Session销毁
    • 默认情况下, 没有其他操作, 30分钟会自动销毁
    • 手动销毁
      • 调用Session对象的invalidate()方法

4、Cookie和Session之间的异同点

  • 相同点
    • Cookie和Session都是来完成一次会话内多次请求间数据共享的
  • 区别
    • 键值对数量
      • Cookie存一个键和一个值
      • Session存n个键和值
    • 存储位置
      • Cookie是将数据存储在客户端
      • Session将数据存储在服务端
    • 安全性
      • Cookie不安全
      • Session安全
    • 数据大小
      • Cookie最大4KB
      • Session无大小限制
    • 存储时间
      • Cookie默认浏览器关闭
      • Session默认30分钟
    • 服务器性能
      • Cookie不占用服务器资源
      • Session占用服务器资源
posted @ 2022-08-03 17:49  OnlyOnYourself-Lzw  阅读(22)  评论(0编辑  收藏  举报