【JavaEE初阶系列】——理解Cookie 和 Session以及相关API

news2024/11/16 12:05:55

目录

🚩Cookie

🚩Session 

🚩Servlet API

🎈HttpServletRequest

🎈HttpSession


🚩Cookie

http请求header中一个属性,浏览器持久化存储数据的一种机制,网页无法访问主机的文件系统,要想存储数据就得通过其他的方式。

Cookie中保存的数据,也是键值对的格式(用户自定义的),最终还是要把这个键值对发送回服务器的,服务器要使用Cookie来完成一些业务逻辑。

其中有一个特殊的情况,是会使用Cookie存储当前用户的身份信息

比如去了医院,先挂号,给你一个就诊卡,就诊卡就相当于cookie,就诊卡里就存储了用户的身份信息(身份标识)

拿着就诊卡去各个科室,见到医生之后,医生的第一句话,都是让你刷就诊卡。

刷卡这个过程,就会通过医院的系统,查询到你的身份标识,进一步的得到完整的身份信息,显示在医院的电脑上。

拿到身份标识之后就可以得到身份信息,这里的身份信息就是病人的基本信息,当前诊断信息,开的药品信息,既往病例,账户余额........

每个用户/患者都有一份这样的数据,这些数据在服务器中如何组织呢?(必然是存储在数据库中/在服务器代码的逻辑展开执行的过程中,这些数据就也会被从数据库查询出来,先临时的保存到某个内存结构中,后续有什么修改之类的,修改内存,重写写入数据库。

这里的内存结构(存储的是用户的身份信息)——会话(session)


🚩Session 

  • Cookie是客户端存储数据的机制——在cookie中存储的用户身份标识,也经常会理解成sessionId
  • Session是服务器存储数据的机制(不算持久化存储)——服务器存储了很多的session,每个用户都有一个自己的session,也有不同的sessionId

服务器会通过类似于hash这样的键值对结构来存储session的。sessionId就是key.session本身就是value,在session里面又可以存储各种的用户自身的信息(也就是程序员自定义的)


浏览器发出请求,请求中带有cookie,cookie是一种身份标识也就是sessionId,发出请求,请求就带有了cookie,cookie中呢,又保存了sessionId知道是查哪个用户信息,然后服务器就根据cookieId通过key-value方式找到session对象,就得到了这个用户的基本信息了。


🚩Servlet API

  • Cookie是浏览器的机制,Servlet提供了api获取到Cookie
  • Session是服务器的机制,Servlet内部已经实现好了,也提供了api可以让我们进行使用。

🎈HttpServletRequest

  • Cookie[] getCookies()这个方法,拿到请求中所有的cookie内容,每个cookie都是一个键值对,Cookie对象就是一个键值对(name,value)
  • HttpSession getSession()这个方法,就能够完成,从cookie中获取到sessionId,并且查询出对应session过程,如果sessionId没有从hash表查到,也能帮咱们自动创建出新的键值对(分配新的sessionId,以及创建一个新的HttpSession对象)【主要用于”登录”场景来使用,我们在输入了一个用户名之后,会自动给你查到你曾经存储在浏览器的密码)

我们说getCookie()方法是返回所有的cookie(也就是所有的用户),再从cookie中得到对应的sessionId,然后getSession()方法,也就是在你所要查询的sessionId中查到该用户的基本信息。

Servlet中,通过这个类,表示一个会话,服务器上同时具有很多个会话,服务器上就会存在一个类似于这样的HashMap<String,HttpSession>

                            String指的就是sessionId   HttpSession也就是session对象


🎈HttpSession

一个 HttpSession 对象里面包含多个键值对 . 我们可以往 HttpSession 中存任何我们需要的信息
  • Object getAttribute(String name)
  • void setAttribute(String name,Object value)

Session对象本身也是一个键值对结构

  • name:张三
  • age:22
  • gender:男
  • balance:500

