cookie基本知识

一.cookie作用

    cookie是浏览器端记录信息的技术

    cookie和session 都属于会话技术.

二.cookie基本操作

    创建cookie:
        Cookie cookie = new Cookie(String key,String value);
    发送cookie:
        response.addCookie(cookie);
    获得cookie:
            Cookie cookie = null;
 
            Cookie[] cookies =  request.getCookies();
            
            if(cookies!=null && cookies.length>0){
                for(Cookie c : cookies ){
                    if(c.getName().equals("remember")){
                        cookie = c;
                    }
                }
            }

三.cookie的细节

    1>关于浏览器记住多久.
        *(默认情况) 当浏览器关闭时(会话结束时)
        //cookie.setMaxAge(60*60*24*7*2);//两周
        //cookie.setMaxAge(-1);//(默认情况)浏览器关闭时删除cookie
        //cookie.setMaxAge(0);// 用于删除cookie
    2>浏览器在什么情况下发送cookie(cookie的路径问题)
        *cookie的默认路径就是 发送cookie的动态资源所在的上一级路径.
        *如果 cookie路径是"/cookie",  那么浏览器在访问cookie路径的所有子路径时会携带cookie.
                http:/localhost:8080/cookie/BServlet        会发送        
                http:/localhost:8080/cookie/ABC/BCD/CServlet    会发送    
                http:/localhost:8080/session/AServlet            不会发送            
                http:/www.baidu.com/cookie/BServlet    不会发送    
        *cookie的默认路径就是发送cookie的资源(AServlet)所在路径
        *使用代码手动控制cookie路径以及主机:
                cookie.setPath("/cookie");
    3>    cookie中主机问题(了解)
        *cookie的默认主机就是发送cookie资源所在的主机
        *主机用处: 如果cookie需要发送,那么主机也必须符合.
        *主机的手动控制:
                理论上可以手动控制. 主机的设置不允许设置发送cookie资源所在主机以外的其他主机.
                //cookie.setDomain("www.baidu.com"); //不允许
                //cookie.setDomain("localhost"); // localhost => 特殊的主机 =>不能设置
                cookie.setDomain(".baidu.com");//如果我们当前主机是www.baidu.com.那么这么设置是没问题的
    4> cookie删除的问题
        原理: 使用一个寿命为0的cookie覆盖要删除的cookie.
        如何覆盖: 保证3点一致,即可覆盖=> 主机,路径,cookie的键
    5> (了解的了解) 跨域(主机)共享cookie.
        需求: cookie可以跨越多个主机 例如: www.baidu.com  music.baidu.com 等等
        操作:
                    1. 将cookie的主机设置为".baidu.com" => *.baidu.com主机都满足
                    2. 将cookie的路径设置为"/"=> 什么路径都满足
    6> 使用cookie记录中文键值对问题.
        原则: 响应头和请求头中不允许使用中文编码. 只能使用ISO-8859-1编码.
        解决: 使用URLEncode编码,即可.
        操作:
            工具类(JDK提供):使用 URLEncoder.encode()方法编码

                            使用 URLDecoder.decode()方法解码



你可能感兴趣的:(cookie,cookie)