javaWeb---cookie

Cookie

1.Http协议与Cookie

--》Cookie是由Http协议指定的,现有服务器保存cookie到浏览器。在下次浏览器请求服务器时再把上一次请求得到的cookie归还给服务器;

--》cookie是由服务器创建并保存到浏览器端的一个键值对。服务器保存cookie的响应头:Set-Cookie:aaa=AAA   Set-Cookie:bbb=BBB

response.addHeader("Set-Cookie","aaa=AAA");   response.addHeader("Set-Cookie","bbb=BBB");//多次添加Cookie

--》当浏览器请求服务时,会把服务器保存的cookie随请求发送给服务器,浏览器归还cookie的请求头:Cookie:aaa=AAA;bbb=BBB //一次返回Cookie

--》Http协议规定(保证不给浏览器太大的压力):

===1个cookie最大4kb

===1个服务器最多想一个浏览器保存20个cookie

===1个浏览器最多可保存300个cookie

2.cookie的用途

--》服务器使用cookie来跟踪客户端状态;

--》保存购物车(购物车中的商品不能使用request保存,因为它是一个用户想服务器发送的多个请求信息);

--》显示上次登录名(一个用户多次请求,多次登录);

3.JavaWeb中使用cookie:

不再使用原始response.setHeader()的方法,而是使用便捷方式。

--》向浏览器保存cookie:response.addCookie();一次设置一个键值对,可设置多次

--》获取浏览器归还的cookie:request.getCookies();归还所有的键值对(cookies)


    

保存cookie

<% Cookie cookie1=new Cookie("aaa","AAA"); Cookie cookie2=new Cookie("bbb","BBB"); response.addCookie(cookie1); response.addCookie(cookie2); %>

    

获取Cookie

<% Cookie[] cookies=request.getCookies(); if(cookies!=null){ for(Cookie c:cookies){ out.println(c.getName()+":"+c.getValue()+"
"); } } %>

4.cookie详解:

cookie是不能跨浏览器的。

Cookie不仅仅只有name和value两个属性,其他属性有:

(1)maxAge(生存时间):cookie的最大生命周期,即cookie可保存的最大时长。以秒为单位,例如:cookie.setMaxAge(60)表示这个cookie会被浏览器保存到硬盘上;60*60*24*365*10------10年

--》maxAge>0:浏览器会把cookie保存到客户机硬盘上,有效时长由maxAge的值决定;

--》maxAge<0:cookie只在浏览器内存中保存,当用户关闭浏览器时,浏览器进程结束,同时cookie也就死亡了;

--》maxAge=0:浏览器会马上删除这个cookie。

(2)path(路径)

--》cookie的path路径不是设置这个cookie在客户端的保存路径;

--》cookie的path由服务器创建cookie时设置(设置cookie的页面所在的当前目录);

--》当浏览器访问服务器某个路径时,需要归还那些Cookie给服务器呢?这由Cookie的path决定;

--》浏览器访问服务器的路径,如果包含某个cookie的路径,那么就会归还这个cookie。

看访问路径是否包含cookie路径,包含则返回此cookie,否则不返回。

(3)domain(cookie的域)

--》domain用来指定cookie的域名,当多个二级域中共享cookie时才有用。

例如:www.baidu.com、zhidao.baidu.com、news.baidu.com、tieba.baidu.com之间共享cookie时可以使用domain

设置domain为:cookie.setDomain(".baidu.com");

设置path为:cookie.setPath("/");


你可能感兴趣的:(java)