JavaWeb Cookie

news2024/11/24 6:00:06

1.Cookie 介绍

Cookie是一种用于在Web浏览器和Web服务器之间传递数据的机制。

它是由服务器发送给浏览器的小型文本文件,存储在浏览器的本地计算机上。

浏览器在后续请求中会自动将Cookie发送回服务器,以便服务器可以识别用户并提供个性化的服务。

Cookie通常用于以下几个方面:

  • 1. 会话管理:通过在Cookie中存储会话标识符(Session ID),服务器可以跟踪用户的会话状态。这使得在多个页面之间保持用户登录状态变得容易,而不需要用户每次都重新登录。
  • 2. 用户个性化:通过在Cookie中存储用户的偏好设置、主题选择、语言选择等信息,服务器可以提供个性化的内容和用户体验。
  • 3. 购物车功能:通过在Cookie中存储商品信息和数量,服务器可以跟踪用户的购物车内容,并在用户下次访问时恢复购物车状态。
  • 4. 追踪用户行为:通过在Cookie中存储唯一标识符或跟踪代码,服务器可以追踪用户的行为和活动,例如广告点击、页面浏览量等。

2.Cookie 实例

在Java中,可以使用Servlet的HttpServletResponse对象的addCookie()方法来设置Cookie,使用HttpServletRequest对象的getCookies()方法来获取Cookie。同时,也可以使用第三方库(如Apache HttpClient、OkHttp等)来处理Cookie的发送和接收。

每次更新上次访问时间

package com.study.cookie;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.Date;

public class CookieDemo1Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=UTF-8");


        PrintWriter out = resp.getWriter();
        Cookie[] cookies = req.getCookies();
        if(cookies!=null) {
            for (Cookie c : cookies) {
                if (c.getName().equals("Time")) {
                    Long value = Long.parseLong(c.getValue());
                    Date date = new Date(value);
                    out.print("The last time you visited this site was " + date.toLocaleString());
                }
            }
        }else{
            out.print(URLEncoder.encode("This is your first visit to this site","utf-8"));
        }

        Cookie cookie = new Cookie("Time", String.valueOf(System.currentTimeMillis()));
        resp.addCookie(cookie);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

结果:

 

3.Cookie特性

Cookie有以下几个特点:

- Cookie是存储在浏览器中的文本文件,每个Cookie都有一个名称和对应的值。
- 每个Cookie都与特定的域名和路径关联,只有在相同域名和路径下的请求中才会发送相应的Cookie。
- Cookie可以设置过期时间,可以是会话级别的(浏览器关闭后失效)或持久性的(在指定的过期时间之后失效)。如果想删除某个Cookie,可以new一个同名Cookie,设置有效时间为0,这样会直接覆盖原来的Cookie,达到了删除的目的。
- 每个域名下的Cookie数量和大小都有限制,通常限制在几千个字节以及几十个Cookie。

-Cookie大小限制一般为4kb,浏览器上限为300个,一个web站点最多20个Cookie

需要注意的是,由于Cookie是存储在用户的浏览器中的,因此可能存在一些安全风险,如跨站脚本攻击(XSS)和跨站请求伪造(CSRF)。为了增强安全性,可以使用安全标记(Secure)和仅限HTTP标记(HttpOnly)来限制Cookie的使用范围和访问权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/725413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

涨知识,周鸿伟当年踩的坑,如果用这么一个工具就能事半功倍

怎么让员工有效率地工作?如何考核员工?如何让员工有积极的心态?公司的汇报体系应该怎么设计? 这些问题都让360创始人周鸿伟感到困惑! 说到“红衣大炮”周鸿伟的本事,那真的不是吹! 近期&…

github:网址为 https://github.com/ 的网页可能暂时无法连接,或者它已永久性地移动到了新网址

一、无法访问github 二、尝试ping gitlab.com 三、打开站长工具 查找 ip地址 “www.github.com”A记录/cname检测结果--Dns查询|dns查询--站长工具 四、打开host文件(C:\Windows\System32\drivers\etc) 20.205.243.166 github.com 五、再次ping github&…

地图制图小技巧_点匹配线方向

目录 目的 实现步骤 功能介绍 功能入口 关键参数 结果 问题延伸 目的 我们在配图的时候,会遇到一种特定的需求:需要对点设置一个风格,并且符号风格自动跟相连或者相交的线保持垂直。 这种是否能够在SuperMap iDesktopX中自动实现呢&#xff0…

直流运算放大电路-----Howland(二)

目录 豪兰德电路形式1 电路图 计算公式 仿真与分析 豪兰德电路形式2 电路图 计算公式 豪兰德电路形式3 电路图 计算公式 改进电路 豪兰德电路形式1 模拟电子技术基础(第五版)5.7 电路图 计算公式 仿真与分析 如图,红框内为负反馈&…

.net项目开发-EF框架解决添加默认值问题

文章目录 前言EF中核心类DbContextDbContext中的SaveChanges()方法重写SaveChanges()方法注意点-Modified 其它状态下的实体如何操作 前言 最近开发.net项目,持久层用的是EF框架,也是第一次使用这个框架,用这个框架的好处就是基于实体的开发…

【UnityDOTS 小知识】如何通过DOTS修改材质属性以及替换材质与网格

如何通过DOTS修改材质属性以及替换材质与网格 一、DOTS修改材质属性 1.利用 Material Overide Asset Material Overide Asset是一个Unity资产,可以通过Create创建。 创建后指定要修改的材质,以及对应材质的属性,即可完成这个资源创建。 然…

