• 简述cookie


    1.Cookie的概述

    * Cookie是客户端的技术(默认把Cookie保存在每个用户的浏览器上)
    * 程序把每个用户的数据以cookie的形式写给用户各自的浏览器
    * 当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去

    2.Cookie的原理

    * Cookie基于客户端的技术,Cookie的对象是服务器端创建的,默认把Cookie保存在客户端浏览器上
    * Cookie基于http的协议,默认有两个(set-cookie是响应头,服务器端到客户端 cookie是请求头,客户端到服务器端)
    * Cookie可以在客户端与服务器端进数据的传递

    3.Cookie对象的api

    Cookie(String name, String value) -- 构造方法,是key:value的形式(强调:Cookie中不支持中文的)
    String getName()    -- 获取cookie的名称
    String getValue()    -- 获取cookie的值
    void setValue(String newValue)    -- 设置值
    void setMaxAge(int expiry)    -- 设置Cookie的有效时间

    如果浏览器关闭了,Cookie默认就被清除了,Cookie默认的情况下是保存在浏览器的缓存中

    设置有效的时间,Cookie就变成了持久的Cookie.默认的情况下,把Cookie保存到本地的文件中

    需求:显示用户上次访问的时间(和Cookie的原理相同),注意不管是否是第一次访问,都要设置cookie的有效时间

    // 设置输出到页面的编码格式,解决字符流的中文乱码问题
    response.setContentType("text/html;charset=UTF-8");
    
    // 首先判断是否是第一次访问
    Cookie[] cookies = request.getCookies();
    
    // 查找名称为lasttime的cookie
    Cookie cookie = CookieUtils.getCookieByName(cookies, "lasttime");
    // 处理当前时间
    String currentTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
    
    if (cookie==null) {
    // 第一次访问
    cookie = new Cookie("lasttime", currentTime);
    // 设置cookie的有效时间 1小时
    cookie.setMaxAge(60*60);
    // 向浏览器回写cookie
    response.addCookie(cookie);
    // 输出一句话
    response.getWriter().write("欢迎,第一次访问!");
    
    } else {
    // 不是第一次访问,取cookie中的值
    String lastTime = cookie.getValue();
    // 输出一句话
    response.getWriter().write("欢迎,上次访问时间为: " + lastTime + ", 下次早点来啊!");
    // 设置cookie的有效时间 1小时
    cookie.setMaxAge(60*60);
    // 将cookie的值设置为当前时间(记录这一次的时间)
    cookie.setValue(currentTime);
    // 向浏览器回写cookie
    response.addCookie(cookie);
    
    }

    void setPath(String uri) -- 设置Cookie的有效路径

    * 第一次访问的时候,/lasttime的默认的有效路径是/day11
    * 访问demo2.jsp http://localhost/day11/pages/demo2.jsp 如果访问的是/day11/下的任何资源,都会携带cookie的数据!
    
    * 第二次访问的时候,/web/lasttime,默认的有效路径是/day11/web 
    * 访问demo2.jsp http://localhost/day11/pages/demo2.jsp ,不会携带cookie的数据!
    * 如果访问的是 http://localhost/day11/web/pages/demo2.jsp ,携带cookie的数据!

    有效路径决定什么事情呢?

    访问项目中其他资源时,是否携带cookie!!

    cookie.setPath("/personal");// 设置cookie的有效路径,那么访问/personal下(personal项目)的任何资源,都会携带cookie的数据!这就是设置有效路径的作用!!

    操作Cookie对象的方法

    response.void addCookie(Cookie cookie)    -- 向浏览器回写cookie对象
    request Cookie[] getCookies()    -- 获取浏览器发送过来的Cookie,返回的数组
  • 相关阅读:
    雷林鹏分享:Lua if 嵌套语句
    雷林鹏分享:Lua if...else 语句
    雷林鹏分享:Lua if 语句
    debug 使用lldb
    mysql高负载的问题排查
    一个NULL引发的血案
    画椭圆型
    异常分析
    go 语言的库文件放在哪里?如何通过nginx代理后还能正确获取远程地址
    defer 要放在return之前
  • 原文地址:https://www.cnblogs.com/yadongliang/p/6208373.html
Copyright © 2020-2023  润新知