• Cookie学习总结


    Cookie简述

    1. 概念

    一种客户端会话技术,可以将一些少量的数据保存在客户端。

    2. 快速使用

    • 步骤

      1. 创建cookie对象,并设定数据

        • new Cookie(String name, String value);
      2. 发送cookie对象到客户端(将cookie加载到response)

        • response.addCookie(Cookie cookie) ;
      3. 获取cookie(获取从客户端返回的request获取cookie)

        • Cookie[] request.getCookies() ;
      4. 代码

        //设定cookie数据,创建cookie对象
        Cookie c=new Cookie("msg","hello");
        
        //发送cookie对象到客户端
        response.addCookie(c);
        
        //获取cookie并打印
        Cookie[] cs = request.getCookies();
        if(cs!=null){
            for (Cookie c : cs) {
                String name = c.getName();
                String value = c.getValue();
                System.out.println(name+":"+value);
            }
        
    • cookie的一些小细节

      1. 一次可不可以发送多个cookie?

        • 可以,同时也可以接收到多个cookie。
        • 只需要多创建几个cookie对象,多调用几次response的addCookie方法即可
      2. cookie一般在计算机保存多长时间

        1. 默认情况下,只要关掉浏览器,cookie数据就会被销毁

        2. 如何持久化储存?

          • setMaxAge(int seconds)

            1. 正数:将cookie数据写进硬盘,持久储存,并指定销毁时间seconds。

            2. 负数:默认情况

            3. 零:删除cookie信息

            4. 代码

                      Cookie c1=new Cookie("msg","hello");
                      c1.setMaxAge(300);
                      response.addCookie(c1);
              		//300秒后自动销毁
              
        3. cookie能否存中文?

          • 在tomcat 8 之前 cookie中不能直接存储中文数据。(需要URL编码)
          • 在tomcat 8 之后,cookie支持中文数据。特殊字符还是不支持,建议使用URL编码存储,URL解码解析
        4. cookie共享问题?

        5. 在同一个服务器中,项目共享cookie

          • 默认情况下,不共享
          • 使用方法setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录,如果要共享,则可以将path设置为"/"
        6. 不同的服务器之间的cookie共享?

          • setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享
            • setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享
      3. cookie的特点和作用

        1. cookie存储数据在客户端浏览器
        2. 浏览器对于单个cookie的大小以及同一个域名下总cookie数量也有限制(20个)
        3. 作用:
          1. 由于cookie在客户端数据并不安全,cookie一般用于存储少量不太敏感的数据
          2. 他可以完成一些类似于在没有登陆的情况下,完成服务器队客户端身份的识别
  • 相关阅读:
    [转]element UI表单校验特殊需求用法实现
    Windows10启用远程桌面并修改默认端口号
    [转]vuetreeselect 爬坑之路
    [转]关于IDEA创建module时名字后面出现中括号的情况例如 aaaa[bbbb]
    [转]玩转IDEA项目结构Project Structure,打Jar包、模块/依赖管理全搞定
    vue 父组件向子组件传值,子组件接收不到问题
    【Golang】golang开发微信公众号网页授权功能
    【Golang】golang实现sha256加密函数
    【Golang】golang实现urlencode urldecode函数
    【MySQL】mysql因为字符集导致left join出现Using join buffer (Block Nested Loop)
  • 原文地址:https://www.cnblogs.com/cell-coder/p/12404193.html
Copyright © 2020-2023  润新知