概述
“大爷,你知道马冬梅家住哪吗?”
“什么冬梅啊?”
“马冬梅!”
“马什么梅啊?”
“马冬梅!”
“冬什么梅啊?”
“好嘞,大爷您歇着吧。”
“好嘞。” 《夏洛特烦恼》
没有Cookie的时代,就是这样。无论你告诉浏览器多少次,浏览器都不会记住你,因为我们发送请求更多的是使用的HTTP1.0的(现在应该是1.1),没有cookie就给我们的服务带来很大的困扰(可以使用URL但是不安全),我们不清楚用户是谁,更别提提供个性化的服务等等。
所以Cookie技术应运而生,当用户访问服务器的时候,我们在相应的时候告诉服务器,你应该存一个cookie,将用户的信息存入浏览器的缓存,那么当每一次访问的时候,你给我带过来就行了,我就知道你是谁了。
类比:
我去超市买东西。
结账的时候,收银员说你把个会员卡吧,下次来就方便了。
我说可以,然后录入自己的信息。
带着超市的卡回家了。
代码的实现:
@WebServlet
其中,resp.addCookie(c)会在响应头中添加一个set-cookie的响应头,告诉浏览器应该缓存这个cookie:
这时候请求头就会设置这个cookie值,在每一次的请求中直接带到服务器,我们拿到cookie,自然就知道谁在请求。
我们可以把这个cookie就相当于存储在了浏览器的缓存中去,那么缓存中的数据主要是的操作就是增删改查,我们就简单的看下API即可。
//1. 创建cookie对象
根据cookie的最大生存时间我们可以分为
- 正常的cookie:expiry>0,单位是秒.
- 会话cookie:expiry<0,浏览器关闭,cookie删除
- 删除cookie,:expiry=0,立即删除cookie
Cookie的中文问题解决方案:
cookie是不能够直接存储中文的,必须通过编码之后才能够储存,类似于表单的编码,需要通过JAVA的UrlEncoder的encode和decode来编码和解码.
Cookie的路径以及域名设置的细节:
浏览器中存有多个cookie,cookie的传递规则:那个路径创建的,我传递的时候就在这个路径传递.比如,创建cookie的servlet的路径是/a/b/c/d, cookie路径就是/a/b/c,会在c路径及以下路径传递cookie.当然我们可以自己设置传递的路径:
同一个域才可以发送cookie数据.自己项目的cookie,只会发送到自己的项目.可能有多个项目,每一个项目都部署到一台服务器,都是使用的特有的域名.可能在多个项目中,都需要使用到同一个账户信息.
一级域名: http:// baidu.com
二级域名: http:// tieba.baidu.com
void setDomain(java.lang.String pattern) :设置cookie的域.
cookie.setDomain(“baidu.com”);
其实Cookie还有很多的缺点,比如
- cookie中存储中文麻烦.
- cookie保存在客户端,不安全.
- cookie存储的信息有限.
我们可以通过session的技术更加优雅的解决cookie所面临的问题,这个下篇文章在分享(文章图片多数由叩丁狼笔记中截图).
最后
以上就是俊秀唇膏为你收集整理的cookie的生存时间单位是_一文搞清楚Cookie概念和难点的全部内容,希望文章能够帮你解决cookie的生存时间单位是_一文搞清楚Cookie概念和难点所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复