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());
        }

      好了,本篇的学习结束

  • 相关阅读:
    一串东西跟着鼠标走
    仿select下拉框
    MD5,DES,RSA
    网站访问量统计
    linux 下 apache启动、停止、重启命令
    Blender绘制大脑表层,并高亮染色
    树莓派搭建LAMP,然后更改根目录
    树莓派使用Samba共享文件夹
    树莓派挂载移动硬盘
    [原创]一种基于Python爬虫和Lucene检索的垂直搜索引擎的实现方法介绍
  • 原文地址:https://www.cnblogs.com/melonPada/p/13196760.html
Copyright © 2011-2022 走看看