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

news2024/11/22 22:39:19

什么是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://www.coloradmin.cn/o/384445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT可以作为一个翻译器吗?

论文地址&#xff1a;https://arxiv.org/abs/2301.08745.pdf 背景 自从OpenAI2022年11月30日发布ChatGPT以来&#xff0c;基本上把NLP所有任务大统一了&#xff0c;那么在机器翻译的表现到底如何呢&#xff1f;腾讯AI Lab在翻译Prompt、多语言翻译以及翻译鲁棒性三方面做了一…

365天深度学习训练营-第J4周:ResNet与DenseNet结合探索

目录 一、前言 二、论文解读 三、DPN代码复现 四、总结 一、前言 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制● 难度&#xff1a;夯实基础⭐⭐ ● 语言&#xff1a;Python3、Pytorc…

难道ERP"死了",中台"凉了",低/无代码要称王了?

一句&#xff1a;“不上ERP等死&#xff0c;上了ERP找死”&#xff0c;可把ERP的尴尬处境说透了。 有人把ERP奉为信仰&#xff1a;“那些说ERP不好用的根本是没用明白。” 有人则认为ERP只是卖概念&#xff0c;冷嘲&#xff1a;“实施ERP的企业&#xff0c;估计一半都倒闭了。…

JavaSE-集合框架013-队列Queue及双端队列Deque

原文链接 Queue 我们可以把LinkedList当作队列来用&#xff0c;也可以当作链表来用。LinkedList只是一个实现方式&#xff0c;但是可以具备很多特点 虽然他是一个链表&#xff0c;但是当你从后加从前取&#xff0c;就是队列&#xff08;Queue&#xff09;。当你从后加从后取&a…

第七章 实现effect的stop功能

实现effect的stop功能 通过stop函数传入effect返回的runner 再次修改响应式对象的值的时候 不会修改成功 其实主要思路就是在调用stop函数的时候将 收集的effect依赖移除掉 老样子先给上测试用例&#xff1a; it(stop,()>{// 通过stop函数传入effect返回的runner 再次修…

JPG格式图片怎么弄?可以试试这些途径

在日常生活中&#xff0c;我们经常需要将图片转换为JPG格式&#xff0c;以便在各种设备上使用&#xff0c;因为 JPG 是一种常用的图像格式&#xff0c;具有广泛的兼容性和易用性。这里将介绍几种简单的方法&#xff0c;以帮助您将图片转换为JPG格式。方法一、使用格式转换软件转…

快速入门 Stream 流 【学习笔记】Java基础

若文章内容或图片失效&#xff0c;请留言反馈。部分素材来自网络&#xff0c;若不小心影响到您的利益&#xff0c;请联系博主删除。写这篇博客旨在制作笔记&#xff0c;方便个人在线阅览&#xff0c;巩固知识&#xff0c;无其他用途。 学习视频&#xff1a;【黑马 Java 基础教程…

怎么避免计算机SCI论文的重复率过高? - 易智编译EaseEditing

论文成稿前 在撰写阶段就避免重复&#xff1a;在撰写阶段就避免文章中的重复内容&#xff0c;可以减少后期修改的工作量。 在写作前&#xff0c;可以制定良好的计划和大纲&#xff0c;规划好文章的结构和内容&#xff0c;从而减少重复内容。 加强对相关文献的阅读 为了避免自己…

大话数据结构-迪杰斯特拉算法(Dijkstra)和弗洛伊德算法(Floyd)

6 最短路径 最短路径&#xff0c;对于图来说&#xff0c;是两顶点之间经过的边数最少的路径&#xff1b;对于网来说&#xff0c;是指两顶点之间经过的边上权值之和最小的路径。路径上第一个顶点为源点&#xff0c;最后一个顶点是终点。 6.1 迪杰斯特拉&#xff08;Dijkstra&am…

【C语言】深度理解指针(上)

前言&#x1f30a;谈到指针&#xff0c;想必大家都不陌生。它不仅是C语言的重难点&#xff0c;还是不少C初学者的噩梦。本期我们将深度探讨一些较为复杂的指针以及指针的妙用&#xff0c;带领大家感受指针的魅力&#x1f61d;。首先&#xff0c;我们先来复习复习指针的概念&…

