• cookie详解


    什么是cookie

      cookie是浏览器访问web服务器的某个资源时,由web服务器在HTTP响应头中附带传送给浏览器的一小段数据

      一旦浏览器保存了某个cookie,那么它以后在每次访问该服务器时,都应在http请求头中将这个cookie回传给web服务器(有点像验证,现在把之前访问你时你给的东西给你,证明我访问过)

      一个cookid由name和value组成

      

    创建cookie

      cookie已经被封装成cookie类了,所以我们只需简单地设置cookie的配置信息,即可创建cookie

    //创建cookie
    Cookie cookie = new Cookie("name","value");
    cookie.setPath("/webs");//设置cookie的路径
    cookie.setMaxAge(-1);//内存储存,取值有三种:>0为有效期,单位为秒;=0浏览器关闭;<0内存存储,默认为-1
    response.addCookie(cookie);
    //注意:有效路径:当前访问的资源的上一级目录,不带主机名

      一般来说cookie是多个的,所以我们创建好cookie需要往response里面添

      setPath设置的是能访问该cookie的资源的路径,也就是说这个路径下的资源才可以访问这个cookie

    获取cookie

      cookie的获取就是从resquest获取当前的cookie数组,然后遍历,根据name,获取目标value的过程

    //获取cookie
    Cookie[] cookies = request.getCookies();
    for (Cookie cookie : cookies) {
        if(cookie.getName().equals("目标name")){
            String code = cookie.getValue();//获取value
            break;
        }
    }

    修改cookie

      修改cookie和创建差不多,本质上就是新建一个cookie覆盖掉原来的cookie

      只要保证cookie的名字和路径都要一致,就能覆盖

    //修改cookie
    Cookie cookie = new Cookie("name","vlaue");//name写需要修改的cookie的name
    cookie.setPath("/webs");//有效路径也是原来的
    cookie.setMaxAge(-1);
    resp.addCookie(cookie);//添加进cookie,也就是覆盖

     cookie的编码和解码

      cookie默认不支持中文,所以只能包含ASCll字符,所以cookie需要对Unicode字符进行编码,否则会出现乱码

      •编码可以使用java.net.URLEncoder类的encode(String str,String encoding)方法

      •解码可以用java.net.URLDecoder类的decode(String str,String encoding)方法

    创建带中文的cookie

    //创建带中文的cookie
    Cookie cookie = new Cookie(
            URLEncoder.encode("姓名","UTF-8"),
            URLEncoder.encode("黄某人","UTF-8")
    );

    读取带中文的cookie

    //读取带中文的cookie
    if(req.getCookies() != null){
        for(Cookie cookie : req.getCookies()){
            String name = URLDecoder.decode(cookie.getName(),"UTF-8");
            String vlaue = URLDecoder.decode(cookie.getValue(),"UTF-8");
        }
    }

    cookie的优缺点

    优点

      可以配置到期规则

      就只包含键值对,使用简单

      持久性:cookie在过期之前可一直存在客户端浏览器上

    缺点

      大小收到限制,大多数浏览器都会显示cookie的大小为4k、8k以下

      潜在的安全风险,cookie可能会被篡改。

      

    一点一点积累,一点一点蜕变!
  • 相关阅读:
    1295. 统计位数为偶数的数字『简单』
    1281. 整数的各位积和之差『简单』
    697. 数组的度『简单』
    748. 最短完整词『简单』
    832. 翻转图像『简单』
    1446. 连续字符『简单』
    1455. 检查单词是否为句中其他单词的前缀『简单』
    1160. 拼写单词『简单』
    1304. 和为零的N个唯一整数『简单』
    1103. 分糖果 II『简单』
  • 原文地址:https://www.cnblogs.com/qq2210446939/p/14284253.html
Copyright © 2020-2023  润新知