这些键值对,就是通过上述的这两个Attribute方法来完成的。

  • Stirng getName()   该方法返回 cookie 的名称。名称在创建后不能改变。(这个值是 SetCooke 字段设置给浏览器的)
  • Sting getValue()    该方法获取与cookie关联的值

基于上述api实现用户登录

cookie/session机制,其中很重要的作用,就是辅助完成登录功能的实现。


活在明天,活在期待,不如活得今天很自在。

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

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

相关文章

技术速递|Python in Visual Studio Code 2024年4月发布

排版&#xff1a;Alan Wang 我们很高兴地宣布 Visual Studio Code 的 Python 和 Jupyter 扩展 2024 年 4 月发布&#xff01; 此版本包括以下公告&#xff1a; 改进了 Flask 和 Django 的调试配置流程Jupyter Run Dependent Cells with Pylance 的模块和导入分析Hatch 环境发…

【Leetcode每日一题】 综合练习 - 逆波兰表达式求值(难度⭐⭐)(73)

1. 题目解析 题目链接&#xff1a;150. 逆波兰表达式求值 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 数据结构选择&#xff1a; 使用栈&#xff08;stack<int>&#xff09;来存储操作数&#xff0c;以便进…

OpenHarmony 3.2 Release版本实战开发——Codec HDI适配过程

简介 OpenHarmony Codec HDI&#xff08;Hardware Device Interface&#xff09;驱动框架基于 OpenMax 实现了视屏硬件编解码驱动&#xff0c;提供 Codec 基础能力接口供上层媒体服务调用&#xff0c;包括获取组件编解码能力、创建组件、参数设置、数据的轮转和控制、以及销毁…

OpenMVS学习笔记(一):WSL编译安装测试

1.CUDA和CUDNN安装 [1] WSL版本cuda安装&#xff1a; >> wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin >> sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600 >> wg…

Burp Suite (bp)启动激活报错问题

一、自查 1、从哪里下载程序 【大部分同学的问题&#xff0c;都是重新下载解决的&#xff0c;简单快速直接】 一律使用“常用软件”中提供的Burp Suite软件包&#xff0c;方便排查问题 自带JDK的版本 Burp 2024.3&#xff0c;自带JDK21&#xff0c;双击bat即可启动&#xff…

YOLOv8网络结构介绍

将按照YOLOv8目标检测任务、实例分割任务、关键点检测任务以及旋转目标检测任务的顺序来介绍&#xff0c;主要内容也是在目标检测任务中介绍&#xff0c;其他任务也只是Head层不相同。 1.YOLOv8_det网络结构 首先&#xff0c;YOLOv8网络分成了三部分&#xff0c;分别是主干网络…

Java | Spring框架| 集合与复杂类型的注入:处理多值依赖

集合与复杂类型的注入&#xff1a;处理多值依赖 在Spring框架中&#xff0c;除了可以注入简单的依赖类型&#xff0c;如字符串、整数等&#xff0c;还可以注入集合类型和复杂类型的数据。集合类型包括List、Set、Map和数组&#xff0c;而复杂类型可以是自定义的对象、配置类等…

【JavaEE网络】用Form与Ajax构建HTTP请求

目录 通过 form 表单构造 HTTP 请求form 发送 GET 请求form 发送 POST 请求 通过 ajax 构造 HTTP 请求发送 GET 请求发送 POST 请求发送 application/json 数据封装 ajax 方法 通过 form 表单构造 HTTP 请求 form (表单) 是 HTML 中的一个常用标签. 可以用于给服务器发送 GET …

janus源码分析

基础说明 janus官网 https://janus.conf.meetecho.com/index.html janus源码地址 https://github.com/meetecho/janus-gateway 编译及部署参考 https://pro-hnb.blog.csdn.net/article/details/137730389?spm1001.2014.3001.5502 https://pro-hnb.blog.csdn.net/article/deta…

QT设计模式:策略模式

基本概念 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列方法&#xff0c;并使它们可以相互替换。策略模式使得算法可以独立于客户端而变化&#xff0c;使得客户端可以根据需要选择相应的算法。 策略模式通常由以下角色组…

