HttpSession使用方法及原理

news2024/11/17 9:36:49

HttpSession使用方法及原理

  • 一、HttpSession使用流程说明
  • 二、登录
    • 概述
    • 具体
  • 三、访问过程
    • 概述
    • 具体

一、HttpSession使用流程说明

1.用户发送登录请求到服务器。
2.服务器处理登录请求,调用userService.login(loginUser)。
3.如果登录成功,服务器调用request.getSession()获取或创建会话。
4.服务器通过【JSESSIONID:session】键值对的方式保存session
5.服务器将会话ID(JSESSIONID)通过Set-Cookie头部发送给浏览器。
6.浏览器将JSESSIONID存储在cookie中。
7.服务器设置会话属性session.setAttribute(“user”, user);。
8.服务器返回登录成功的响应给前端。
9.在后续的请求中,浏览器会自动将JSESSIONID通过Cookie头部发送给服务器,以便服务器能够识别用户的会话。

二、登录

概述

1.用户调用登录接口
2.存储用户的session信息(新生成或者读取老的),并返回前端JSESSIONID
3.浏览器将JSESSIONID存储至 cookie中

HttpSession session = request.getSession();//
session.setAttribute("user",user);

具体

当你调用 request.getSession() 方法时,如果当前请求还没有与之关联的会话(HttpSession),服务器会自动创建一个新的会话,并生成一个唯一的会话ID(如JSESSIONID),然后这个会话ID会被自动地通过HTTP响应的Set-Cookie头部发送给客户端(即浏览器)。
虽然没有直接操作JSESSIONID或将其返回给前端,但当你调用request.getSession()并设置会话属性时,服务器已经负责了JSESSIONID的创建、发送和接收工作。
(使用Apifox进行接口测试)如下图所示,当访问登录接口时,返回的报文Header头中,包含set-Cookie字段,其中就记录了JSESSIONID
在这里插入图片描述

三、访问过程

概述

1.根据cookie带过来的JSESSIONID,通过键值对关系,来获取session
2.根据session来获取user用户信息

//参数为false情况下,获取session(但不会自动创建一个空的,不存在则返回null)
HttpSession session = request.getSession(false);
UserInfo userinfo = session.getAttribute("user")

具体

使用Apifox接口测试工具,访问其他接口
在Header中有一个Cookie字段
在这里插入图片描述
点击进入Cookie,可以看见JSESSIONID这个信息
在这里插入图片描述
当用户访问接口时,HttpServletRequest对象调用getSession时,就会根据JSESSIONID自动去获取对应的HttpSession对象信息

HttpSession session = request.getSession(false);

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

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

相关文章

LeetCode(Python)-贪心算法

文章目录 买卖股票的最佳时机问题穷举解法贪心解法 物流站的选址(一)穷举算法贪心算法 物流站的选址(二)回合制游戏快速包装 买卖股票的最佳时机问题 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你…

大数据新视界 --大数据大厂之数据清洗工具 OpenRefine 实战:清理与转换数据

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

linux命令:显示已安装在linux内核的模块的详细信息的工具modinfo详解

目录 一、概述 二、使用方法 1、基本的使用语法 2、常用选项 3、输出字段 4、获取帮助 三、示例 四、实际用途 1、诊断问题 2、模块依赖 3、参数配置 五、其他事项 一、概述 modinfo 是 Linux 系统中的一个工具,用于显示有关已安装内核模块的详细信息。…

MySQL 预处理语句:强大的数据库工具

《MySQL 预处理语句:强大的数据库工具》 在 MySQL 数据库的使用中,预处理语句是一个非常有用的功能。它可以提高数据库的性能、安全性和可维护性。那么,什么是预处理语句呢?它又有哪些优点呢?让我们一起来了解一下。 …

C++_24_适配器

A 函数对象 概念&#xff1a; ​ 重载函数调用运算符的类实例化的对象&#xff0c;就叫函数对象.又名仿函数,函数对象和&#xff08;)触发重载函数调用运算符的执行。 作用&#xff1a; ​ 为算法提供策略 示例&#xff1a; #include <iostream> using namespace s…

OCI 简介:Kubernetes 环境下从代码到容器的全流程

OCI 简介 在容器化技术的演进中&#xff0c;OCI&#xff08;Open Container Initiative&#xff09;提供了一套标准化的规范&#xff0c;帮助统一容器的构建、分发和运行。OCI 规范包含三个部分&#xff1a; OCI Image-spec&#xff1a;定义了容器镜像的结构&#xff0c;确保…

自闭症儿童寄宿学校揭秘:全方位呵护孩子成长

自闭症儿童寄宿学校揭秘&#xff1a;星贝育园——全方位呵护孩子成长的温馨港湾 在繁华的广州城&#xff0c;有一所专为自闭症儿童打造的温馨家园——星贝育园自闭症儿童寄宿制学校。这里&#xff0c;不仅是一个提供专业康复训练的地方&#xff0c;更是一个充满爱与关怀的成长…

