zoukankan      html  css  js  c++  java
  • Cookie 的技术学习笔记

    前言:本篇学习笔记 来自B站动力节点官方号的 reyco老师的Servlet的视频中的笔记和结论

    一、 Cookie简介

      Cookie 是由 网景公司前雇员在 1993年发明的一种进行网络会话状态跟踪的技术。

      会话是由一组请求响应组成,是围绕一件相关的事情所进行的请求与相应。所以这些请求与响应之间是一定有数据传递的,即需要进行会话跟踪的。然而 HTTP 协议是一种无状态协议,在不同的请求间 是无法进行数据传递的。此时需要一种可以进行请求间数据传递的会话跟踪技术。

      Cookie 是由服务器生成,保存在客户机的一种信息载体。这个载体中存放在用户访问该站点的会话状态信息。只要 cookie 没有被清除,或者 cookie 没有失效,那么存放在其中的会话状态就有效。

      用户在提交第一次请求后,由服务器生成 cookie ,并将其装到 响应头中 response,以响应的形式发送给客户端,客户端在收到响应后,将 cookie 保存到客户端,当客户端再次发送同类请求后,在请求中会携带保存在客户端 的 cookie 数据,再次发送到服务端,服务端接受到相同同的状态信息(cookie)并识别,服务端即可对对话进行跟踪。

      Cookie 技术并不是 javaweb 开发的专属技术,而属于 web开发的专属技术,是所有 web 开发语言均支持的技术

      Cookie 是由若干键值对构成,这里的键——一般称为 name ,值称为 value。Cookie 的 键和值 均为 字符串

    二、火狐浏览器下查看 Cookie
      不同的浏览器,其 Cookie 的保存位置及查看方式不一样,删除某一浏览器下的 cookie ,不会影响到其他浏览器的 cookie

    火狐浏览器(版本35.0.1)可以直接看到 cookie的内容,查看位置在:(选项—>隐私—>移除单个 Cookie)

      

      

     

    三、JAVAEE中 Cookie
      在 Javaee 中的 javax.servlet.http 包中存在一个类 Cookie,就是用于完成会话跟踪的 Cookie。其中只有一个带参构造器:
        public Cookie(String name,String value)

      而 httpServletResponse 中有一个方法,可以将 Cookie 添加到 相应头中:
        public void addCookie(Cookie cookie)

      注意,一个response 中可以添加多个 Cookie 键值对。

       

      1)创建 Cookie  

        Cookie cookie1 = new Cookie("username","chens");
        Cookie cookie2 = new Cookie("username","chens");

      2)默认绑定路径
        访问路径由资源名称与资源路径构成。默认情况下,Cookie 与访问路径中的资源路径绑定,只要用户发出带有绑定资源路径(等同于同类请求)的请求,则在请求头部,将自动携带 与之绑定的 Cookie 数据

      3)自定义路径
        通过Cookie 类中的方法 public void setPath(String path) ,设置指定路径

        //注意:这里指定的路径必须加上项目名称
        cookie1.setPath(request.getContextPath() + "/xxx/ooo/some");
        cookie2.setPath(request.getContextPath() + "/aaa");

      

      4)设置Cookie的保存时长,单位为秒

        //注意:时长=0或<0时或未指定时,规定在会话结束是失效
        Cookie1.setMaxAge(60*60)//一小时

     

      5)将 Cookie 添加到响应头

        Response.addCookie(cookie1);
        Response.addCookie(cookie2);

    运行结果:
      访问你的servlet,并且用火狐查看cookie

      

      值得注意的是,passward(cookie2)没有指定 cookie 保存时间默认在会话结束失效。

      6)接收 Cookie 

        当访问到 Cookie 指定路径时,Cookie将会被包装request中,我们可以通过 request 中的 getCookie 获取到
      在相同项目中另一个servlet获取到传输过来的cookie

        //获取 cookie
        Cookie[] cookies = request.getCookies();
        //遍历 cookie
        for(Cookie cookie:cookies) {
            System.out.println(cookie.getName() + cookie.getValue());
        }

      好了,本篇的学习结束

  • 相关阅读:
    cnblog项目--20190309
    django js引入失效问题
    Python老男孩 day16 函数(六) 匿名函数
    Python老男孩 day16 函数(五) 函数的作用域
    Python老男孩 day15 函数(四) 递归
    Python老男孩 day15 函数(三) 前向引用之'函数即变量'
    Python老男孩 day15 函数(二) 局部变量与全局变量
    Python老男孩 day14 函数(一)
    Python老男孩 day14 字符串格式化
    Python老男孩 day14 集合
  • 原文地址:https://www.cnblogs.com/melonPada/p/13196760.html
Copyright © 2011-2022 走看看