AutoDL服务器远程桌面

文章目录 1.安装VNC和必要的一些图形显式库:2.SSH隧道2.1.本地安装openssh服务器2.2.服务开启2.3.显示当前安装的 SSH 版本信息2.3.设置一个 SSH 隧道 注意3.VNC Viewer客户端登录4.测试5.参考 VNC&#xff08;Virtual Network Computing &#xff09;是一种图形化的桌面共享协…

mac电脑如何安装java

1、检查当前系统的 Java 版本 打开终端,输入以下命令查看当前 Java 版本 /usr/bin/java -version 2、前往 Java 官网下载 Java JDK 打开 Java 官网 (https://www.java.com/zh-CN/download/) 并下载最新版本的 Java JDK。 3、安装 Java JDK 双击下载的 .dmg 文件启动安装程序…

力扣爆刷第135天之数组五连刷(双指针快慢指针滑动窗口)

力扣爆刷第135天之数组五连刷&#xff08;双指针快慢指针滑动窗口&#xff09; 文章目录 力扣爆刷第135天之数组五连刷&#xff08;双指针快慢指针滑动窗口&#xff09;一、704. 二分查找二、27. 移除元素三、977. 有序数组的平方四、209. 长度最小的子数组五、59. 螺旋矩阵 II…

【C++初阶】第十站:vector 中通用函数的模拟实现

目录 vector中的三个重要迭代器 默认成员函数 构造函数(无参构造) 构造函数(函数模板) 构造函数(带有默认参数) size_t int 拷贝构造函数 赋值重载 析构函数 迭代器相关函数 begin和end 容量和大小相关函数 size capacity resize 修改容器内容相关函数 reser…

自动驾驶学习2-毫米波雷达

1、简介 1.1 频段 毫米波波长短、频段宽,比较容易实现窄波束,雷达分辨率高,不易受干扰。波长介于1~10mm的电磁波,频率大致范围是30GHz~300GHz 毫米波雷达是测量被测物体相对距离、相对速度、方位的高精度传感器。 车载毫米波雷达主要有24GHz、60GHz、77GHz、79GHz四个频段。 …

使用Postman进行接口测试---解析postman页面

一、Postman 是一款流行的 API 测试工具&#xff0c;它提供了丰富的功能来帮助开发者测试和调试 API。以下是 Postman 页面上的主要功能及其含义和作用&#xff1a; 1. 请求详情&#xff08;Request Details&#xff09; &#xff1a; - 方法&#xff08;Method&#xff0…

Disk Doctor for Mac 免激活版:数据安全守卫者

数据丢失是每个人都可能遇到的问题&#xff0c;但Disk Doctor for Mac能让这个问题迎刃而解。这款强大的数据恢复软件&#xff0c;能迅速找回因各种原因丢失的数据。 Disk Doctor采用先进的扫描技术&#xff0c;能深入剖析磁盘&#xff0c;找到并恢复被删除或损坏的文件。同时&…

JavaScript 进阶征途:解锁Function奥秘,深掘Object方法精髓

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f235;Function方法 与 函数式编程&#x1f49d;1 call &#x1f49d…

竞赛课第十周(巴什游戏,尼姆博弈)

目录 目的: 实验内容: 第一题 思路&#xff1a; 【参考代码】 【运行结果】 第二题 输入&#xff1a; 输出&#xff1a; 【参考代码】 【运行结果】 目的: 熟悉并掌握公平组合游戏 &#xff08;1&#xff09;巴什游戏、尼姆游戏 &#xff08;2&#xff09;图游戏…

rs485自动收发电路

R/RO&#xff1a;receive/receive out&#xff0c;接收&#xff0c;连接单片机的 rx D/DI&#xff1a;drive/drive in&#xff0c;驱动&#xff0c;连接单片机的 tx 自动控制电路的目的就是在 tx 空闲&#xff08;空闲为高并&#xff09;时拉低 RE 和 DE&#xff0c;工作&…