hive关联键 NULL 关联 NULL

结论:关联键 NULL NULL时,不进行关联,即两表关联失败 案例如下: 表A 表B 表A 关联 表B selecta.id as a_id,a.name as a_name,b.id as b_id,b.name as b_name from表A a left join表B b on a.id b.id …

【FFmpeg实战】FFplay音视频同步

作者:Mirs 链接:https://www.jianshu.com/p/d7ead3a5f2bd PTS的由来 音视频同步依赖的一个东西就是pts(persentation time stamp )显示时间戳 告诉我们该什么时间显示这一帧 ,那么,这个东西是从哪里来的呢&#xff1f…

Jvm创建对象之内存分配-JVM(七)

上篇文章介绍了jvm创建,会校验是否已加载类,没有则加载,通过之前学的源码,classLoader加载完之后,虚拟机开始给类分配内存,指针移动分配和free链表分配,解决并发分配情况用cap和TLAB方法。之后设…

编写LED灯的驱动,创建三个设备文件,每个设备文件和一个LED灯绑定,当操作这个设备文件时只能控制设备文件对应的这盏灯

.编写LED灯的驱动&#xff0c;创建三个设备文件&#xff0c;每个设备文件和一个LED灯绑定&#xff0c;当操作这个设备文件时只能控制设备文件对应的这盏灯 实验现象 test.c #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <s…

【linux】使用 sftp 替换 vsftpd

为什么使用 sftp&#xff1f; 1. 基于 ssh 协议&#xff0c;保证数据安全性 2. 大多数防火墙不会阻止 ssh 协议 3. 完全基于文件系统权限对用户进行管理 4. 配置比 vsftpd 简单 另外&#xff0c;我在集成商工作服务于各大甲方&#xff0c;在厦门的一些企业&#xff0c;如&…

一步一步指导如何使用 FastSAM进行图像分割

它以50倍的速度实现了与SAM方法相当的性能。 (SAM) 是一个强大的视觉基础模型,可以根据用户交互提示分割图像中的任何对象。SAM 一经发布就因其准确性而在计算机视觉社区中获得了巨大的关注。然而,SAM 广泛使用计算量大的Transformer (ViT) 架构限制了其实际应用,特别是在…

C# NPOI操作Excel汇总

C#操作Excel有多种方法&#xff0c;如通过数据库的方式来读写Excel的OleDb方式&#xff0c;但是OleDb方式需要安装微软office&#xff0c;还可以通过COM组件方式操作Excel&#xff0c;也需要安装微软Excel。如果不想安装微软办公套餐可以使用ClosedXML、EPPlus、NPOI。本文主要…

【网络系统集成】VLAN实验

1.实验名称:VLAN实验 2.实验目的 在PacketTracer中进行模拟VLAN实验,完成“不同交换机相同VLAN间通讯”实验、“单臂路由”实验与“三层交换实现VLAN间通讯”实验,加深对VLAN间通讯相关知识的理解与掌握。 3.实验内容 3.1不同交换机相同VLAN间通讯 (1)拓扑结构图

STM32——关于时钟源的实际使用及解释

1、STM32内部有5个时钟源&#xff0c;分别为HSI、HSE、LSE、LSI、PLL。 HSE&#xff1a;高速外部时钟&#xff0c;可接石英谐振器、陶瓷谐振器&#xff0c;或者接外部时钟源&#xff0c;其频率范围为4MHZ~16MHZ。 LSE&#xff1a; 低速外部时钟&#xff0c;接频率为32.768KHZ…

ATFX国际:小非农ADP数据来袭,加息预期或再度升温

ATFX国际&#xff1a;每月发布一次的ADP数据是国际金融市场的大事件&#xff0c;它能够对周五发布的非农就业报告起到相对准确的前瞻作用。今日晚间20:15&#xff0c;美国6月ADP就业人数将发布&#xff0c;前值为增加27.8万人&#xff0c;预期值增加22.8万人&#xff0c;市场预…

【Quartus FPGA】EMIF DDR3 IP 仿真记录

EMIF (External Memory Interface) 是 Quartus 平台提供的 IP&#xff0c;用于实现高速存储器件接口与控制器。通过 Intel Quartus Prime 软件&#xff0c;可以很方便地实现 EMIF IP 电路。本文记录了使用 EMIF 实现 DDR3 控制器的仿真过程&#xff0c;软件平台为 Quartus Prim…

软件测试体系方案

目录 前言&#xff1a; 1. 引言 1.1 目标 1.2 背景 1.3 术语和定义 2. 测试体系完善 2.1 项目启动 2.2 测试计划 2.3 需求分析 2.4 测试设计 2.5 测试执行 2.6 测试记录 2.7 缺陷跟踪 2.8 测试结束 2.9 测试总结 3. 测试管理规划 3.1 测试人员 3.2 测试环境 …

骑行,怎么样高效而省力的摇车?

大家好&#xff0c;今天我们来聊一聊自行车运动中的摇车技巧。我们知道&#xff0c;摇车是自行车运动中一种非常高效的发力方式&#xff0c;那么如何做到高效而省力的摇车呢&#xff1f; 首先&#xff0c;我们要了解摇车的原理。摇车&#xff0c;其实就是通过腿部蹬踏的方式&am…

(02)Cartographer源码无死角解析-(78) ROS数据发布→2D点云数据、tf、机器人tracking frame轨迹发布

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文…