JavaWeb笔记-cookie

1、基本介绍
cookie机制采用的是在客户端保持 HTTP 状态信息的方案。当浏览器访问WEB服务器的某个资源时,WEB服务器会在HTTP响应头中添加一个键值对传送给浏览器,再由浏览器将该cookie放到客户端磁盘的一个文件中,该文件可理解为cookie域(键值对的集合),往后每次访问某个网站时,都会在请求头中带着这个网站的所有cookie值。(至于怎么区分不同网站的cookie的,很简单,每个网站都给他一个唯一标识比如网址等,每次打开某网址时,就查询该网站下的所有cookie值即可。)

每一个cookie都有一个name和一个value,且name是唯一的。相同名字时,后者会覆盖掉前者(类似哈希表的key的效果)。

一个WEB浏览器也可以存储多个WEB站点提供的Cookie。浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

2、分类
会话级别的cookie
默认情况下它是一个会话级别的cookie,存储在浏览器的内存中,用户退出浏览器之后被删除。

持久化的cookie
若希望浏览器将该cookie存储在磁盘上,则需要设置该cookie的生命周期setMaxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。

3、cookie的作用域
cookie的domain和path属性定义了cookie的作用范围,即访问哪些网站或url时,会自动的带着该cookie。domain即域名,默认是当前主机(不包括子域名),path默认是*(所有路径),即域名后面的的路径。大部分情况下我们都是使用默认的设置即可。

4、基本原理
当一个浏览器访问某web服务器时,web服务器会调用HttpServletResponse的addCookie()方法,在响应头中添加一个名叫Set-Cookie的响应字段用于将Cookie返回给浏览器,当浏览器第二次访问该web服务器时会自动的将该cookie回传给服务器,来实现用户状态跟踪。

5、常用API
javax.servlet.http.Cookie类来封装Cookie信息,它包含有生成Cookie信息和提取Cookie信息的各个属性的方法。

public Cookie(String name,String value)

setMaxAge(int longTime)与getMaxAge方法:设置和获取cookie的最大有效时长。setMaxAge(0) 表示删除磁盘上的某个cookie。

注意:

cookie没有提供修改方法,当name一样时,覆盖原来的就算是更新了。

删除也是,setMaxAge(0),当name一样时,原来的会被覆盖掉,新建的没有生命周期,也会被立马删除。

setPath与getPath方法 :设置或读取Cookie的作用范围。

HttpServletResponse接口中定义了一个addCookie(Cookie cookie)方法,它用于在发送给浏览器的HTTP响应消息中增加一个Set-Cookie响应头字段。

HttpServletRequest接口中定义了一个getCookies方法,它用于从HTTP请求消息的Cookie请求头字段中读取所有的Cookie项。

getName方法 :获取到cookie的name。

setValue(String value)与getValue方法:设置和获取cookie的value。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值