• Cookie


    Cookie

    • session的实现原理中,每一个session对象会关联一个sessionid。例如

      • JSESSIONID=xxxxxxxxxxxxxx
      • 以上的这个键值对其实就是cookie对象
      • 这个cookie保存在浏览器的运行内存,在浏览器不关闭的情况下,用户再次发送请求的时候会自动将内存的cookie发送给服务器,服务器通过cookie中的的jsessionid的值找到对应的session对象
    • cookie最终是保存在浏览器客户端上的

      • 可以保存在运行内存中(浏览器只要关闭cookie就消失了)
      • 也可以保存在硬盘文件中。(永久保存)
        • 例如:某些网站实现十天内免登录的机制,是在你第一次登录成功时,服务器创建了一个cookie对象然后传给浏览器,浏览器保存在客户端上,这个cookie对象保存了用户名和密码等信息,这个cookie是保存在硬盘文件上的,十天内每次你再次登录时,浏览器都会自动发送一个关联的cookie给服务器,服务器然后获取用户名和密码。
    • cookie作用:

      • cookie进而session机制其实都是保存会话状态
      • cookie是将会话的状态保存在浏览器上(对象存在客户端)
      • session是将会话状态保存在服务器上(对象存在服务器)
      • cookie其实session的作用差不多,都是将用户第一次登录的信息保存在一个对象当中,这个登录其实准确来说是一次请求,发出一次请求后,后端创建一个cookie对象,或者session对象,或者这些对象本来就存在,然后在这个对象中存入一些数据,在cookie中是以键值对的方式,在session中是以attribute的方式,其实也类似于键值对。为什么要用这些对象存储数据,就是为了保存会话状态。因为HTTP协议是无连接的。那么cookie和session之间有什么区别呢?最主要的区别就是,session的生死是由服务器决定的,而cookie不由服务器管理。
    • 可以这样理解cookie

      • 首先cookie是在浏览器上的,可以把它看成用户的一个入场券,拥有该证书可以登录与该证书关联的网站
    • HTTP协议规定:任何一个cookie都是有name和value组成。name和value都是由字符串类型。

    • 在HTTP协议中是这样规定的:当浏览器发送请求的时候,会自动携带该path下的cookie数据给服务器。(URL)

    • 关于cookie的有效时间

      • 怎么用java设置cookie的有效时间
        • cookie.setMaxAge(60 * 60); 设置cookie在一小时之后失效。
        • 没有设置有效时间:默认保存在浏览器的运行内存中,浏览器关闭则cookie消失。
        • 只要设置cookie的有效时间 > 0,这个cookie一定会存储到硬盘文件当中。
        • 设置cookie的有效时间 = 0 呢?
          • cookie被删除,同名cookie被删除。
        • 设置cookie的有效时间 < 0 呢?
          • 保存在运行内存中。和不设置一样。
    • 在java的servlet中,对cookie提供了哪些支持呢?

      • 提供了一个Cookie类来专门表示cookie数据。jakarta.servlet.http.Cookie;
      • java程序怎么把cookie数据发送给浏览器呢?response.addCookie(cookie);
    • 关于cookie的path,cookie关联的路径:

      假设现在发送的请求路径是“http://localhost:8080/servlet13/cookie/generate”生成的cookie,如果cookie没有设置path,默认的path是什么?

      • 默认的path是:http://localhost:8080/servlet13/cookie 以及它的子路径。

      • 也就是说,以后只要浏览器的请求路径是http://localhost:8080/servlet13/cookie 这个路径以及这个路径下的子路径,cookie都会被发送到服务器。

      • 手动设置cookie的path

        cookie.setPath(“/servlet13”);
        
        • 1
      • 表示只要是这个servlet13项目的请求路径,都会提交这个cookie给服务器。
        浏览器发送cookie给服务器了,服务器中的java程序怎么接收?

      • Cookie[] cookies = request.getCookies(); // 这个方法可能返回null
        if(cookies != null){
            for(Cookie cookie : cookies){
                // 获取cookie的name
                String name = cookie.getName();
                // 获取cookie的value
                String value = cookie.getValue();
            }
        }
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
      • 注意:以上方法获得的cookie数组空的话返回值是null,反正返回值肯定不是0.

  • 相关阅读:
    dreamweaver网页设计作业制作 学生个人网页猫眼电影 WEB静态网页作业模板 大学生个人主页博客网页代码 dw个人网页作业成品
    redis(1)NoSQL数据库简介
    【Python零基础入门篇 · 3】:掌握数值类型、进制的转换
    海外IP代理科普——API代理是什么?怎么用?
    javavue基层社区管理服务网计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    Pytorch详细教程——11.CNN Flatten Operation Visualized
    HTML+CSS大作业:使用html设计一个简单好看的公司官网首页 浮动布局
    前端学习 linux —— 软件安装(Ubuntu)
    父相子绝 巧用auto
    电脑一键重装系统发现内存占用率过高怎么办
  • 原文地址:https://blog.csdn.net/qq_52025040/article/details/128022243