凯哥学堂

搜索

凯哥学堂

Cookie

2017-11-17 16:21| 发布者: 可可| 查看: 8| 评论: 0|原作者: 夏目有尔|来自: 凯哥学堂VIP15班

凯哥学堂 首页 资讯 学习笔记 JavaEE 查看内容

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。

1.介绍:
客户端每访问一次服务器都会产生请求对象和响应对象,http的请求是无状态连接,所谓的无状态连接就是服务器对用户的访问不会产生记忆,当某个用户访问了服务器之后,如果此用户再次去访问此服务器,服务器是不会认识这个用户的,它无法识别这就是之前来访问的某个用户,因此此用户之前所做的一系列操作在此次访问服务器时都是没有记录的,这就给用户带来了不便。比如用户登录页面将一件商品加入了购物车,当用户第二次登录时就会发现之前加购的商品信息不见了,因为对于服务器来说用户的每次访问都会被当作是新用户访问来看待。Cookie就是用来解决这一问题的,它可以给用户的信息做一个标记,这样服务器识别到此标记之后就会认识这个用户。
2.Cookie的通信原理:

image

如上图所示,当用户第一次访问登录页面并通过登录验证后,会将可以作为标记用来识别用户身份的信息放在Cookie信息中,然后在服务器响应浏览器时,Cookie信息会包装在响应对象中被浏览器下载,当用户第二次去访问的时候,之前下载下来的Cookie信息会随着请求信息一起传给服务器,然后服务器就会进行识别。所以想给浏览器带Cookie信息就找响应对象,想得到浏览器带来的Cookie信息就找请求对象。
当Cookie信息随着响应头信息一起下载到浏览器时,浏览器会将其保存到内存中,所以浏览器一关闭就没有了,但如果给Cookie设置了时间(以秒为单位),无论时间是多短或多长,Cookie信息就会写入硬盘中直到设置的时间。
3.代码示例:

image

image

image

30s后再去访问BServlet,会发现没有这个Cookie值:

image

但如果是在30s之内访问的BServlet就可以看到Cookie值,即使是关闭浏览器,再打开浏览器(同一浏览器),在规定好的时间内访问BServlet都是可以看到Cookie值的:

image

但如果没有设置时间,一旦关闭浏览器再次打开浏览器去访问BServlet就没有Cookie值了,除非再访问AServlet再存储一次Cookie信息。
4.用户登录小例题:
代码示例:

image

image

image

image

image

image

image

image

数据库内容:

image

image

运行结果:

image

image

image

image

image


关注我们


微信

微博

QQ