深度认识Cookie

一、什么是Cookie?

  1. 其实cookie是由网络服务器存储在你电脑硬盘上的一个txt类型的小文件,它和你的网络浏览行为有关。
  2. Cookie是servelt发送到web浏览器的少量信息,这些信息由浏览器保存,然后返回服务器。
  3. 客户端有了Cookie之后,每次请求都发送到服务器。
  4. 每个Cookie的大小不能超过4kb。

详述:

在我们登录页面的时候,经常会看到一句话“是否让浏览器记住你的密码?”,提醒我们保存账号密码,下次访问就不在需要输入账号密码了。这就是Cookie的作用之一,但保存在Cookie中的信息是一个保密的内容,既然是放在本地的Cookie内容就可能被人盗。
浏览器中的Cookie
  当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。当你再次来到该网站时,网站通过读取Cookie,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。如果你清理了Cookie,那么你曾登录过的网站就没有你的修改过的相关信息。Cookie是非常常见的, 基本上你的浏览器中都会存储了成百上千条Cookie信息。
Cookie的作用和弊端
浏览器能够自动存储并管理Cookie。你可以在浏览器的设置中找到一大串的网站存储下来的Cookie以及查看这些Cookie。不过查看这些Cookie并不是什么有趣的事情。如果你的系统装有多个浏览器的话,那么每个浏览器都有着自己的Cookie。一个网站只能够读取属于自己网站的Cookie。举个例子来讲,当你访问IT之家时,我们是不能够检测到其它网站的Cookie的,这可以防止恶意网站窥探以及窃取你的登陆信息。
Cookie的好处
如果没有Cookie的存在,网络对于我们来说不会如此便捷。它存储着你的网站登录信息,如果没有他们,你将不能够登陆网站。网站通过Cookie信息来记忆以及辨认你的帐号,它可以记忆你的偏好设置。它还可以使网站提供个性化的内容,举个例子,如果你在淘宝上购物,淘宝可以记忆你所查看过的产品并据此来向你来推荐商品,即便你没有登陆个人帐号
Cookie的坏处
伴随着互联网巨大商机的出现,Cookie也从一项服务性工具变成了一个可以带来巨大财富的工具。部分站点利用Cookie收集大量用户信息,并将这些信息转手卖给其他有商业目的的站点或组织,如网络广告商等,从中牟利。使用Cookie技术,您在浏览Web站点时,不论是否愿意,您的每一个X作都有可能被记录下来,在毫无防备的情况下,您正在浏览的网站地址、使用的计算机的软硬件配置,甚至您的名字、电子邮件地址都有可能被收集并转手出售。随着互联网的商业化发展,该问题越来越严重,个人隐私的泄露所带来的并不单纯是一些垃圾邮件,一旦个人资料被滥用,信用卡密码被盗,后果不堪设想。也正因为如此,有关Cookie的争论从未停止过,用户对Cookie的态度也是爱恨交加。
管理浏览器中的Cookie
你可以通过设置窗口来管理浏览器的Cookie信息。当在清除Cookie时,你需要注意的是该网站对你是否有价值,是否还要登陆。

二、在Servelt程序中Cookie的使用

1.如何创建Cookie对象

//Cookie对象拥有键值对的 在Servelt程序中
Cookie cookie=new Cookie("key1","value1");

2.返回给客户端

//将创建的Cookie返回给客户端
response.addCookie(cookie)

3.服务器如何获取客户端Cookie

//获取由客户端保存的cookie数组
Cookie[] cookie=request.getCookies();
cookie.getName()返回cookie对象的key值
cookie.getValue()返回cookie对象的value值

4.服务器获取指定的cookie对象

if(name.equals(cookie.getName())){
	return cookie;
}

5.在服务器端修改Cookie

方案一:

//1。先创建一个要修改的同名的Cookie对象
Cookie cookie=new Cookie("key1","value2");
//2.然后返回给客户端
response.addCookie(cookie)

方案二:

//1.先找到需要修改的Cookie对象
	//CookieUtils是封装好寻找特定的Cookie对象的类
Cookie cookie=CookieUtils.findCookie("key1",request.getCookie());
if(cookie!=null){
//2.调用setValue()方法赋于新的Cookie值
	cookie.setValue("newValue2");
//3.将修改后的cookie返回给客户端
	response.addCookie(cookie);
}

注意:Cookie的值中不应该包含中文,花括号,圆括号,逗号,双引号,斜杠,问号,at符号等特殊符号,如果要是用,则需要进行base64编码处理。

三、Cookie的生命控制

setMaxAge()中的参数决定Cookie的声明周期。
正数:表示在指定描述之后就会销毁。
负数:表示浏览器一关,Cookie就会被删除(默认是1)
零:表示马上删除Cookie

Cookie cookie=CookieUtils.findCookie("key1",request.getCookie());
if(cookie!=null){
	//1.当参数为零时,马上删除cookie
	cookie.setMaxAge(0);
	response.addCookie(cookie);
	//2.当参数为正数时,表示若干秒之后cookie删除
	cookie.setMaxAge(60*60);
	response.addCookie(cookie);
	//3.当参数为负数时,表示一旦浏览器被关闭,cookie删除
	cookie.setMaxAge(-1);
	response.addCookie(cookie);
}

四、Cookie有效路径

我们打开浏览器,找到Cookie可以看到有一项属性是路径。
在这里插入图片描述
Cookie的path属性可以有效的的过滤哪些可以发送给服务器,那些不发。在第一次访问之后,服务器给所有的Cookie设置path属性,之后再次访问时,根据Path属性来进行过滤。

请求地址如下:http://ip:port/工程路径/a.html
CookieA              path=/工程路径            发送
CookieB              path=/工程路径/abc		   不发送

地址设置发生在服务器端

Cookie cookie=new Cookie("path1","value1");
//getContextPath()    ======得到工程路径
cookie.setPath(request.getContextPath()+"/abc");//得到工程路径
response.addCookie(cookie);

五、Cookie练习—免输入用户名登录

第一次登录的时候会创建一个Cookie,然后服务器返回给客户端进行保存。再次访问时,客户端会将Cookie回传给服务器。此时服务器可以直接调用Cookie对象.
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值