`
xiebh
  • 浏览: 603987 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

cookie学习总结

阅读更多
从以下几个方面总结

  • cookie的概念
  • cookie的使用场景
  • cookie的运行机制
  • cookie的常用操作
  • cookie的共享范围
  • cookie的生命周期


cookie的概念:
cookie是客户端(浏览器)访问服务器时,由服务器发送给客户端的一小段信息,就好象是服务器送给客户端的“点心”。cookie相关的规范是HTTP协议的一部分,它的出现主要是由于HTTP协议的“无状态”特点所决定的。也就是说WEB服务器好比是"超市"售货员,他只管买东西,不关心是客户是谁,进行“不记名”响应请求,这样做主要是为了简单。但在实际web开发中我们又需要跟踪用户,比如网上购物中的“购物车”。因为为了解决该问题,cookie出现了。

cookie的使用场景
  • 在电子商务会话中标识用户
  • 记录用户名/密码
  • 定制网站
  • 定向广告


cookie的运行机制
如图所示

Cookie的运行机制是由HTTP协议规定的,多数Web服务器和浏览器都支持Cookie。Web服务器为了支持Cookie,需要具备以下功能:
在HTTP响应结果中添加Cookie数据
解析HTTP请求中的Cookie数据

浏览器为支持Cookie,需要具备以下功能:
解析HTTP响应结果中的Cookie数据
把Cookie数据保存到本地硬盘
读取本地硬盘上的Cookie数据,把它添加到HTTP请求中


另外,浏览器发送请求时,Cookie信息是在HTTP协议的请求头中的:
HTTP/1.1 200 OK
Server:Apache-Coyote/1.1
[b]Set-cookie:userName=TOM;[/b]
Content-Type:text/plain


cookie常见操作
首先cookie的格式就是名值对,比如 userName = "Tom",所以cookie中只能保存字符串。另外,浏览器中可以保存多个cookie。服务器对Cookie可以进行添加、读取、修改、删除的操作。
添加操作:
Cookie theCookie = new Cookie("userName","TOM");
response.addCookie(theCookie);


读取操作:
Cookie cookies[] = request.getCookies();

for(int i = 0; i < cookies.length; i++){
    out.println("Cookie name:" + cookie[i].getName());
    out.println("Cookie vale:" + cookie[i].getValue());
}


修改操作:
Cookie cookies[] = request.getCookies();

for(int i = 0; i < cookies.length; i++){
    if(cookie[i].getName().equals("TOM"))
       cookie[i].setValue("JACK");   
}



cookie的生命周期
Java中的Servlet向客户端写Cookie时,可以通过Cookie类的getMaxAge(int expiry)方法来设置Cookie的有效期,expiry以秒为单位,它具有以下含义:
   如果expiry > 0,指示浏览器在客户端硬盘上保存Cookie的时间为expiry秒;
   如果 expiry = 0,指示浏览器删除当前Cookie;
   如果 expiry < 0,指示浏览器不要把Cookie保存到硬盘中,Cookie仅存在与当前浏览器进程中,当浏览器进程关闭后,Cookie立即消失,这就是所谓的“会话Cookie”;

cookie的生命周期


假定app1中Xweb组件在浏览器中保存了一个Cookie,当再次访问app1、app2、app3中的其它web组件时候,浏览器是否会把Cookie添加到HTTP请求中?

  在默认情况下,只有app1中的Web组件能读取该Cookie。如果想改变Cookie的贡献范围,可以通过setPath()和setDomain(String domain)方法来设置。


让同一个Tomcat服务器A中app1和app2共享Cookie,那么app1中的组件在写Cookie的代码如下:
  Cookie cookie =  new Cookie("userName","TOM");
  cookie.setPath("/");
  response.addCookie(cookie);

setPath方法中“/”表示是服务器的根路径。

只能让app2访问Cookie,则app1中的组件写Cookie的代码如下
  Cookie cookie =  new Cookie("userName","TOM");
  cookie.setPath("/app2/");
  response.addCookie(cookie);


只能让app1下的sub目录下组件访问Cookie,则app1中的组件写Cookie的代码如下
    Cookie cookie =  new Cookie("userName","TOM");
    cookie.setPath("/app1/sub/");
   response.addCookie(cookie);



让服务器B中app3下所有Web应用访问Cookie,则app1中的组件写Cookie的代码如下
  Cookie cookie =  new Cookie("userName","TOM");
  cookie.setDomain(".cat.com");
  response.addCookie(cookie);






  • 大小: 5.5 KB
  • 大小: 8.6 KB
分享到:
评论
1 楼 zkliqiang 2012-05-07  
很详细。。。

相关推荐

    学习cookie的笔记和总结

    学习,cookie,笔记和总结,cookie和session的区别

    asp.net知识库

    C#静态成员和方法的学习小结 C#中结构与类的区别 C#中 const 和 readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件...

    JAVA基础学习总结笔记

    Cookie使用. EL表达式语言. GET和POST区别. Jsp语法. EL表达式语言. iBATIS. JDBC编程. JDBC驱动加载. Servlet.过滤器,监听器 struts相关笔记. 等等...... 里面是当年自学JAVA时的一些笔记,内容都是TXT格式的,都是...

    JSP与Servlet 技术总结

    11. Cookie学习 7 12. Session学习 9 Servlet技术总结 9 1. Servlet生命周期 9 2. Servlet的方法说明: 10 3. Servlet 在web.xml中的配置 10 4. Servlet元素说明 11 5. 如何写一个Servlet? 11 6. 在web.xml里配置...

    python学习总结day03.txt

    Day02回顾 1、关于正则解析 1、分组(想要抓取什么内容就加小括号()) 2、正则方法 p = re.compile('....') ... 结果 :[(),(),(),()] ...5、cookie和session cookie :客户端 session :Web服务器

    PHP中cookie知识点学习

    我们给大家总结了PHP中cookie的详细用法以及重要知识点,对此有兴趣的朋友可以参考学习下。

    CSRF知识点·总结.pdf

    该文档是在看网络学习视频总结,从CSRF介绍、防御、分章节进行叙述,其中包括http请求的知识、cookie的防御 ,可作为学习文档。

    JavaWeb每日总结思维导图

    JavaWeb每日总结思维导图,包含JavaWeb开发的多项技术,方便复习知识点使用。内容包括:MySQL、MySQL约束&多表、MySQL多表&事务、JDBC、数据库连接池、HTML、CSS、JS基础&高级、BootStrap、XML、Tomcat、Servlet&...

    Angular.js与node.js项目里用cookie校验账户登录详解

    所以本文就把实现的过程总结出来分享给大家,需要的朋友们可以参考学习。 在header中携带authId登录 在之前老的项目里,没有采用cookie来记录用户登录状态,而是在请求的header中携带一个身份标识来校验,大致方案...

    毕设-云视频学习平台的设计及实现

    该云视频学习平台,于学生而言,该平台对学生可以选择的方向做出了总结规划,对已经明确了学习方向的学生做出了多条清晰的学习路线,为学生整理好了每一阶段所需所学。对教师来说,该平台可以让教师实时跟踪学生的...

    javascript学习笔记3

    javascript 中cookie与ajax 的基础知识总结

    cookie工具类

    总结了目前我在学习中使用到的工具类,后续还会继续更新上传

    J2EE(Java EE)技术总结-J2EE学习精华教程-电子书

    本书内容非常全面,涵盖了多册J2EE书籍所有知识要点,并结合作者自己经验总结而编写,内容相当丰富 众所周知,一般书籍为了销售需要,往往很少的知识点,却需要添加大量的废话、例子,以增加书本厚度,使得阅读者...

    JquerySession-JqueryCookie缓存插件(实例+注释说明)

    这个是本人自己研究总结的实例+源码,还有实例总结+注释说明(源码),里面有自己研究过的总结话语,可以帮助大家更好的学习和理解,希望对大家有所帮助!

    Javaweb学习小结.docx

    个人学习期间的总结,可能有些地方还不足,望指教主要内容有:Tomcat服务器 ,XML ,HTTP协议 ,servlet技术 , servlet应用 , Cookie , session , 过滤器 , 监听器

    给php新手谈谈我的学习心得

    给php新手谈谈我的学习心得

    C#.NET学习好资料-编程常用功能及代码的总结与收藏

    10.清空Cookie 5 11.自定义异常处理 5 12.Panel 横向滚动,纵向自动扩展 8 13.回车转换成Tab 9 14.DataGrid超级连接列 9 15.DataGrid行随鼠标变色 9 16.模板列 9 17.数字格式化 10 18.日期格式化 10 19.如何设定全局...

    Java语言基础下载

    获取Cookie 565 HTTP响应报头--Response 566 会话管理 566 Servlet过滤器 569 Servlet监听器 576 内容总结 579 独立实践 580 第二十九章: Jsp 技术 583 学习目标 583 JSP介绍 584 JSP语法 584 模板元素 588 指令...

    对PHP新手的一些建议(PHP学习经验总结)

    刚学习PHP的时候不要纠结使用哪个环境?appserv、wamp集成环境都不错 编辑器很多种,但最好熟悉其中一种,养成手写代码习惯 常用的函数要熟记 环境报错全开启,把NOTICE屏蔽 遇到报错要仔细看报错原因,行号,...

    有关cookies的总结

    分析cookies行为1文献2心得3有关信息安全的想法4问题跟解决方案5就业

Global site tag (gtag.js) - Google Analytics