Cookie原理及JAVA端关于Cookie的增删改查操作

news/2024/7/5 11:42:27

什么是Cookie

  1. 在java中,Cookie是来自于Servlet规范中一个工具类,存在于Tomcat提供servlet-api.jar
  2. Cookie存放当前用户的私人数据

Cookie原理

用户打开浏览器第一次(指每次重新打开浏览器的第一次,而非指历来第一次)向某个网站发送请求,请求到达服务端,服务端创建一个Cookie存储与当前用户相关数据,然后将Cookie写入到响应头响应给浏览器,浏览器收到响应之后,会将cookie存储在浏览器的缓存中,而后的每次浏览器请求这个网站,浏览器需要无条件的将这个网站之前响应的Cookie写入到请求头发送给网站服务器,服务器就可以基于浏览器请求的Cookie做一些事情,比如判断是不是同一个用户。

通过原理中的描述,我们大概能明白如下

  1. Cookie是服务端生成的,但是客户端也可以存储甚至修改

那么浏览器如何看到cookie呢,按F12打开调试界面里面可以看到
在这里插入图片描述

服务端如何创建一个Cookie

Cookie cookie = new Cookie("name", "value");
//设置cookie有效期为一个月
cookie.setMaxAge(3600*24*30);
response.addCookie(cookie);

除了可以设置cookie的有效期外,cookie还可以设置如下
在这里插入图片描述

Cookie 的Path说明

通过上面的图片可以看到,cookie是有path的。不同path和不同的Domain下的Cookie是不一样的。

cookie的path字段服务端不是必须要设定的,如果没有设定path,同一个系统中在不同的请求路径中新增的cookie的path是不一样的。

例如:
/page/index/index.html中添加了一个cookie,而在/page/demo/demo.html取值会取不到,因为前者path/page/index/,后者取值path/page/demo/。而在解决办法就是在添加cookie时指定path/page/, 这时page目录下的所有页面都可以获取到。

cookie.setPath("/page/");

Cookie Java 增删改查 Api

req和res指
HttpServletRequest req, HttpServletResponse res

Cookie cookie = new Cookie("name", "value");
res.addCookie(cookie);

Cookie[] cookies = req.getCookies();
for (int i = 0; i < cookies.length; i++) {
	   Cookie cookie = cookies[i];
    if("name".equals(cookie.getName())){
       cookie.setMaxAge(0);
    }
}


重新增加一遍,Cookie中同名的会被替换

Cookie[] cookies = req.getCookies();
for (int i = 0; i < cookies.length; i++) {
    Cookie cookie = cookies[i];
    if("name".equals(cookie.getName())){
        browserType = cookie.getValue();
    }
}

http://lihuaxi.xjx100.cn/news/957615.html

相关文章

看板管理中看板的定义、构成,以及实际看板案例分享

看板方法中的看板&#xff08;Boards&#xff09;由哪些部分组成&#xff1f;常见的看板管理工具有哪些类型&#xff1f;看板和 Scrum 看板的区别与联系是什么&#xff1f;团队要如何学习使用看板&#xff1f;本文将围绕以上问题展开&#xff0c;一起来看看吧。Kanban &#xf…

【10】SCI易中期刊推荐——工程技术-计算机:人工智能(中科院2区)

🚀🚀🚀NEW!!!SCI易中期刊推荐栏目来啦 ~ 📚🍀 SCI即《科学引文索引》(Science Citation Index, SCI),是1961年由美国科学信息研究所(Institute for Scientific Information, ISI)创办的文献检索工具,创始人是美国著名情报专家尤金加菲尔德(Eugene Garfield…

chat gpt 常见角色及对应的提示词汇总

提示词的存在让ChatGPT能够扮演特定的角色&#xff0c;对用户的回答更加专业对口 以下是一些常见的ChatGPT角色及对应的提示词&#xff1a; 目录 ChatGPT 市场推广提示。 ChatGPT 业务提示。 ChatGPT 内容提示。 Web 开发的 ChatGPT 提示。 ChatGPT 教育提示。 ChatGPT 对教…

【Spring6】| Bean的作用域

目录 一&#xff1a;Bean的作用域 1. singleton&#xff08;单例&#xff09; 2. prototype&#xff08;多例&#xff09; 3. 其它scope 4. 自定义scop&#xff08;了解&#xff09; 一&#xff1a;Bean的作用域 1. singleton&#xff08;单例&#xff09; &#xff08;1…

redis启动和关闭服务脚本

编译安装redis&#xff0c;自己写了个脚本。 简单实现启动、关闭和 查看redis服务。 基本流程如下&#xff1a; 脚本执行&#xff0c;必须附带1个参数&#xff0c;没有参数会提示附带参数。 脚本会获取redis-server进程数量。作为开启、关闭以及查看redis服务的数据依据。 …

【自动包装线标签打印翻转问题沟通】

最近纺丝自动包装线的标签打印机自动打印标签&#xff0c;是翻转状态。 但是这个打印机它不是平放的&#xff0c;它是通过悬臂安装在半空的中的&#xff0c;是翻转的&#xff0c; 它的标签一个打在侧面&#xff0c;一个打在正前方&#xff0c;打印出来的样子是这样的。 是反过…

python之异步编程

一、异步编程概述 异步编程是一种并发编程的模式&#xff0c;其关注点是通过调度不同任务之间的执行和等待时间&#xff0c;通过减少处理器的闲置时间来达到减少整个程序的执行时间&#xff1b;异步编程跟同步编程模型最大的不同就是其任务的切换&#xff0c;当遇到一个需要等…

盘点 Vue3 与 Vue2 的区别

一、Vue3 与 Vue2 区别详述 1. 生命周期 对于生命周期来说&#xff0c;整体上变化不大&#xff0c;只是大部分生命周期钩子名称上 “on”&#xff0c;功能上是类似的。不过有一点需要注意&#xff0c;Vue3 在组合式API&#xff08;Composition API&#xff0c;下面展开&…