Cookie

内存Cookie 硬盘Cookie 写入,读取,删除 Cookie总是保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。 内存Cookie由浏览器维护,保存在内存中,浏览器关闭后就消失了,其存在时间是短暂的。硬盘Cookie保存在硬盘里,有一个过期时间,除非用户手工清理或到了过期时间,硬盘Cookie不会被删除,其存在时间是长期的。所以,按存在时间,可分为非持久Cookie和持久Cookie。   简而言之, 阅读详情

Cookie

什么是 Cookie?

  1. Cookie 翻译过来是饼干的意思。
  2. Cookie 是服务器通知客户端保存键值对的一种技术。
  3. 客户端有了 Cookie 后,每次请求都发送给服务器。
  4. 每个 Cookie 的大小不能超过 4kb

如何创建 Cookie

在这里插入图片描述

servlet:

protected void createCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.创建cookie对象
        Cookie cookie = new Cookie("key1", "value1");
        //2.通知客户端保存cookie
        response.addCookie(cookie);
        response.getWriter().write("cookie创建成功!");
    }

服务器如何获取 Cookie

服务器获取客户端的 Cookie 只需要一行代码:req.getCookies():Cookie[]

在这里插入图片描述

public class CookieUtils {
    /**
     * 查找指定名称的Cookie 对象
     *
     * @param name
     * @param cookies
     * @return
     */
    public static Cookie findCookie(String name, Cookie[] cookies) {
        if (name == null || cookies == null || cookies.length == 0) {
            return null;
        }

        for (Cookie cookie : cookies) {
            if (name.equals(cookie.getName())) {
                return cookie;
            }
        }

        return null;
    }

}

Servlet:

protected void getCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Cookie cookie = CookieUtils.findCookie("key1", request.getCookies());
        response.getWriter().write("Cookie[key:"+cookie.getName()+" value:"+cookie.getValue()+"]<br>");
    }

Cookie值的修改

方案一

  1. 先创建一个要修改的同名(指的就是 key)的 Cookie 对象
  2. 在构造器,同时赋于新的 Cookie 值。
  3. 调用 response.addCookie( Cookie );
Cookie cookie = new Cookie("key1","newValue1");
resp.addCookie(cookie);

方案二

  1. 先查找到需要修改的 Cookie 对象
  2. 调用 setValue()方法赋于新的 Cookie 值。
  3. 调用 response.addCookie()通知客户端保存修改
Cookie cookie = CookieUtils.findCookie("key2", req.getCookies());
if (cookie != null) 
	cookie.setValue("newValue2");
resp.addCookie(cookie);

Cookie生命控制

Cookie 的生命控制指的是如何管理 Cookie 什么时候被销毁(删除)

setMaxAge()

正数,表示在指定的秒数后过期

负数,表示浏览器一关,Cookie 就会被删除(默认值是-1)

零,表示马上删除 Cookie

protected void createCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.创建cookie对象
        Cookie cookie = new Cookie("key1", "value1");
        //2.通知客户端保存cookie
        response.addCookie(cookie);
        response.getWriter().write("cookie创建成功!");
    }

    protected void getCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Cookie cookie = CookieUtils.findCookie("key1", request.getCookies());
        response.getWriter().write("Cookie[key:"+cookie.getName()+" value:"+cookie.getValue()+"]<br>");
    }

    protected void updateCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie = new Cookie("key1","newValue1");
        response.addCookie(cookie);
    }

    protected void defaultLife(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie = new Cookie("defaultLife", "defaultLife");
        cookie.setMaxAge(-1);
        response.addCookie(cookie);
    }

    protected void deleteNow(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //找到要删除的cookie
        Cookie cookie = CookieUtils.findCookie("key1", request.getCookies());
        if(cookie!=null){
            //调用setMaxage
            cookie.setMaxAge(0);
            //addCookie
            response.addCookie(cookie);
        }
    }

    protected void life3600(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie = new Cookie("life3600", "life3600");
        //设置一小时
        cookie.setMaxAge(3600);
        response.addCookie(cookie);
        response.getWriter().write("创建了一个一小时的cookie");
    }

Cookie有效路径 Path 的设置

