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

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. sqlserver 存储过程返回游标的处理

    创建表: create table tb1( id int , name ) ) ------------------------------------------------- 创建返回游标的存储 ...

  2. Game Engine Architecture 6

    [Game Engine Architecture 6] 1.Data-Parallel Computations A GPU is a specialized coprocessor designe ...

  3. Quartz与Spring集成(二)

    一.获取quartz详情jar <!-- quartz 的jar --> <dependency> <groupId>org.quartz-scheduler< ...

  4. Java框架spring 学习笔记(六):属性注入

    属性注入:创建对象的时候,向类里面的属性设置值. Java属性注入有三种方法: 使用set方法注入 有参数构造注入 使用接口注入 Spring框架里面的属性注入方式 有参数构造属性注入 set方法属性 ...

  5. 这是一个新的开始at this very monment

    简单的介绍下此时自己的情况,和对近几年所做的事做一个总结,并展望下自己的未来和对自己的期待.我会将我的博客分成两种,一个是我的学习笔记,另一个是我的生活记录. 2018年六月底我毕业于一个普通的二本, ...

  6. I2C与SMBus

    关于I2C与SMBus,许多人很少去谈论与了解两者的细节差异,包括很多国外的简报,文章也经常将两者混写.交杂描述.交替运用. 确实,在一般运用下,I2C Bus与SMBus没有太大的差别,从实际接线上 ...

  7. Windows网络发现无法启动

    解决方法: 运行services.msc命令,打开服务界面.分别将Function Discovery Resource Publication.SSDP Discovery.UPnP Device ...

  8. nio实现原理

    nio是事件驱动,当soket有消息过来时才开启线程,bio每当有连接时,就开启一个线程,长连接的话,就有太多的空闲连接占用线程内存 nio是非阻塞长连接 ServerSocketChannel:饭店 ...

  9. odoo KeyError

    one2many字段对应的表名不存在造成

  10. phpstudy 配置端口 和 虚拟域名访问

    打开phpstudy窗口 选择->其他选项菜单->打开配置文件->httpd.conf 添加一个 Listen 8081(端口号) 查看到    Include conf/vhost ...