解决了服务器不能识别不同浏览器的问题,相当于给每个浏览器加了个“身份证”。

Cookie首先由服务器创建发给浏览器,随后浏览器每次访问服务器时都带上这个Cookie。

Cookie缺点:

  ·Cookie最为请求或响应报文发送,无形中增加了网络流量。

   Cookie是明文传送的安全性差。

   各个浏览器对Cookie有限制,使用上有局限。

Cookie创建:

  ·在Servlet的doPost()方法中编写如下代码:

//创建一个Cookie对象

Cookie cookie = new Cookie("username", "zhangsan");

//将Cookie对象放入response对象中

response.addCookie(cookie);

   在浏览器中访问该Servlet,会发现响应头中出现如下内容:

   Set-Cookie: username=zhangsan

   如此就成功的向浏览器设置了一个Cookie,当我们在刷新页面时会发现浏览器的请求头中出现如下代码:

  Cookie: username=zhangsan

  

  · 同样我们还可以同时设置多个Cookie:

//创建一个Cookie对象
Cookie cookie1 = new Cookie("username", "zhangsan");
Cookie cookie2 = new Cookie("password", "123456");
Cookie cookie3 = new Cookie("age", "20");
//将Cookie对象放入response对象中
response.addCookie(cookie1);
response.addCookie(cookie2);
response.addCookie(cookie3);

  浏览器会以一下形式发送Cookie:

  Cookie: username=zhangsan; password=123456; age=20

  

  ·总之,设置Cookie就是两个步骤:

    1. 创建Cookie对象。
    2. 将Cookie对象加入到response中。

读取Cookie

  ·读取Cookie主要指从读取浏览器中携带的Cookie

   只需要通过一个方法就可以得到浏览器中的Cookie,在Servlet或JSP中通过request对象调用getCookies()方法可以获得浏览器传送过来的所有Cookie对象,返回的是一个Cookie数组,通过遍历Cookie数组可以获得所有的Cookie信息。

  例:

//通过request的getCookies()方法获的Cookie数组
Cookie[] cookies = request.getCookies();
//判断数组是否为空
if(cookies != null){
//如果不为空遍历数组
for(Cookie cookie : cookies){
//获取cookie的名字
String name = cookie.getName();
//获取cookie的键
String value = cookie.getValue();
System.out.println(name+"---"+value);
}
}

Cookie有效时间

  ·Cookie是存储在浏览器中的,浏览器不可能永远保存一个Cookie,一来是占用硬盘空间,再来一个Cookie可能只在某一时刻有用没必要长久保存。

   通过Cookie对象的setMaxAge()可以设置Cookie的有效时间:

     设置为0,setMaxAge(0)       : Cookie立即失效,下次浏览器发送请求将不会在携带该Cookie

       设置大于0,setMaxAge(60)  :表示有效的秒数60就代表60秒即1分钟,也就是Cookie在1分钟后失效。

    设置小于0,setMaxAge(-1)   :设置为负数表示当前会话有效。也就是关闭浏览器后Cookie失效

    不设置   : 如果不设置失效时间,则默认当前会话有效。

Cookie的路径

  ·因为不同网站的Cookie也不同,所以需要设置每个Cookie的路径。

     设置为 /项目名/路径 cookie.setPath(“/项目名/路径”)

       这样设置只有访问“/项目名/路径”下的的资源才会携带Cookie     如:/项目名/路径/1.jsp 、/项目名/路径/hello/2.jsp 等

        如果不设置,默认会在访问“/项目名”下的资源时携带

      如:“/项目名/index.jsp” 、 “/项目名/hello/index.jsp”

Cookie随笔的更多相关文章

  1. cookie使用随笔

    cookie是一种浏览器缓存,可以理解为存放在浏览器上的一种小文件. 大小数目限制: 不同浏览器对于大小和数目均有不一样的限制,大小一般为4k,数目从30~50个(视浏览器类型),以键值对的形式存储, ...

  2. cookie绕过验证码并关联对话发送一个随笔草稿箱

    先手动发送一个草稿,然后用fiddler取到body参数 代码: #coding:utf-8import requests login_url="https://passport.cnblo ...

  3. [Web][学习随笔]Session&cookie

    Session 从登录建立连接到退出就是一次会话.Session数据就会在会话期间用户存在服务器端的数据.这样,当用户在Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会 ...

  4. Cookie和Session的总结

    1.开篇 在之前学习这一段的时候我一直有点没弄清楚,其实对Session这块的理解还可以,但是Cookie感觉始终还是欠缺点火候.之后的很长一段时间都基本上很少用Cookie了,渐渐的也淡忘了这一块的 ...

  5. 把cookie以json形式返回,用js来set cookie.(解决手机浏览器未知情况下获取不到cookie)

    .继上一篇随笔,链接点我,解决手机端cookie的问题. .上次用cookie+redis实现了session,并且手机浏览器可能回传cookies有问题,所以最后用js取出cookie跟在请求的ur ...

  6. cookie 二:

    本篇随笔从cookie的入门开始,介绍了cookie的设置获取和移除,还有一些小的应用案例:一.设置cookie <script> //设置cookie:function setCooki ...

  7. jmeter随笔(4)--中文url编码问题

    最近在工作中,对jmeter实践的点滴的记录,这里分享交流,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 技巧1:中文url编码问题 问题:我们抓 ...

  8. python接口自动化(十三)--cookie绕过验证码登录(详解)

    简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...

  9. django之模型层(model)--查询补充及cookie

    已经连续写了好几篇django的模型层(model)增删改查的随笔了,没篇大篇幅都是查询相关的操作,可以看出查询在数据的操作中是多么的重要,而本篇最后再补充一点关于关于查询的一些方法,模型层基本的操作 ...

随机推荐

  1. DAO(Repository),Service,Controller层之间的相互关系

    DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口 ...

  2. Jmeter分布式部署- linux

    https://www.cnblogs.com/beginner-boy/p/7836276.html https://www.cnblogs.com/wuhenyan/p/6419368.html ...

  3. java高并发实战(一)——为什么需要并发

    转自:https://blog.csdn.net/gududedabai/article/details/80813592

  4. 一个linux 驱动升级的小问题记录

    重复踩了两次坑,所以简单记录下. 内核 3.10. 在修改了驱动的gro实现之后,进行驱动版本的升级,make && make install 之后,发现tg3的驱动,没有生效. 相同 ...

  5. K-Means算法:图片压缩

    #读取实例图片# from sklearn.datasets import load_sample_image from sklearn.cluster import KMeans import ma ...

  6. 让新版appium支持by_name定位

    org.openqa.selenium.InvalidSelectorException: Locator Strategy 'name' is not supported for this sess ...

  7. 初学python---排序

    1.永久性排序 sort() a = [12,45,1,25,3] a.sort() print(a)  ----[1, 3, 12, 25, 45] 2.临时排序 sorted() a = [12, ...

  8. react axios 配置

    1:package.json 添加        "proxy": "代理地址" 2  封装axios     创建server.js  添加 import a ...

  9. Python对象迭代与反迭代相关问题与解决技巧

      1.如何实现可迭代对象和迭代器对象(1)¶ In [1]: # 列表和字符串都是可迭代对象 l = [1,2,3,4] In [2]: s = 'abcde' In [3]: for x in l ...

  10. windows内核驱动内存管理之Lookaside使用

    Windows内存管理中使用了类似于容器的东西,叫做Lookaside对象,每次程序员申请内存都会从Lookaside里面申请,只有不足的时候,Lookaside才会向内存又一次申请内存空间,这样减少 ...