Cookie 的 path 属性可以有效的过滤哪些 Cookie 可以发送给服务器。哪些不发。path 属性是通过请求的地址来进行有效的过滤。

请求地址如下:

http://ip:port/工程路径/a.html

  • CookieA 发送
  • CookieB 不发送

http://ip:port/工程路径/abc/a.html

  • CookieA 发送
  • CookieB 发送
protected void testPath(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Cookie cookie = new Cookie("path1", "path1");
        // getContextPath() ===>>>> 得到工程路径
        cookie.setPath( request.getContextPath() + "/abc" ); // ===>>>> /工程路径/abc
        response.addCookie(cookie);
        response.getWriter().write("创建了一个带有 Path 路径的 Cookie");
    }

Cookie练习—免输入用户名登录

在这里插入图片描述

login.jsp

<form action="http://localhost:8080/06_cookie_session/loginServlet" method="get">
    用户名:<input type="text" name="username" value="${cookie.username.value}"> <br>
    密码:<input type="password" name="password"> <br>
    <input type="submit" value="登录">
</form>

LoginServlet

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        if ("admin".equals(username) && "admin".equals(password)) {
            //登录成功
            //当前Cookie 一周内有效resp.addCookie(cookie);
            Cookie cookie = new Cookie("username", username);
            cookie.setMaxAge(60 * 60 * 24 * 7);
            response.addCookie(cookie);
            System.out.println("登录 成功");
        } else {
            //登录失败
            System.out.println("登录 失败");
        }
    }
Redis+QMT实战:如何用Stream模式实现聚宽策略的毫秒级跟单(附完整代码) 本文详细介绍了如何利用Redis Stream模式构建一个低延迟、高可靠的量化交易信号中继系统,实现从聚宽策略到本地QMT的毫秒级跟单。通过对比传统方案,解析了Redis Stream在消息持久化、消费组和显式确认方面的核心优势,并提供了完整的架构设计思路与核心代码实现,帮助量化开发者解决云端策略信号稳定传递至本地实盘的难题。 阅读详情

相关推荐

Manimgl 进阶笔记

目录 一、调整视频输出的纵横比 二、调整预览窗口的尺寸 三、在开发工具中直接调试 一、调整视频输出的纵横比 调整输出视频的纵横比,在日常开发中属于比较基本的需求。要使用 Manimgl 得到期望的分辨率的视频输出需要修改以下几个地方: 第一步:在 custom_config.yml 配置文件中通过 camera_qualities设置视频的输出分辨率。manimlib 框架已经在 default_config.yml 文件中设置了四种视频输出分辨率,default_qualities 参数.

gunnery的专栏 2856

cookie.setValue一些注意事项

案例需求: 1. 访问一个Servlet,如果是第一次访问,则提示:您好,欢迎您首次访问。 2. 如果不是第一次访问,则提示:欢迎回来,您上次访问时间为:显示时间字符串 Cookie[] cookies = request.getCookies(); response.setContentType("text/html;charset=utf-8"); ...

Fire_Sky_Ho的博客 2245

神经符号AI架构解析:如何通过V&V提升AI系统可信性

在人工智能领域,深度学习模型因其强大的模式识别能力而广泛应用,但其内部决策过程往往如同“黑盒”,难以追溯和解释,这给系统验证与确认带来了巨大挑战。验证与确认是确保复杂软件系统安全、可靠、符合预期的基石,其中验证关注“是否正确地构建了产品”,确认则关注“是否构建了正确的产品”。神经符号人工智能作为一种新兴范式,通过融合符号逻辑的透明推理与深度学习的强大感知,为解决这一难题提供了关键技术路径。它使得AI系统既能从数据中学习复杂模式,又能依据可形式化检验的规则进行逻辑推理,从而在自动驾驶、医疗诊断等高可靠性应用场

weixin_28681379的博客 356

Cookie的使用

