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

Posted 诺浅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie原理及JAVA端关于Cookie的增删改查操作相关的知识,希望对你有一定的参考价值。

什么是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();
    

以上是关于Cookie原理及JAVA端关于Cookie的增删改查操作的主要内容,如果未能解决你的问题,请参考以下文章

java web Session会话技术(原理图解+功能+与Cookie的区别+基本使用)

sessioncookietoken工作原理及区别

会话保持技术及原理技术

Session原理浅析

关于cookie和session

单体应用如何做用户登录验证及统一拦截(基于session+cookie的登录逻辑怎么做)