javaWeb 会话和跟踪

news2024/12/22 19:03:22

会话

用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。

会话跟踪

HTTP协议是无状态的,每次浏览器向服务器请求时,服务器都会将该请求视为新的请求。有时我们需要实现数据共享。所以我们需要一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据。

Cookie

浏览器的设置,安全和隐私设置,cookie及其他网站数据,查看所有 Cookie 和网站数据。

Cookie 基本使用

创建Cookie对象,设置数据:

Cookie cookie = new Cookie("key","value");

发送Cookie到客户端:使用response对象:

response.addCookie(cookie);

模拟跳转资源共享cookie:

在一个servlet用上面的方法创建和响应cookie,再在另一个servlet获取到浏览器携带的所有cookie,并从中找出自己需要的(遍历):

Cookie[] cookies = request.getCookies();

cookie.getName();

cookie.getValue();

cookie原理

第一次访问服务器,响应的时候:

 

已经携带cookie后访问的时候,浏览器会将所有的cookie都带上:

 

cookie存活时间:

正数:将 Cookie写入浏览器所在电脑的硬盘,持久化存储。到时间自动删除

负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则 Cookie被销毁

零:删除对应 Cookie

cookie.setMaxAge(7*24*60*60);

为了验证,我们先筛选出localhost的

 

 

到期时间确实在7天之后了。

cookie默认不支持中文

先在第一次访问服务器的时候将cookie数据进行URL编码,再在浏览器访问的时候解码,绕开这个问题。

Cookie cookie = new Cookie("username", "佳佳");

response.addCookie(cookie);

 

会直接报错。

解决办法,对中文进行转码:

String value = "佳佳";

value = URLEncoder.encode(value, "UTF-8");

Cookie cookie = new Cookie("username", value);

response.addCookie(cookie);

获取cookie的时候再转码回来:

for (Cookie cookie : request.getCookies()) {

        String value = cookie.getValue();

        String decode = URLDecoder.decode(value, "UTF-8");

        System.out.println(cookie.getName() + ":" + decode);

}

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

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

相关文章

kafka消费者API

kafka的消费方式 pull(拉模式) 消费者采用从broker中主动拉去数据 kafka采用这种方式 push(推模式) kafka没有采用这种方式,因为由broker决定消费发送速率。很难适应所有消费者 pull模式不足之处是,如…

Linux 的 Vim,gcc,makefile 的使用

坚持看完,结尾有思维导图总结 这里写目录标题vimvim的安装vim的配置vim 的使用vim 的三种模式三种模式对应的命令通用命令模式底行模式gcc 和 g编译和执行预编译编译汇编链接过程make总结vim Vim 是Linux 中使用的编辑器,一般的程序要经历一个过程才能运…

Codeforces Round #841 (Div. 2) and Divide by Zero 2022(A~E)

A. Joey Takes Money给出一个序列a,每次操作可以选择两个数,将两个数分别改成与原数乘积相同的两个数,问最后得到的最大的数组和是多少。思路:乘积一定,和最大一定是与1相乘。则整个数组的积与n - 1个1的和就是最大值。…

探索云原生技术之容器编排引擎-Kubernetes/K8S详解(7)

❤️作者简介:2022新星计划第三季云原生与云计算赛道Top5🏅、华为云享专家🏅、云原生领域潜力新星🏅 💛博客首页:C站个人主页🌞 💗作者目的:如有错误请指正,将…

缓存(redis)与数据库(MYSQL)数据一致性问题

在MYSQL数据库集文章中,仔细的学习了一些MYSQL数据库的知识。但是,随着我们的业务越来越好,那么我们不可能直接去操作MYSQL数据库。因为直接去操作MYSQL终究会有比较多的I/O操作,而使整个系统的性能最终受到数据库I/O的制约而无法…

教外篇(6):C++ qrencode 实现二维码生成

系列文章目录 文章目录 系列文章目录前言一、qrencode库的基本使用二、BMP图片生成原理三、二维码生成四、放大图像、解决编码问题前言 该系列教程目录与说明可以查看这篇文章::C/C++教程 本文主要介绍如何使用C++来实现二维码的生成,使用到了开源库:qrencode 代码生成结…

C++入门--vector

目录 vector的介绍 vector的使用 对象的定义 遍历 reserve与resize insert与erase 迭代器失效 vector的模拟实现 vector的介绍&#xff1a; vector是表示可变大小数组的序列容器。 vector的使用&#xff1a; 对象的定义&#xff1a; void test_vector1() {vector<int…

ZYNQ图像-腐蚀膨胀笔记

大磊fpga 腐蚀 下图从左到右依次为a&#xff0c;b&#xff0c;c step1&#xff1a;将b中的黄色十字架在a中遍历 step2&#xff1a;当b的黄色方格在a中 没有碰到白色方格 时输出中心坐标 step3&#xff1a;将step2中所有输出的坐标涂成黄色&#xff0c;得出c图 膨胀 step1…

