JavaWeb开发--cookie

本文详细介绍了Web应用程序中Cookie的工作原理及其使用方法。包括Cookie的创建、存储、生命周期管理及服务器端如何读取Cookie等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaWeb开发–cookie

什么是cookie

Web应用程序利用Cookie在客户端缓存服务器端文件,浏览器会自动保存cookie文件。Cookie是以键值对形式存储在客户端主机硬盘中,由服务器端发送给客户端,客户端再下一次访问服务器端时,服务器端可以获取到客户端Cookie缓存文件。
Cookie是由服务器端创建的,然后由服务器端发送给客户端,客户端以键值对形式存储Cookie,并标注Cookie的来源。客户端再次访问服务器端时,存储的Cookie会保存在请求协议中,服务器端可以获取上次存储的缓存文件内容。
在这里插入图片描述

原理

Web服务器通过在HTTP响应信息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器再次向Web服务器发送请求时,在HTTP请求消息中增加Cookie请求头字段将Cookie再回传给Web服务器。

Cookie的规范

  • Http协议提供了有关Cookie的规范

    • Cookie存储的大小上限为4KB。
    • 不同浏览器之间不能共用cookie文件

cookie的分类:

  • 会话cookie

    • 当不设置cookie的生命周期expires时,该cookie就是会话cookie
    • 会话cookie是放在浏览器的内存中
    • 浏览器的开启和关闭就是一次会话,会话cookie就会随着浏览器的关闭而销毁。
  • 持久cookie

    • 设定了它的生命周期expires
    • 关闭浏览器之后,它不会销毁,直到设定的过期时间

创建和使用

  • 如何创建一个cookie
		Cookie cookie = new Cookie("name", "value");//创建一个cookie对象
        cookie.setMaxAge(30);//设置它的生命周期 ,单位是秒
        resp.addCookie(cookie);//将cookie添加到响应头
  • 删除cookie
在这里插入代码片
  • 发送cookie到浏览器端
 resp.addCookie(cookie);//将cookie添加到响应头
  • 服务器端接收cookie
		//服务端接收cookie
        Cookie[] cookies = req.getCookies();
        //接收到的是一个cookie对象数组,遍历获取
        for (Cookie cookie1 : cookies) {
            System.out.println(cookie1.getName()+"\t"+cookie1.getValue());
        }
        
  • 注: Cookie过期,出现空指针

  • 在浏览器端可以看到我们接受到的cookie
    在这里插入图片描述

  • 在服务器端也可以接收到:
    在这里插入图片描述

  • cookie中的方法
    1 public void setDomain(String pattern)
    这个方法设置域的cookie适用,

    2 public String getDomain()
    此方法获取域的cookie应用,

    3 public void setMaxAge(int expiry)
    此方法设置cookie过期之前多少时间(以秒为单位)间隔。如果不这样设置,cookie将持续只对当前会话。
    4 public int getMaxAge()
    此方法返回的最大年龄(周期)cookie,以秒为单位指定,默认情况下,-1表示cookie将继续下去,直到浏览器关闭。
    5 public String getName()
    此方法返回的cookie的名称。创建后的名称不能改变。
    6 public void setValue(String newValue)
    此方法设置的cookie值。
    7 public String getValue()
    这种方法得到的cookie关联的值。
    8 public void setPath(String uri) //设置cookie的作用域
    设置Cookie的有效访问路径。有效路径指的是Cookie的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着Cookie信息,否则不带Cookie信息。
    如果不写setPath,则默认是当前的项目路径。

    9 public String getPath()
    这种方法得到这个cookie的路径。

    10 public void setSecure(boolean flag)
    这个方法设置布尔值,表示cookie是否应该只发送的加密(如SSL)连接。

    11 public void setComment(String purpose)
    本方法规定了注释,说明一个cookie的目的。注释是非常有用的,如果在浏览器的cookie展现给用户。

    12 public String getComment()
    此方法返回的注释,描述这个cookie用途或者为null,如果cookie没有注释。

cookie的生命周期

  • 实例:
    • cookie1.setMaxAge(20);//cookie1 20秒之后过期(20秒指的是从最后一次访问的时间开始算起)

    • cookie2.setMaxAge(-1); // 关闭浏览器cookie2就消失

    • cookie2.setMaxAge(0); // 删除cookie2,将cookie2发送到浏览器的时候,浏览器存的cookie2的信息会立马过期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值