Cookie

Cookie技术是一种在客户端保持会话跟踪的解决方案,会话数据保存在客户端浏览器。

Cookie在用户第一次访问服务器时,由服务器通过响应头的方式发送给客户端浏览器;当用户再次向服务器发送请求时会附带上这些文本信息。

在使用Cookie时,要保证客户端浏览器接受Cookie。

存储Cookie会话数据

javax.servlet.http.Cookie类,用于存储会话数据,存储过程如下:

  1. 构造Cookie对象:Cookie(java.lang.String name, java.lang.String value)
  2. 设置Cookie:
    1. void setPath(java.lang.String uri):设置Cookie的有效访问路径。
    2. void setMaxAge(int expiry): 设置Cookie的有效时间。
      1. 正整数:时间若为正整数,表示Cookie存活的秒数。
      2. 负整数:表示其为临时Cookie,数据保存浏览器的内存中,浏览器关闭Cookie就丢失了。
      3. 零:表示通知浏览器删除相应的Cookie。
    3. void setValue(java.lang.String newValue):设置Cookie的值。Cookie数据类型只能保存非中文字符串类型的。可以保存多个Cookie,但是浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。
  3. 将Cookie对象响应给客户端浏览器,存储在客户端机器上。发送Cookie:void response.addCookie(Cookie cookie)

获取Cookie会话数据

存储在客户端的Cookie,通过HttpServletRequest对象的getCookies()方法获取,该方法返回所访问网站的所有Cookie的对象数组,遍历该数组可以获得各个Cookie对象。

Cookie[] cookies = request.getCookies();
if(cookies != null) {for(Cookie c : cookies){out.println("属性名:" + c.getName());out.println("属性值" + c.getValue());}
}

Cookie访问路径

在默认情况下,创建Cookie时没有设置路径,该Cookie只能被当前目录及子目录应用访问。Cookie的setPath()方法可以重新指定其访问路径,例如:将其设置为在某个应用下的某个路径共享,或者在同一服务器内的所有应用共享。

设置Cookie的有效访问路径:void setPath(java.lang.String uri)

有效路径指的是Cookie的有效路径保存在哪里,那么浏览器在有效路径下访问服务器时就会带着Cookie信息,否则不带Cookie信息。

Cookie存活时间

Cookie有一定的存活时间,不会在客户端一直保存,默认情况下,Cookie保存在浏览器内存中,在浏览器关闭时失效,这种Cookie也称为会话Cookie,若要使Cookie较长时间的保存在磁盘上,可以通过Cookie对象的setMaxAge()方法设置其存活时间。

Cookie对象可以通过setMaxAge()方法设置其存活时间,时间以秒为单位:void setMaxAge(int expiry)

  • 时间若为正整数,表示其存活的秒数。
  • 时间若为负数,表示其为临时Cookie。
  • 时间若为0,表示通知浏览器删除相应的Cookie,删除Cookie时,path必须一致,否则不会删除。

例如:

  • name.setMaxAge(7*24*60*60);
  • name.setMaxAge(0); //删除Cookie

Cookie的局限性

Cookie的缺点主要集中在其安全性和隐私保护上,主要包括以下几种:

  • Cookie可能被禁用,当用户非常注重个人隐私保护时,很可能会禁用浏览器的Cookie功能。
  • Cookie可能被删除,因为每个Cookie都是硬盘上的一个文件,因此很有可能被用户删除。
  • Cookie的大小和个数受限,不同浏览器有所区别,基本上单个Cookie保存的数据不能超过4095个字节,50个/每个域名。
  • Cookie安全性不够高,所有的Cookie都是以纯文本的形式记录于文件中,因此如果要保存用户名密码等信息时,最好事先经过加密处理。