一、 Cookie的创建 代码示例:(addCookie)不能省略 public class CookieServlet extends BeanServlet { protected void creatCookie(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1.创建 Cookie对象 Cookie cookie=

小白的博客 694

使用GitLab+Drone CI持续集成自动部署web项目,图文详细

kind: pipeline # 定义对象类型,还有secret和signature两种类型 type: docker # 定义流水线类型,还有kubernetes、exec、ssh等类型 name: mall-tiny-drone # 定义流水线名称 steps: # 定义流水线执行步骤,这些步骤将顺序执行 - name: package # 流水线名称 image: maven:3-jdk-8 # 定义创建容器的Docker镜像 volumes: # 将容器内目录挂载到宿主机,仓库

4105

airodump-ng、aircrack-ng使用教程

wifi破解、airodump-ng、aircrack-ng脚本

ssmbyss的博客 2231

cookie基本用法整理

cookie基础知识以及JS参考: JavaScript中的document.cookie的使用 JAVA添加cookie//保存到缓存中 HttpServletResponse response = ContextHolder.getResponse(); Cookie cookie = new Cookie("username","用户名"); cookie.setMaxAge(5*365*24

起風了 892

【实用运维脚本】Windows 批量 TCP 端口检测(tcping 一键巡检)

摘要:本文介绍一款高效的Windows批量TCP端口检测脚本,适配tcpingv0.39工具,实现多服务器一键巡检。脚本具有进度可视化、双日志输出、自动容错等优势,支持注释行过滤和UTF-8编码。 使用仅需三步: 1)下载tcping工具 2)编辑目标列表 3)运行脚本即可自动检测并生成带编号的检测报告。 该方案解决了手动检测效率低、易遗漏的问题,特别适合日常运维中的端口连通性检查,实测稳定可靠,开箱即用。

蕲士|D365 & 服务器运维,心有东坡,行稳致远。 797

cookie详解以及cookie的使用

一、cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。 同时我们也看到,由于服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要 借助于cookie机制来达到保存标识的目的,但实际上还有其他选择,比如说重写 URL和隐藏表单域。 二、会话cookie和持久cookie...

weixin_44154020的博客 782

C++ Qt6 qml CMakeLists.txt如何添加qrc文件

本文介绍了在Qt6项目中如何通过CMake管理QML图片资源。相比Qt5的qmake,CMake需要手动创建qrc文件并配置CMakeLists.txt。关键步骤包括:1)创建resources.qrc文件并添加图片资源;2)在CMakeLists.txt中设置CMAKE_AUTORCC为ON开启自动资源处理;3)使用qt_add_resources将qrc文件绑定到项目。配置完成后,可通过"qrc:alias"方式引用资源图片,解决了相对路径管理复杂的问题。

琅嬛福地 1453

Codex 自定义模型操作指南:CLI 与桌面客户端双端实操

检查版本 codex --version # 预期输出类似:codex-cli 0.133.0-alpha.1 # 如未安装 npm install -g @openai/codex假设你要接入DeepSeek,在# 临时设置(当前终端会话有效)export DEEPSEEK_API_KEY="sk-你的 DeepSeek API Key"# 永久设置(推荐,写入 shell 配置)

篮球界最会写bug的人;程序猿中打球最菜的人。 453

Servlet中Cookie增、删、改、查

Blog:http://muchstudy.com  整理了一个在Servlet中对Cookie增删改查的工具类,首先要注意的是在服务器端是无法对Cookie做修改的,只能做到覆盖创建。引用StackOverflow上James Sumners的回答: Per section 3.3.4 of RFC 2965, the user agent does not include the expir

YiYing's sharing 3787

Spring AI Alibaba实战训练营-13语音生成应用开发指南

本文介绍了如何基于Spring AI Alibaba创建DashScope语音应用,支持文本转语音(TTS)和语音转文本(STT)功能。主要内容包括:1)环境准备要求Java 17+、Maven 3.6+及阿里云DashScope API Key;2)通过Spring Initializr创建项目并配置相关依赖;3)设置API密钥的安全配置方法;4)实现语音合成的同步和流式功能,包括创建控制器类、调用API接口及保存语音文件。文章提供了详细的代码示例和配置说明,帮助开发者快速搭建语音处理应用。

program哲学 403

cookie是什么?有什么用?cookie详解,一篇文章彻底搞懂cookie

详细讲解了cookie是什么,cookie有什么功能,可以用来做什么。并且通过游览器抓包进行讲解,最后通过一个cookie实例进行演示。

