cookie学习

cookie

什么是cookie

  1. cookie是服务器通知客户端保存键值对的一种技术
  2. 客户端有了cookie后,每次请求都发送给服务器
  3. 每个cookie大小不能超过4kb

创建cookie

图解

image-20210122161208544

在servlet 中使用如下代码来创建cookie

//创建cookie对象
Cookie username_Cookie =new Cookie("username","waynezheng");
//通知客户端保存cookie
response.addCookie(username_Cookie);

代码截图:

image-20210122161618888

image-20210122161653394

服务器获取cookie

服务器获取cookie就只有一行代码

//服务器获取cookie
Cookie[] cookies = req.getCookies();

cookie的属性

类型方法名方法解释
StringgetComment()返回cookie中注释,如果没有注释的话将返回空值.
StringgetDomain()返回cookie中Cookie适用的域名. 使用getDomain() 方法可以指示浏览器把Cookie返回给同 一域内的其他服务器,而通常Cookie只返回给与发送它的服务器名字完全相同的服务器。注意域名必须以点开始(例如.yesky.com)
intgetMaxAge()返回Cookie过期之前的最大时间,以秒计算。
StringgetName()返回Cookie的名字。名字和值是我们始终关心的两个部分,笔者会在后面详细介绍 getName/setName。
StringgetPath()返回Cookie适用的路径。如果不指定路径,Cookie将返回给当前页面所在目录及其子目录下 的所有页面。
booleangetSecure()如果浏览器通过安全协议发送cookies将返回true值,如果浏览器使用标准协议则返回false值。
StringgetValue()返回Cookie的值。笔者也将在后面详细介绍getValue/setValue。
intgetVersion()返回Cookie所遵从的协议版本。
voidsetComment(String purpose)设置cookie中注释。
voidsetDomain(String pattern)设置cookie中Cookie适用的域名
voidsetMaxAge(int expiry)以秒计算,设置Cookie过期时间。
voidsetPath(String uri)指定Cookie适用的路径。
voidsetSecure(boolean flag)指出浏览器使用的安全协议,例如HTTPS或SSL。
voidsetValue(String newValue)cookie创建后设置一个新的值。
voidsetVersion(int v)设置Cookie所遵从的协议版本。

修改cookie

方案一:

  1. 先创建一个要修改的同名的cookie对象, 在构造器,同时赋予新的cookie值

  2. 调用response.addCookie(cookie);

    代码:

    Cookie cookie = new Cookie("username", "dooms");
            resp.addCookie(cookie);
    

方案二:

  1. 先查找到需要修改的Cookie对象
  2. 调用setValue()方法赋予新的Cookie值
  3. 调用response.addCookie()通知客户端保存修改

代码:

Cookie[] cookies = req.getCookies();
        for (Cookie cookie : cookies) {
            if ("username".equals(cookie.getName())){
                cookie.setValue("avg");
                resp.addCookie(cookie);
            }
        }

Cookie生命控制

setMaxAge()

示例代码:

Cookie cookie = new Cookie("key","value");
cookie.setMaxAge(-1);
response.addCookie(cookie);

正数,表示在指定的秒数后过期

负数,表示浏览器一关,Cookie就会被删除

零,表示马上删除Cookie

Cookie有效路径Path的设置

用法:cookie.setPath(路径);

Cookie的path属性设置可以有效的过滤哪些Cookie可以发送给服务器。哪些不发。path属性是通过请求的地址来进行有效的过滤

CookieA path=/工程路径

CookieB path=/工程路径/abc

请求地址如下:

​ http://ip:port/工程路径/a.html

​ CookieA 发送

​ CookieB不发送

​ http://ip:port/工程路径/abc/a.html

​ CookieA 发送

​ CookieB 发送

代码截图:

image-20210123162752487

在http://ip:port/工程路径/abc/a.html下有cookie

image-20210123163232363

http://ip:port/工程路径/a.html没有cookie

image-20210123163308135

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值