16.Cookie

作者: 若愚同学 | 来源:发表于2018-06-19 22:54 被阅读0次

    Cookie:

    点心,可以使用会话跟踪.

    客户端技术:

    把需要共享的信息,保存在客户端(浏览器中).

    Cookie的操作:

    1:创建Cookie和设置共享数据:
    Cookie c = new Cookie(String name,String value).
    
    2:把Cookie放入响应中,把Cookie的共享数据传递给浏览器,由浏览器保存.
    response对象.addCookie(C).
    
    3.获取Cookie和Cookie中的数据.(从请求中获取)
    Cookie[] cs = req.getCookies();
    if(cs != null){
        //获取指定名称的Cookie
        for(Cookie cookie : cs){
            String name = cookie.getName();
            if("currentName".equals(name)){
                username = cookie.getValue();
                break;
            }
        }
    }
    
    4.Cookie的name和value不支持中文.

    解决方案:对中文做编码和解码.

    String msg = "济天下";
    //加密
    msg = URLEncoder.encode(msg,"UTF-8");
    System.outprintln(msg);
    //解密
    msg = URLDecoder.decode(msg,"UTF-8");
    System.out.println(msg);
    
    5.修改Cookie指定名的value值.

    方式1:根据name获取被修改的Cookie对象,再调用setValue方法既可.

    方式2:重新创建一个同名的Cookie.

    注意:修改之后,要调用response对象.addCookie(c);

    6.Cookie的生命周期:(Cookie中的共享数据可以保存多久)
    缺省的情况:关闭浏览器就丢失了.
    通过Cookie对象的setMaxAge(int seconds):设置Cookie可以存活多久.

    seconds>0:可以存活多少秒.

    seconds<0:存放在浏览器进程中,关闭浏览器Cookie就丢失了.

    seconds=0:删除Cookie.

    7:删除Cookie:

    Cookie对象.setMaxAge(0);

    8):Cookie的路径和域范围:
    Cookie的路径:
    Cookie对象.setPath(String path):
    
    若不设置,那么使用的存放CookieServlet资源名的相对路径:
    
    LoginServlet("/cookie/login"):存放一个Cookie.
    
    ListServlet("/list");
    
    由LoginServlet跳转到ListServlet,就不会再请求中携带Cookie.
    相当于此时:cookie.setPath("/cookie");
    
    设置在整个应用中在请求的时候都会携带Cookie.
    cookie.setPath("/");
    
    不同应用/主机之间如何共享Cookie:
    此时就得需要设置域.
    很多网站都有二级域名(配置虚拟记住).
    
    一级域名:www.baidu.com
    
    二级域名:music.baidu.com,map.baidu.com,tieba.baidu.com
    
    cookie.setPath("/");
    
    cookie.setDomain(".baidu.com");
    
    9):Cookie的缺陷.
    1>:中文处理麻烦.
    2>:多人共用同一台电脑,信息不安全.
    3>:一个Cookie只能存储一个简单类型的数据.

    若要同时存储,账号,密码,邮件等等.
    主要的原因是:Cookie的value只能存储String,不能存Object.

    4>:Cookie的大小和数量限制:

    Cookie大小限制在4KB之内;

    一台服务器在一个客户端最多保存20个Cookie;

    一个浏览器最多可以保存300个Cookie;

    5>:Cookie的原理:把共享数据存储在浏览器中.

    每次请求,再把共享数据带到服务端.最好是把数据存放于服务端.
    ------>Session:

    相关文章

      网友评论

          本文标题:16.Cookie

          本文链接:https://www.haomeiwen.com/subject/genzeftx.html