Java中Cookie详解

131 阅读2分钟

         最近复习到了Cookie和Session,这里系统的讲解一下Cookie和Session。在学习这个之前,我们需要了解,会话的定义。

        会话是指某一个人打开浏览器,访问多个页面,然后关闭浏览器的这个过程。比如说小明打开了谷歌浏览器,他想看会B站,接着去玩了4399小游戏,最后关掉浏览器。而我们的Cookie和Session就是在会话中共享数据的。

        我们可以回想一下,当我们打开浏览器,想要去淘宝逛逛双十一有什么优惠,但是忘记登陆账号了,选了几件衣服,加入购物车,这个时候电脑突然关机了,当我们再次开机时,购物车里的东西还在吗?当然是在的,这里就用到了Cookie。

        Cookie译为小点心,它是一个客户端会话技术,是由服务器端创建,放在响应头发送到客户端保存,用于存储少量数据,因为存放在客户端中,容易被人编造伪造,不是很安全。一般不用于存储重要信息。它是通过键值对传递信息的。

    • 1.1 创建并添加一个Cookie

      •         首先需要创建一个Cookie的对象cookie,因为它是通过键值对传递信息,所以在Cookie的构造方法中需要传入键和值。创建以后需要将新建的cookie对象放入响应中,随着响应传入客户端存储。
  • //创建一个Cookie对象
    Cookie cookie = new Cookie("text","zhangsi");
    //Cookie的有效时间:默认情况下,随着浏览器的关闭而消失
    //通过响应添加
    resp.addCookie(cookie);
    

    1.2 获取Cookie

    • ****Cookie的获取需要通过请求获取,并且会返回一个Cookie的数组,代码如下:

      //通过请求获取Cookie
      Cookie[] cookies = req.getCookies();
      for(int i = 0; i<cookies.lengthif(cookies[i].getName().equals("text")){
          System.out.println(cookies[i].getValue());
      }
      

             因为获取的是Cookie数组,所以需要通过遍历将值全部输出。

    • 1.3 删除Cookie

      • ****正是因为Cookie是通过键值对传递的,所以键是具有唯一性,可以通过设置键名相同的Cookie有效时间为0,将其删除,代码如下:

      • //建立同名的Cookie
        Cookie cookie = new Cookie("text","1346");
        //删除指定的cookie
        cookie.setMaxAge(0);
        resp.addCookie(cookie);
        

        1.4 Cookie的有效期

        • ​​​​​​​​​​​​​​ 总结一下,Cookie是保存在客户端的数据,所以如果不做设定,默认情况下是跟着客户端一起消失的,如果设置了setMaxAge(),将会以设置的数值为主,时间到了将会自动消失。
        • 1.5 课后思考
        • 1.5.1. Cookie的存活时间是多少?
        • 1.5.2. Cookie如何实现共享数据?
        • 1.5.3.一个网站cookie是否存在上限?
        • 答案将再下节Session公布