dbutils给bean类对象赋值源码分析

本文重点 以ResultSetHandler的实现类BeanListHandler为例&#xff0c;探索dbutils的QueryRunner的实现细节&#xff0c;重点是如何给java bean类对象赋值。 public <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) throws…

119.Android 简单的软键盘和菜单无缝切换效果,聊天界面软键盘无缝切换

//此效果主要通过动态设置windowSoftInputMode三种状态的切换实现&#xff1a;SOFT_INPUT_ADJUST_NOTHING、SOFT_INPUT_ADJUST_PAN、SOFT_INPUT_ADJUST_RESIZE。 1.第一步 导入需要用到的依赖库&#xff1a; //RecyclerView implementation com.android.support:recyclerview-…

做为骨干网络的分类模型的预训代码安装配置简单记录

一、安装配置环境 1、准备工作 代码地址 GitHub - bubbliiiing/classification-pytorch: 这是各个主干网络分类模型的源码&#xff0c;可以用于训练自己的分类模型。 # 创建环境 conda create -n ptorch1_2_0 python3.6 # 然后启动 conda install pytorch1.2.0 torchvision…

Anaconda环境配置Python绘图库Matplotlib的方法

本文介绍在Anaconda环境中&#xff0c;安装Python语言matplotlib模块的方法。 在之前的文章中&#xff0c;我们多次介绍了Python语言matplotlib库的使用&#xff1b;而这篇文章&#xff0c;就介绍一下在Anaconda环境下&#xff0c;配置matplotlib库的方法。 首先&#xff0c;打…

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual ...

目录 报错 解决 注意&#xff1a; - > 是追加的意思。 解决&#xff1a;分号结尾执行报错&#xff0c;然后重新输入正确的sql语句就可以了。 报错 在docker中部署mysql&#xff0c;创建进入mysql进行数据库查询的时候报错&#xff1a; ERROR 1064 (42000): You have a…

有趣的小知识(三)提升网站速度的秘诀:掌握缓存基础,让你的网站秒开

像MySql等传统的关系型数据库已经不能适用于所有的业务场景&#xff0c;比如电商系统的秒杀场景&#xff0c;APP首页的访问流量高峰场景&#xff0c;很容易造成关系型数据库的瘫痪&#xff0c;随着缓存技术的出现很好的解决了这个问题。 一、缓存的概念&#xff08;什么是缓存…

PyTorch保姆级安装教程

1 安装CUDA1.1 查找Nvidia适用的CUDA版本桌面右键&#xff0c;【打开 NVIDIA控制面板】查看【系统信息】查看NVIDIA的支持的CUDA的版本&#xff0c;下图可知支持的版本是 10.11.2 下载CUDACUDA下载官方网址https://developer.nvidia.com/cuda-toolkit-archive找到适合的版本下载…

第六章 effect.scheduler功能实现

effect.scheduler功能实现 主要先了解scheduler需要实现什么样的需求&#xff0c;有一下四点&#xff1a; 1 通过 effect 的第二个参数给定一个 scheduler 的 fn 2 effect 第一次执行的时候 还会执行 fn 3 当 响应式对象 set update 不执行fn 而是执行 scheduler 4 如果说…

面试问题【线程】

线程什么是进程什么是线程进程和线程的关系什么是并发和并行如何使用线程Thread 和 Runnable 两种开发线程的区别线程的生命周期什么是上下文切换什么是线程死锁如何避免死锁说说 sleep() 方法和 wait() 方法区别和共同点为什么我们调用 start() 方法时会执行 run() 方法&#…

Transformer学习

原论文&#xff1a;Attention Is All You Need。论文地址&#xff1a;https://arxiv.org/abs/1706.03762. Transformer是针对自然语言处理的&#xff0c;Google在2017年发表在Computation and Language&#xff0c;RNN模型记忆长度有限且无法并行化但是Tranformer解决了上述问…