菜逼学习笔记:Cookie

Cookie机制采用的是在客户端保持HTTP状态信息的方案

Cookie是在了浏览器访问WEB服务器的某个资源时,由WEB服务器在HTTP响应消息头中附带传送给浏览器的一个晓文本文件

一旦WEB浏览器保存了某个Cookie,那么它在以后每次访问该WEB服务器时都会在HTTP请求头中将这个Cookie回传给WEB服务器。

底层的实现原理:WEB服务器通过在HTTP响应消息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在HTTP请求消息中增加Cookie请求头字段将Cookie回传给WEB服务器。

一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。

一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个站点提供的Cookie。

浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4kb。

Cookie的发送:

如果创建了一个Cookie,并将他发送到浏览器中,默认情况下他是一个会话级别的cookie,存储在浏览器的内存中,用户退出浏览器后被删除,若要浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间,若将最大时效设置为0就是命令浏览器删除该cookie,若为负数表示不存储该cookie

发送cookie需要使用HttpServletResponse的addCookie方法,将cookie插入到一个Set-Cookie HTTP响应报头中。由于这个方法并不修改任何之前指定的Set-Cookie报头,而是创建新的报头,所以这个方法为addCookie而不是setCooke。


Cookie的作用范围:可以作用当前目录和当前目录的字子目录,但不能作用于当前目录的上一级。

可以通过SetPath()方法来设置Cookie的作用范围, / 代表站点的根目录。


Cookie的读取:

1.调用request.getCookies

要获取浏览器发送来的cookie,需要调用HttoServletRequest的getCookies方法,这个调用返回Cookie对象的数组,对应由HTTP请求中Cookie报头输入的值。

2.对数组进行循环,调用每个cookie的getName方法,知道找到你要的cookie为止。



//获取Cookie

Cookie[] cookies=request.getCookies();
if(cookies != null&&cookies.length>0){
for(Cookie cookie: cookies){     //遍历
//获取cookie的name和value
out.print(cookie.getName()+":"+cookie.getValue()); 
out.print("<br>");
}
}else{
out.print("没有一个Cookie,正在创建并返回");
//1.创建一个Cookie对象
Cookie cookie = new Cookie("name","aaa");
cookie.setMaxAge(60);
//2.调用response的一个方法把Cookie传给客户端
response.addCookie(cookie);
}

Cookie的作用范围:可以作用当前目录和当前目录的字子目录,但不能作用于当前目录的上一级

可以通过SetPath方法来设置Cookie的作用范围, / 代表站点的根目录

猜你喜欢

转载自blog.csdn.net/rhhboring/article/details/80323857