cookie的详情

1)cookie和session区别?
Cookie会话数据保存在浏览器端
Session会话数据保存在服务器端

2)cookie类中的主要api。
Cookie类:用于存储会话数据

            1)构造Cookie对象
                Cookie(java.lang.String name, java.lang.String value)
            2)设置cookie
                void setPath(java.lang.String uri)   :设置cookie的有效访问路径
                void setMaxAge(int expiry) : 设置cookie的有效时间
                void setValue(java.lang.String newValue) :设置cookie的值
            3)发送cookie到浏览器端保存
                void response.addCookie(Cookie cookie)  : 发送cookie到浏览器
            4)服务器接收cookie
                Cookie[] request.getCookies()  : 从浏览器接收cookie对象

问题3)cookie的有效路径?(cookie数据在访问哪个路径时候有效,request带哪些cookie数据)
1)默认的情况下,cookie的有效路径是当前项目下。
2)设置cookie的有效路径。(决定request带哪些cookie数据)
请求数据中,只有请求该路径的时候,会带上该路径下的所有cookie数据。

问题4:)设置cookie的有效时间。(默认情况下是浏览器关闭,cookie删除)
* void setMaxAge(int expiry)
* 正整数:表示cookie保存在硬盘上,多少秒。(浏览器关闭也不会影响cookie值)
* 负整数(任意负数):表示cookie保存在浏览器内存中。(关闭浏览器cookie删除)
* 零:表示删除同名的cookie
cook01.setMaxAge(10); // 10秒钟删除
cook02.setMaxAge(-1); // 关闭浏览器,删除cookie

    Cookie cook03 = new Cookie("password","");
    cook03.setMaxAge(0);    // 删除同名的cookie

问题5)浏览器cookie的存储空间?
浏览器允许存放300个cookie,每一个站点最多存放20个cookie,每个cookie最大4kb

6)例子:
1) 创建cookie
Cookie cook01 = new Cookie(“user”,”123”);
Cookie cook02 = new Cookie(“password”,”abc”);
2)设置cookie的访问路径.
* setPath()
* 默认是在当前项目下有效:浏览器request头会带上cookie数据,只带该路径下的cookie数据。
cook01.setPath(“/testcookiepath”);
cook02.setComment(“/dialog”);
3)设置cookie的有效时间。
* void setMaxAge(int expiry)
* 正整数:表示cookie保存在硬盘上,多少秒。(浏览器关闭也不会影响cookie值)
* 负整数(任意负数):表示cookie保存在浏览器内存中。(关闭浏览器cookie删除)
* 零:表示删除同名的cookie
cook01.setMaxAge(10); // 10秒钟删除
cook02.setMaxAge(-1); // 关闭浏览器,删除cookie

    Cookie cook03 = new Cookie("password","");
    cook03.setMaxAge(0);    // 删除同名的cookie

4)把cookie数据发送给浏览器.
* 方法1)通过http协议头信息,发送到浏览器。(如果有多个key-value对,在后面追加,不能再写一次setHeader)
* setheader()方法只能调用一次,不然只能保留最后一次发送的cookie
* 方法2)通过addCookie方法。(封装好的方法)
* 可以多次调用addCookie方法。
//方法1
response.setHeader(“Set-Cookie”,cook01.getName()+”=”+cook01.getValue()+cook02.getName()+”=”+cook02.getValue());
//方法2
response.addCookie(cook01);
response.addCookie(cook02);
5)接收浏览器发送过来的cookie
* 方法1)通过该http获取头方法。
* getHeader(cookie);来获取所有的cookie
* 方法2)通过
//方法1
// String userpd = request.getHeader(“cookie”);
// System.out.println(userpd);
//方法2
Cookie[] cooks = request.getCookies();

    if(cooks != null){
        for(Cookie ck : cooks){
            String key = ck.getName();
            String value = ck.getValue();
            System.out.println(key+"="+value);
        }
    }else{
        System.out.println("cookie为空!,浏览器没有存储的cookie");
    }

猜你喜欢

转载自blog.csdn.net/newVenues/article/details/70256913