Redhat 7 安装 iftop软件

1.关闭subscription-manager vi /etc/yum/pluginconf.d/subscription-manager.conf enable 0 2.通过浏览器下载Centis-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo 3.上传至/etc/yum.repos.d/ 4.修改Centos-7.repo文件 #cd /etc/yum.repos.d/ #ls #vim CentOS…

怎么看电脑是32位还是64位?超级简单的方法!

熟悉计算机的朋友都知道&#xff0c;电脑系统可以分为32位和64位系统。它们之间有什么区别&#xff1f;它们支持不同的内存&#xff1a;32位操作系统最多支持4G内存&#xff0c;但64位系统可以支持4G、8G、16G、32G、64G、128G、256G等。兼容软件也不同&#xff1a;32位只支持3…

老照片修复方法是什么?这篇文章来告诉你

我们每年回老家时&#xff0c;都喜欢看看以前的老物件&#xff0c;尤其是照片&#xff0c;因为它承载了我们一代又一代人的回忆&#xff0c;不管过去了多久&#xff0c;家里的长辈拿到一张照片时&#xff0c;都可以准确的说出当时在哪里&#xff1f;在做什么&#xff1f;由此引…

基于python和cv2、pytorch实现的车牌定位、字符分割、字符识别项目

问题描述车牌的检测和识别的应用非常广泛&#xff0c;比如交通违章车牌追踪&#xff0c;小区或地下车库门禁。在对车牌识别和检测的过程中&#xff0c;因为车牌往往是规整的矩形&#xff0c;长宽比相对固定&#xff0c;色调纹理相对固定&#xff0c;常用的方法有&#xff1a;基…

linux C -- 内存管理

链接: linux C学习目录 linux C 共享内存机制共享内存物理位置shared memory常用函数编程模型范例write.cread.c修改参数实验共享内存 二个或者多个进程,共享同一块由系统内核负责维护的内部内存区域其地址空间通常被映射到堆和栈之间无需复制信息,最快的一种IPC机制需要考虑同…

web应用 —— HTML

web应用 一、HTML 1.插件 1.Live Server 模拟网站服务器 2.Auto Rename Tag 自动修改标签对 3.设置settings-format-勾选Format On Save &#xff08;创建文件&#xff1a;File-Open Folder-新建文件夹-命名文件&#xff09; 2.html文档结构 html所有标签为树形结构&…

基于YOLOv5+C3CBAM+CBAM注意力的海底生物[海参、海胆、扇贝、海星]检测识别分析系统

在我前面的一些文章中也有用到过很多次注意力的集成来提升原生检测模型的性能&#xff0c;这里同样是加入了注意力机制&#xff0c;区别在于&#xff0c;这里同时在两处加入了注意力机制&#xff0c;第一处是讲CBAM集成进入原生的C3模块中&#xff0c;在特征提取部分就可以发挥…

Microsoft系统漏洞修复

近期收到服务器系统漏洞扫描&#xff0c;发现很多关于Microsoft本身的系统漏洞。 有很多新手不知道怎么去修复系统漏洞&#xff0c;害怕一旦修复出问题&#xff0c;自己要担责。 我这里讲解下怎么准备的去寻找漏洞&#xff0c;并把它修复的过程。 我已下列的漏洞为例&#x…

RK3588平台开发系列讲解(日志篇)syslog介绍

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、syslog介绍二、syslog的架构三、syslog日志组成四、syslog接口说明1、openlog2、syslog3、closelog五、syslog.conf接口说明1、selector2、level3、action4、示例沉淀、分享、成长,让自己和他人都能有所收获!&am…

计算机网络第三章

目录 1.数据链路层 1.数据链路层的基本概述 2.数据链路层的功能概述 3.封装成帧 4.差错控制 1.检错编码 2.纠错编码 5.流量控制 1.停止-等待协议 2.选择重传协议(SR) 3.后退N帧协议(GBN) 6.介质访问控制 1.静态划分信道(信道划分介质访问控制) 2.动态分配信道 7.局域网 8.链路…

【经验分享】美赛报名以及注册方法-以2023年美赛为例

首先点击COMAP的官网链接&#xff1a; https://www.comap.com/ 然后选择Contests目录下的MCM/ICM 选择 Learn More and Register 然后选择 Click here to register for the 2023 MCM/ICM contest 注册分为两个步骤&#xff1a;顾问&#xff08;指导教师&#xff09;注册和填…

uni-app中自定义TabBar

1.由于原生的tabBar不能做到事件的拦截处理所以才自定义 注意点&#xff1a;自定义tabBar后则原生的uni.switchTab(OBJECT)不能再使用了 第一步&#xff1a;需要把原生的tabBar注释掉 第二步&#xff1a;在components下新建TabBar.vue文件&#xff08;那个页面用那个页面引入…