Cookie

1、Cookie概述
    保护用户的状态的两大机制:session和cookie,Cookie是Web服务器保存在客户端的一系列文本信息。主要应用场景:判断注册用户是否已经登录网站,购物车的处理等。
    Cookie的作用:对待定对象的追踪,保存用户网页浏览记录与习惯,简化登录。
    安全风险:容易泄露用户信息。

2、Http协议与Cookie
    Cookie是Http协议指定的,先由服务器保存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:aaa-AAA;bbb=BBB;
    http协议规定:
        1个Cookie最大4KB;
        1个服务器最多1个浏览器保存20个Cookie;
        1个浏览器最多可以保存300个Cookie;
    现在很多浏览器直接相互竞争,设置的Cookie保存的最大值超过4KB;
    Cookie是不能跨浏览器的。

3、Cookie的用途
    服务器使用Cookie来追踪客户端状态;
    保存购物车(购物车中的商品不能使用request保存,因为它是一个用户向服务器发送的多个请求信息);
    显示上次登录名(也是一个用户多个请求)。

4、JavaWeb中使用Cookie
    原始方式:
        使用response发送Set-Cookie响应头;
        使用request获取Cookie请求头;
    便捷方式:
        使用response.addCookie()方法向浏览器保存Cookie;
        使用request.getCookie()方法获取浏览器归还的Cookie;

    创建Cookie对象:
        Cookie newCookie=new Cookie(String key,Object value);
    写入Cookie对象: response.addCookie(newCookie);
    读取Cookie对象:
        Cookie[] cookies=request.getCookies();

    常用方法:
        void setMaxAge(int exoiry)设置cookie的有效值,以秒为单位;
        int getMaxAge()获取cookie的有效时间,以秒为单位;
        void setValue(String value)在cookie创建后,对cookie进行赋值;
        String getName()获取cookie的名称;
        String getValue()获取cookie的值;

5、Cookie的保存和获取
    在a.jsp中保存cookie,在b.jsp中获取浏览器归还的cookie

这里写图片描述

6、Cookie详解
    Cookie不只有name和value两个属性,还有maxAge;
    Cookie的manAge:Cookie的最大生命周期,即Cookie可保存的最长时长,以秒为单位,例如:cookie.setMaxAfe(60),表示这个Cookie会被浏览器保存到硬盘;
        maxAge>0:浏览器会把Cookie保存到客户机硬盘上,有效时长为maxAge的值决定;
        maxAge<0:Cookie只在浏览器内存中存在,当用户关闭浏览器时,浏览器进程结束,同事cookie也就会死亡;
        maxAge=0:浏览器马上删除这个cookie;

7、Cookie的path
    Cookie的path并不是设置这个cookie在客户端的保存路径;
    Cookie的path由服务器创建Cookie时设置,当浏览器访问服务器某个路径时,需要归还哪些Cookie给服务器,这由Cookie的path决定;
    浏览器发文服务器的路径,如果包含了某个Cookie的路径,那么就会归还这个Cookie;
    例如:
        aCookie.path=/hello
        bCookie.path=/hello/jsps
    cCookie.path=/hello/jsps/cookie;
    访问:/hello/index.jsp时,归还aCookie;
    访问/hello/jsps/a.jsp时,归还aCookie、bCookie;
    访问:/hello/jsps/cookie/b.jsp时:归还aCookie、bCookie、cCookie;
        Cookie的path默认值:当前访问路径的父路径。例如在访问/hello/jsps/a.jsp时,响应的cookie,那么这个cookie的默认path为/hello/jsps;

8、Cookie的域(domain)
    domain用来指定Cookie的域名,当多个二级域名中共享Cookie时才会用;
    例如:www.baidu.com/rj.baidu.com/new.baidu.com之间共享Cookie时可以使用domain。
    设置domain为:、cookie.setDomain(".baidu.com");
    设置path为:cookie.setPath("/");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值