【Servlet】Cookie会话跟踪技术相关推荐

  1. cookie 会话跟踪技术

    cookie 会话跟踪技术 1.cookie就是会话跟踪技术 会话 : 从浏览器打开(网站打开) 到浏览器关闭的这样一个过程称为一次会话 会话跟踪技术 : 在打开浏览器操作cookie后,再次打开其他 ...

  2. java 会话跟踪技术_JavaEE基础(04):会话跟踪技术,Session和Cookie详解

    一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操作结果才能和登录用户做关联. 2.概念简介 可以把会话理解 ...

  3. JavaEE基础(04):会话跟踪技术,Session和Cookie详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.会话跟踪 1.场景描述 比如登录某个购物网站,身份识别成功后,在网站下单,支付 等操作,这些操作中当前登录用户信息必须是共享的,这样这些操 ...

  4. JavaWeb-WEB核心7 会话技术 理解什么是会话跟踪技术掌握Cookie的使用掌握Session的使用(钝化、活化)完善用户登录注册案例的功能

    会话技术 今日目标 理解什么是会话跟踪技术 掌握Cookie的使用 掌握Session的使用 完善用户登录注册案例的功能 1,会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理 ...

  5. 会话跟踪技术,Session和Cookie详解

    知识的广度来自知识的深度,学习如果不成体系那是多可怕的一件事儿,希望我们在未来的学习道路上坚守初心,不要给自己留下遗憾,以自己喜欢的方式生活,做自己喜欢做的事,宠爱自己,做一个独一无二的自己! 对于文 ...

  6. JavaWeb第四讲 会话跟踪技术HttpSession、Cookie、url、隐藏表单域

    会话跟踪技术Session.Cookie.url.隐藏表单域 (一)Session session是保存在服务器端,理论上是没有是没有限制,只要你的内存够大. 浏览器第一次访问服务器时会创建一个ses ...

  7. java logout session_会话跟踪技术--session的使用

    会话跟踪技术--session的使用 会话跟踪: 1.使用隐藏表单字段 2.URL重写 http://host/path/file.jsp?sessionid=landril 3.持久Cookie 4 ...

  8. java 4种跟踪会话技术_会话跟踪技术

    一.会话跟踪技术 在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束. 在一个会话的多个请求中共享数据,这就是会话跟踪技术 会话路径技术使用Cookie ...

  9. 解析Servlet/JSP会话跟踪机制

    在Web服务器端编程中,会话状态管理是一个经常必须考虑的重要问题.本文分析JSP/Servlet的会话管理机制及其所面临的问题,然后提出了一种改进的会话管理方法. 一.Servlet的会话管理机制 根 ...

最新文章

  1. iOS通过Plist保存离线调试日志
  2. Sybase数据库 概述部署命令
  3. [数学笔记Mathematical Notes]2-一个带对数的积分不等式
  4. boost::hana::type_foldl1用法的测试程序
  5. 我是如何自学 Python 的,分享一下经验
  6. 《高翔视觉slam十四讲》学习笔记 第四讲 李群与李代数
  7. golang的配置文件操作:viper
  8. 从AWS到阿里云: 产品体系差异分析 | 凌云时刻
  9. 图文并茂地带你了解kafka分区Rebalance机制
  10. g++ warn_unused_result
  11. localdatetime 后一天_LocalDateTime 获取上个月最后第一天及最后一天
  12. 计算机再带word打不开怎么办,word打不开怎么办
  13. java开发微信抢红包挂_微信抢红包算法实现(JAVA)
  14. 要考试了,通过爬虫获取试题,最后再看2小时
  15. 壹度同城新零售系统v4.1.23 社交电商 同城商城
  16. 金仓数据库 KingbaseES 异构数据库移植指南 (4. 应用迁移流程)
  17. afn访问本地html,Swift利用AFN实现封装网络请求详解
  18. Unity ECS 简介
  19. GNU Bison 2.1 中文手册
  20. SSH框架电力项目八--运行监控的保存

热门文章

  1. ACdream区域赛指导赛之手速赛系列(2)
  2. mongdb group聚合操作
  3. 译:1. RabbitMQ Java Client 之 Hello World
  4. Python中xPath技术和BeautifulSoup的使用
  5. 自动轮播与按钮的联动
  6. Mac 使用常见问题汇集
  7. 品味性能之道十一:JAVA中switch和if性能比较
  8. MVC的传递数据的方法
  9. CSS li 一半左浮一半右浮
  10. Centos服务器查看当前的并发数