Http协议是无连接的,意思是说当我们的浏览器请求服务器的一个页面时,一旦请求完成,服务器作出响应,客户端浏览器拿到这个页面的内容,立即断开连接,说白了就是Socket关闭了,浏览器和服务器之间就没有连接了。
那有个问题比如,我们上京东买本书,在还未登陆的情况下(避免与Session冲突),通常情况是在一个页面点击购买或加入购物车,点击结账会跳到另一个页面,另一个页面会显示我们购买的书。
既然Http协议是无连接的,当我们通过第一个页面点击购买后,连接就断了,哪到第二个页面,它(服务器)怎么知道我买的是哪本书,或者知道我买的是什么,或者我是谁?这就是Cookie在起作用,它帮服务器记住了。(当然这里除了Cookie,还有浏览器的特性,比如每个浏览器有唯一的编号,当我请求第二个页面时,服务器会到我本地来取Cookie信息)
因为Http协议是无连接的,所以它需要一种类似QQ聊天那样的不断与服务器保持连接的机制,用它来记录着客户端浏览器在我服务器端都干什么了,用我们的行话来说就是维护用户跟服务器间的会话状态,所以就产生了Cookie,Session, 以及Application等会话技术。
那Cookie到底是个什么东西呢?
Cookie是服务端写在客户端本地一个文件,你放心不会是病度或木马,因为Cookie只允许它创建txt的文本文件。客户端浏览器也可以阻止Cookie的写入,比如上面买书,如果浏览器Cookie被禁止写入,那么第二个页面购物车将看不到任何东西。还有每个网站写的Cookie都不一样,新浪可以写,搜狐也可以写,但它们都只能拿自己的Cookie。
以Java为例,说说Cookie的用法:
Cookie是以“名-值”对的形式保存的,类似Map;
创建Cookie:new Cookie(name,value);
setName(String name) / getName();
setValue(String value) / getValue();
setMaxAge(int expiry) / getMaxAge();
利用HttpServletResponse的addCookie(Cookie cookie)方法将Cookie设置到客户端;
利用HttpServletRequest的getCookies()方法来读取客户端的所有Cookie;
因为Cookie可以设置存活时间setMaxAge(int expiry),因此就有了存储方式的不同:
1.设置了存活时间的Cookie,会在客户端本地创建一份Cookie文件。
2.没有设置存活时间的Cookie,会在客户端浏览器内存中创建一份Cookie,它在本地Cookie文件中是找不到的,它的生命周期依赖于浏览器窗口,当浏览器窗口关闭,它将消失,而且其它新开的浏览器窗口都访问不到它,只有它和它的子窗口,即通过window.open()出来的,可以访问,测试的时候可以使用快捷键ctrl+n弹出一个子窗口。
经过测试改变设置和访问Cookie的URL路径,Cookie的访问也会有所不同:
1.设置Cookie的Servlet URL:/servlet/SetCookies
访问Cookie的Servlet URL:/ShowCookie
发现SetCookies可以创建Cookie,但ShowCookie访问不到
2.设置Cookie的Servlet URL:/SetCookies
访问Cookie的Servlet URL:/servlet/ShowCookie
发现SetCookies可以创建Cookie,ShowCookie也访问到
从包结构的访问层次来说,就是因为1中,ShowCookie路径比SetCookies高一级,而2中,ShowCookie是SetCookies的子级,因此可以得出一个Jsp/Servlet设置的Cookie可以被同一路径或子路径的Jsp/Servlet访问得到。
总结一下Cookie的特点:
1.服务器可以向客户端写内容
2.只能写文本内容
3.只能拿自己webapp写入的Cookie
4.客户端可以阻止服务器Cookie的写入
5.Cookie分两种:
存在于文本文件
存在于内存(属于窗口/子窗口)
6.一个Jsp/Servlet设置的Cookie可以被同一路径或子路径的Jsp/Servlet访问得到
以上是个人学习和总结,欢迎拍砖。
相关推荐
Cookies对象,一些基本知识,希望能帮助你们!
Cookies想必所有人都了解本文将围绕Cookies基础知识(什么是Cookies/Cookies如何传递/Cookies如何存储/Cookies如何查看)Cookies高级知识/Cookie的限制等等方方面面深入了解,感兴趣的朋友可以参考下,或许对你学习...
本课程是唐亮老师推出的第二门小专题课程,所讲述的内容都属于较基础的知识,无论开发人员应用何种语言进行开发,都需要了解并掌握这些基础知识。这些小专题课程短小灵活,能够让你在极短时间内掌握一个知识点的要领...
下文重点给大家介绍js组成,引入,输出,运算符基础知识,具体详解如下所示: JavaScript组成: ECMAscript 浏览器对象模型 BOM 文档对象模型 DOM // ecmascript bom dom dom (文档对象模型) 用来访问和操纵html...
第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了深入的剖析,这些攻击往往基于客户端,从挂马、窃取Cookies、会话劫持到钓鱼欺骗,各种攻击...
作者不仅讲授了开发公共站点及REST API的基础知识,同时还讲解了构建单页、多页及混合Web应用的规划方式及最佳实践。具体而言,第1~5章介绍Node 和Express,搭建一个示例网站的骨架,讨论测试和QA。第6~12章介绍Node...
第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了深入的剖析,这些攻击往往基于客户端,从挂马、窃取Cookies、会话劫持到钓鱼欺骗,各种攻击...
zhaoeh.github.io博客适合Java语言开发服务器入门博客主要分为以下模块: Java基础介绍了Java语言的语法基础知识,包括数据类型,对象集合,条件结构,循环结构,文件操作,多线程,网络编程,反射等。 JavaWeb基础...
在之前先科普一下基础知识: 什么是Cookies? Cookies是一些小文件,它们被创建在客户端的系统里,或者被创建在客户端浏览器的内存中(如果是临时性的话)。用它可以实现状态管理的功能。我们可以存储一些少量信息到...
46 7.06下载中间件的Cookies.mp4 47 7.07crawlspider规则爬虫.mp4 48 8.01回顾知识点.mp4 49 8.02强化规则爬虫.mp4 50 8.03图片管道的应用.mp4 51 8.04说明自定义图片管道.mp4 52 8.05scrapy中日志记录器.mp4 ...
第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了深入的剖析,这些攻击往往基于客户端,从挂马、窃取Cookies、会话劫持到钓鱼欺骗,各种攻击...
爬虫基础之request模块的使用 知识点: 掌握 headers参数的使用 掌握 发送带参数的请求 掌握 headers中携带cookie 掌握 cookies参数的使用 掌握 cookieJar的转换方法 掌握 超时参数timeout的使用 掌握 代理ip参数...
HTTP,PHP基础知识的基本行为 了解HTTP(Web程序正常工作所需的协议)和PHP(动态Web应用程序的服务器端语言)。 在本活动中,将使用最新版本PHP 8,并使用JetBrains PHPStorm设置开发环境。 表格,方法,标题 了解...
本视频主打内容最全最新,包括大前端基础与高频面试题,打造一站式知识长龙 服务,适合有前端基础的同学学习。 课程需知: 课程面向的同学是:有前端基础的同学。 课程内容: —.HTML5面试题 1.如何理解HTML5结构...
16.1 播放器的基础知识 16.1.1 Windows Media Player 16.1.2 RealPlayer 16.2 播放列表的生成 16.3 视频音频播放的应用示例 16.3.1 自己风格的Windows Media Player播放器 16.3.2 自己风格的Real MediaPlayer播放器 ...
2.2.5 有关LILO的基础知识 2.3 Linux的安装 2.3.1 首先应该知道的事 2.3.2 开始安装:有关安装启动程序的选择 2.3.3 安装过程 2.3.4 最后的设置工作 2.3.5 安装LILO 2.4 Linux下的硬件设备管理 2.4.1 Linux设备管理...