秃头披风侠的博客 18万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java操作Cookie之添加Cookie

Java操作Cookie之添加Cookie

qq_44884577的博客 3608

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Cookie使用步骤与Cookie原理

文章目录一、Cookie使用步骤(1)创建Cookie对象,绑定数据。(2)发送Cookie对象(3)获得Cookie,拿到数据☆在两个Servlet中演示Cookie二、Cookie的原理 (1)Cookie是一种客户端会话技术,将数据保存在客户端。 一、Cookie使用步骤 (1)创建Cookie对象,绑定数据。 new Cookie(String name,String value);...

匿名攻城狮 5650

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Cookie那些事儿(Cookie跨域、Cookie共享、SSO)

HTTP 是无状态的协议,每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。Cookie是服务器发送到用户浏览器并保持在本地的一小块信息,他会在浏览器下次向服务器发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器。在应用模型,一个完整的,有独立访问路径的功能集合称为一个域。

m0_51963973的博客 3971

HTTP Header 中的 cookie 和 set-cookie

在 HTTP 协议中,Cookie和Set-Cookie是两个不同的头部,分别用于发送 cookie 和 设置 cookie。CookieSet-CookieSet-Cookie是一个HTTP响应标头用于将cookie由服务器发送到用户代理(即浏览器),以便用户代理在后续的请求中可以将其发送回服务器。要发送多个cookie,则应在同一响应中发送多个Set-Cookie标头。Set-Cookie。

星环 3379

Cookie 设置cookie有效期及cookie常用方法

  Demo03 :   package com.test.cookie; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servl...

mqingo的博客 1万+

Cookie的常用方法、删除Cookie的方式

删除浏览器中的Cookie 在cookie的API中没有提供直接将cookie删除的方法, 可以通过别的方式间接删除cookie 代码示例:删除名称为cart的cookie: 可以向浏览器再发送一个同名的cookie(即名称也叫cart),并设置cookie的最大生存时间为零,由于浏览器是根据cookie的名字来区分cookie,如果前后两次向浏览器发送同名的cookie,后发送的cookie会覆盖之前发送的cookie,而后发送的cookie也设置了生存时间为零,因此浏览器收到后也会立即删除! //创建一

uzi2200的博客 9310

HTTP Cookie header 中set-cookie格式

Cookie相关的Http头 有 两个Http头部和Cookie有关:Set-Cookie和Cookie。 Set-Cookie由服务器发送,它包含在响应请求的头部中。它用于在客户端创建一个Cookie Cookie头由客户端发送,包含在HTTP请求的头部中。注意,只有cookie的domain和path与请求的URL匹配才会发送这个cookie。 Set-C...

qq_35577990的博客 6794

cookie默认过期时间_Cookie简介

女主宣言笔者最近看了部分关于Cookie的内容,写了如下文字,给大家分享下。PS:丰富的一线技术、多元化的表现形式,尽在“360云计算”,点关注哦!1Cookie是什么CookieCookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。360百科 Cookie插曲SessionSession由于HTT...

weixin_39837041的博客 8374

java设置cookie,添加cookie数据,读取cookie数据,修改cookie数据,删除cookie数据

java设置cookie,添加cookie数据,读取cookie数据,修改cookie数据,删除cookie数据

weixin_47084532的博客 1万+

Cookie_Django中操作cookie

cookie 1、在网站中,http请求是无状态的。也就是说即使第一次和服务器连接并且登录成功后,第二次请求服务器的时候服务器仍然不能知道当前是哪个用户的请求。cookie的出现就是为了解决这个问题 2、第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存到本地,当该用户第二次请求服务器响应的时候,就会自动的把上次请求存储的cookie数据携带给服务器,服务器通过浏览器携带的数据就能判断是哪个用户请求数据了 ⑴第一次访问页面时,服务器将Cookie信息放在响应头中发送给客户端。...

不怕猫的耗子z 2380

Cookie | Cookie的理论基础、Cookie中常用的方法

Cookie | Cookie的理论基础、Cookie中常用的方法

m0_61933976的博客 1533
上一篇: MVC概念
下一篇: Session会话
Sancean
博客等级 码龄6年 2472粉丝 149原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值