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对象基础知识** 在Web开发中,Cookies是用于在客户端存储少量数据的一种机制。它们是服务器发送到用户浏览器并由浏览器保存的小型文本文件。这些文件包含键值对,允许服务器在用户浏览网站时跟踪信息,...
### Servlet基础知识总结 #### 一、Servlet简介 Servlet是一种服务器端的小程序,是Java平台上的一个重要的技术之一,主要用于处理客户端的HTTP请求并生成动态网页。Servlet是在服务器端运行的,能够提供各种服务...
在Java编程中,HTTP协议是网络通信的基础,而Cookies是HTTP协议中用于管理状态的一种机制。这个源码整理主要关注如何在Java中使用HTTP进行Cookies的操作。以下是对这些知识点的详细解释。 首先,理解Cookies的基本...
**一、Cookies基础知识** 1. **定义**:Cookies是由网站服务器发送到用户浏览器并存储在本地的一小片数据。当用户再次访问同一网站时,浏览器会将这些Cookies回传给服务器,帮助服务器识别和记住用户的特定信息,如...
1. JavaScript 的基础知识 在学习 JavaScript 之前,你需要了解 HTML 和 XHTML 的基础。JavaScript 被设计用来向 HTML 页面添加交互行为,通过在 HTML 中插入 JavaScript 代码,可以实现页面元素的动态操作和用户...
为了深入理解这个源码,你需要具备易语言的基础知识,并对网络通信和COOKIES有一定的了解。解压并查看源码,通过调试和阅读代码,可以更直观地学习到上述知识点的具体应用。如果你对易语言或者COOKIES操作感兴趣,这...
#### 二、基础知识 ##### 2.1 C#简介 C#(发音为“C Sharp”)是由微软公司开发的一种面向对象的、类型安全的编程语言。它结合了C++的强大功能和Visual Basic.NET的易用性,广泛应用于Windows平台的应用开发,包括...
总的来说,下载和学习“最近浏览记录(Cookies)”的相关知识,不仅可以帮助你理解如何利用Cookies进行用户行为追踪,还可以深入理解ASP.NET和C#中处理Cookies的方法,对于提升你的IT技能和Web开发能力大有裨益。
计算机网络基础知识涵盖了许多方面,包括但不限于网络架构、协议、设备、安全和管理。在这个文档中,我们主要讨论了一些基础概念和实用的命令行工具。 首先,了解网络连接的状态至关重要。`netstat -a -n`命令可以...
这些问题涵盖了 PHP 的基础知识点,包括 MySQL 连接、PHP 循环语句、超全局变量、运算符优先级、Cookie 存储、变量类型、字符串比较、复选框类型、SESSION 会话、最近一条查询信息、结构类型变量、客户端 Cookies ...
1. **Cookies基础**:Cookies是Web应用程序用来存储客户端状态的一种机制。它们由服务器发送到用户的浏览器,并存储在本地,当用户再次访问同一网站时,浏览器会将这些Cookies回传给服务器,以便识别用户身份和提供...
### Python 爬虫基础知识 Python 爬虫(Web Scraping)是指使用 Python 编写程序来自动从网站上抓取数据的过程。它通常涉及到 HTTP 请求、HTML 解析、数据处理和存储等步骤。下面是一些 Python 爬虫的基础知识: #...
了解这些基础知识后,对于网络安全专业人士而言,掌握如何防止cookies注入至关重要。这包括采用HTTPS加密通信、对敏感数据进行哈希或加密、设置合理的cookies生命周期以及实施严格的输入验证等措施。同时,定期进行...
购物车功能在电子商务网站中扮演着至关重要的角色,它允许用户临时存储想要购买的商品,...虽然在实际的电商网站中,这样的解决方案可能过于简单,但对于学习基础的Web开发和理解购物车逻辑来说,这是一个很好的起点。
描述“查看IE的cookies工具_original”进一步说明这可能是一个原始的或基础的工具,专门设计用于查看IE的Cookies。 **关于查看IE Cookies的知识点** 1. **什么是Cookie?** - Cookie是由服务器发送到用户的浏览器...
在深入研究这个源码时,我们需要具备一定的易语言基础知识,同时对网络通信和QQ空间的API有一定了解。通过学习和分析,不仅可以提升易语言编程技能,还可以了解到网络编程和模拟登录的具体实现。
### Python Web 编程基础知识 #### GET与POST的区别 在Web开发中,GET与POST是最常用的两种HTTP请求方法。理解这两种方法的区别对于进行有效的Web应用开发至关重要。 - **GET**: - 主要用于从服务器获取数据。 ...
Python爬虫基础知识是入门网络数据抓取的重要领域,它涵盖了Python编程语言的基础、网络请求、HTML解析、数据存储等多个方面。下面将详细讲解这些关键知识点。 首先,Python是一种广泛使用的高级编程语言,因其简洁...