Cookie

来源:互联网 发布:淘宝网限 编辑:程序博客网 时间:2024/06/05 07:23
====理论====
Cookie描述
Cookie是一个存在于客户端的存储机制,和Session一样也是Map结构的,但Cookie的value不能像Session一样
可以存Object,它只能存储String值,SessionID就存于Cookie中,而Cookie存于客户端硬盘上。


Cookie和Session的区别
Session是存储于服务器端的,由服务器去销毁和创建
Cookie是存储于客户端的,可以由服务器端去销毁和创建也可以客户端去销毁
Cookie可以和Session一样,浏览器关闭时销毁
Session也可以和Cookie一样,保存长时间,只要SessionID不丢,Session的存活时间够长就可以实现。
Session是可以存储Object value的Map,而Cookie只能存储String value。
Session是单例的,Cookie就很随意了,但是request中中的Cookie数组只有一个。


====应用====
获取Cookie
request.getCookies();
返回的是一个Cookie[]的引用,并不是一个新的Cookie数组,而是request中Cookie[]的引用。
所以会出现以下情况:
Cookie cks[] = request.getCookies();
cks[0].setMaxAge(30*60);
print(request.getCookies()[0].getMaxAge());
//其结果为1800,而不是原有的request的Cookie中0索引下的MaxAge,所以断定getCookies()返回的是request中
//的Cookie数组的引用。


创建Cookie
Cookie ck = new Cookie("key","value");只能存储String的value

删除Cookie
ck.setMaxAge(0);//表示立刻删除
ck.setMaxAge(-1);//表示浏览器关闭后删除JSESSIONID的MaxAge为-1

添加Cookie到客户端
response.addCookie(Cookie ck);
Cookie必须要执行这句代码才会被写入客户端的硬盘。

存储SessionID的Cookie
创建HttpSession后,会连Cookie一起创建,Cookie name为"JSESSIONID",值为SessionID"

0 0
原创粉丝点击