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

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. Git常用命令(一)

    转自2.1 Git 基础 - 获取 Git 仓库 获取帮助 `$ git help <verb> $ git <verb> --help $ man git-<verb& ...

  2. python实战:用70行代码写了一个山炮计算器!

    python实战训练:用70行代码写了个山炮计算器! 好了...好了...各位因为我是三年级而发牢骚的各位伙伴们,我第一次为大家插播了python的基础实战训练.这个,我是想给,那些python基础一 ...

  3. (ZT)算法杂货铺——k均值聚类(K-means)

    https://www.cnblogs.com/leoo2sk/category/273456.html 4.1.摘要 在前面的文章中,介绍了三种常见的分类算法.分类作为一种监督学习方法,要求必须事先 ...

  4. SQL 字段修改

    1.修改字段名: alter table 表名 rename column A to B 2.修改字段类型: alter table 表名 alter column 字段名 type not null ...

  5. C#下用于同时使用OpenCvSharp和Emgu.CV两个库的相互转换库

    很久以前做的一个图像处理项目,在.NET平台上使用OpenCV,但因为同时使用了C#支持的两个比较有名的库,由于封装方式不同,难免要转换两个库之间的Mat对象. 同时还封装了一些WPF下,System ...

  6. 2017-11-11 Sa Oct Is it online

    2017-11-11 Sa Oct Is it online 9:07 AM After breakfast I tried connecting to the course selection sy ...

  7. 同时安装 Python 2 与Python 3 的方法及pip模块的下载安装

    Python虽然功能强大,上手容易,但版本问题却是个烦人的问题. Python 2.x 和 Python 3.x 版本之间存在很大的不兼容. 同时安装Python2.x和Python3.x 1. 在P ...

  8. Res-Family: From ResNet to SE-ResNeXt

    Res-Family: From ResNet to SE-ResNeXt 姚伟峰 http://www.cnblogs.com/Matrix_Yao/ Res-Family: From ResNet ...

  9. 其它 搭建https服务器

    原因是这样的,做了个淘宝的数据管理系统(仅供自己使用),然后需要淘宝卖家的生意参谋里面的一些数据,比如实时访客,里面有每个用户搜索什么关键字进来的,这些信息. 自己基于CefSharp开发了一个win ...

  10. mongodb安装使用简单命令

    .window+x,A,管理员进入cmd.cd C:\Program Files\MongoDB\Server\3.4\bin.安装:mongod --dbpath "D:\work\DB\ ...