DVWA 靶场环境搭建

作者&#xff1a;程序那点事儿 日期&#xff1a;2024/09/15 09:30 什么是DVWA: 是OWSASP官方编写的PHP网站&#xff0c;包含了各种网站常见漏洞&#xff08;漏洞靶场&#xff09;&#xff0c;可以学习攻击及修复方式。 PHP环境包含了&#xff0c;Windows/Apache/Mysql/Php g…

【小程序】微信小程序课程 -2 快速上手

目录 1、快速上手基本概念 1.1 小程序常用组件 1.2 tabbar配置 1.3 尺寸单位 1.4 样式 1.4.1 全局样式 app.wxss 1.4.2 局部样式 xx.wxss 2、首页案例 2.1 button组件使用 2.2 swiper swiper-item 2.3 tips效果 2.4 引入矢量图 2.5 flex&#xff08;布局&#…

11. Map和Set

一、二叉搜索树 1. 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根…

一篇文章讲清楚synchronized关键字的作用及原理

概述 在应用Sychronized关键字时需要把握如下注意点&#xff1a; 一把锁只能同时被一个线程获取&#xff0c;没有获得锁的线程只能等待&#xff1b; 每个实例都对应有自己的一把锁(this),不同实例之间互不影响&#xff1b;例外&#xff1a;锁对象是*.class以及synchronized修…

Docker全家桶:Docker Compose项目部署

在学习完了前面的基础知识之后&#xff0c;我们现在可以开始部署完整的项目了。项目分成两个部分&#xff0c;前端和后端&#xff0c;并且采用前后端分离的形式。对应到docker&#xff0c;就是前端和后端分别对应一个容器。把这两个容器加入到同一个网段中&#xff0c;就能够进…

iOS OC 底层原理之 category、load、initialize

文章目录 category底层结构runtime 执行 category 底层原理添加成员变量 load调用形式系统调用形式的内部原理源码实现逻辑 initialize调用形式源码核心函数&#xff08;由上到下依次调用&#xff09;如果分类实现了 initialize category 底层结构 本质是结构体。struct _cat…

找不到MSVCR100.dll怎么办,解决MSVCR100.dll丢失的六种方法

在计算机的日常使用中&#xff0c;我们可能会遇到各种各样的问题&#xff0c;其中之一就是MSVCR100.dll文件丢失。这个文件是Microsoft Visual C 2010的一个组件&#xff0c;如果丢失&#xff0c;可能会导致某些程序无法正常运行。那么&#xff0c;如何解决这个问题呢&#xff…

齿轮家族中的重要一分子——钟表齿轮

机械钟表的起源## 标题 由于日晷需要阳光来计时&#xff0c;人们发明了用水和沙子计时的钟表&#xff0c;以及燃烧煤油、观察煤油体积减少来计时的钟表&#xff0c;但这些钟表的可靠性较低。因此&#xff0c;人们发明了不需要水和沙子等流体的机械钟表。 1300年左右&#xff…

【Java】异常处理 —— Throwable 及其应用

通过一张图来展示Throwable类的继承体系&#xff0c;如图2所示。 图2 Throwable异常体系结构图 ● Error类称为错误类&#xff0c;它表示Java运行时产生的系统内部错误或资源耗尽的错误&#xff0c;是比较严重的&#xff0c;仅靠修改程序本身是不能恢复执行的&#xff0c;例如…

工业制造场景中的设备管理深度解析

在工业制造的广阔领域中&#xff0c;设备管理涵盖多个关键方面&#xff0c;对企业的高效生产和稳定运营起着举足轻重的作用。 一、设备运行管理 1.设备状态监测 实时监控设备的运行状态是确保生产顺利进行的重要环节。通过传感器和数据采集系统等先进技术&#xff0c;获取设备…

衡石分析平台系统管理手册-功能配置之应用集市管理

页面设置​ 标签页设置​ 应用集市管理员基于实际业务需求&#xff0c;可以在系统管理->页面设置中对应用集市的标签页进行设置&#xff0c;包括定义标签页名称、调整展示顺序和隐藏标签。普通用户不支持标签页设置。 重命名&#xff1a;支持对我的空间和公共空间进行重命…

java SE -- 线程 asset

一.进程 进程&#xff0c;是正在运行的程序实例&#xff0c;是操作系统进行资源分配的最小单位。每个进程都有它自己的地址空间和系统资源&#xff08;比如CPU时间&#xff0c;内存空间&#xff0c;磁盘IO等&#xff09;。多个进程可以同时执行&#xff0c;每个进程在运行时都…

【OSS安全最佳实践】对OSS表格文件中的敏感数据进行脱敏

使用数据安全中心 DSC&#xff08;Data Security Center&#xff09;的静态脱敏&#xff0c;对当前账号下源OSS Bucket中的结构化TXT、CSV、XLSX和XLS格式文件中的敏感数据进行脱敏&#xff0c;然后将脱敏后的文件保存到当前账号下的目标OSS Bucket&#xff0c;实现数据的安全共…