0
点赞
收藏
分享

微信扫一扫

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原理及JAVA端关于Cookie的增删改查操作_取值

服务端如何创建一个Cookie

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

除了可以设置cookie的有效期外,cookie还可以设置如下

Cookie原理及JAVA端关于Cookie的增删改查操作_取值_02

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();
}
}


举报

相关推荐

0 条评论