Spring Session介绍

    • Spring Session
    • Session储存到Redis
      • 1:添加依赖
      • 2:配置信息
      • 3:Spring Session存String
      • 3:Spring Session存对象
    • 项目改造-Redis储存Session

Spring Session

Spring Session储存在Redis和取的执行流程:
1:request.getSession() 方法时,Servlet 容器会创建一个 HttpSession 对象,并返回给你。然后,Spring Session 进行拦截和包装,使用动态代理生成一个代理对象,该代理对象实现了 HttpSession 接口。
2:调用 httpSession.setAttribute() 方法设置属性值时,代理对象会拦截这个操作;将数据存储到 Redis 中以进行持久化保存。
3:调用 httpSession.getAttribute() 方法获取属性值时,代理对象会拦截这个操作;从 Redis 中检索数据,并返回给你。

Session session = request.getSession(); // 创建或获取会话;你配置储存在Redis;就会通过代理对象外部储存和取。通过动态代理的方式;当需要集成这个功能时;代码都不需要修改;你只需要添加配置即可
//有点区别:session.getAttribute在Spring Session返回的是你存的具体对象类型。而HttpSession的session.getAttribute返回的是Object类型

Spring Session相比于HttpSession有什么优势?
1:分布式会话管理;Spring Session 允许将会话数据存储在外部存储系统中,例如 Redis。
2:灵活的会话超时配置; Spring Session 允许灵活地配置会话的超时时间,而不仅仅依赖于容器或应用服务器的默认配置。

Session储存到Redis

1:添加依赖

<dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId><!--SessionRedis;已经包含 Redis 客户端框架-->
</dependency>

2:配置信息

#配置Session存在redis;而不是内存
spring.session.store-type=redis
#on_save 表示在保存(或更新)会话时,才会将会话的改变写入到Redis。
spring.session.redis.flush-mode=on_save
#会话的超时时间设置为1800秒,30分钟。
server.servlet.session.timeout=1800
#数据库名中命名层级
spring.session.redis.namespace=spring:session

3:Spring Session存String

@RestControllerclass UserCOntroller{private static final String Session_key="User_key";@RequestMapping("/loginset")public String loginset(HttpServletRequest request){HttpSession httpSession=request.getSession();httpSession.setAttribute(Session_key,"zhangsan");String s=(String) httpSession.getAttribute(Session_key);return s;}@RequestMapping("/loginget")public String loginget(HttpServletRequest request){HttpSession httpSession=request.getSession(false);String s=(String) httpSession.getAttribute(Session_key);return s;}
}

在这里插入图片描述
验证获取时是否成Redis获取:
在这里插入图片描述

3:Spring Session存对象

如果直接存的话是会报错的:
在这里插入图片描述
Redis 存储的数据都是以二进制数组形存在的。当我们在使用 RedisTemplate 这些Redis 客户端操作 Redis ,需要将数据序列化成二进制数组。
为什么Redis要是储存字节的形式:
1:数据持久化;防止丢失;需要将数据序列化为字节流,以便将其写入持久化文件,然后在重新加载时将其反序列化为对象。
2:网络传输;我们远程连接Redis是要通过网络连接;那么网络传输;字节流就是一个好的方式。
3:多语言支持;字节流就能适用于不同的编程语言的各种类型和对象
4:储存优化;字节流的储存更紧凑;能节省更多内存。内存相对硬盘比较贵。

Java 中的基本数据类型,它们都有默认的序列化方式可以通过实现 Serializable 接口来自定义序列化方式。而自定义类型;你得你对象拥有序列化和反序列能力。在对象上实现Serializable接口。
在这里插入图片描述

如果不想序列化;加transient把它排除掉;就没法存进去的;序列化把这个忽略了。
在这里插入图片描述

项目改造-Redis储存Session

在这里插入图片描述

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

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

相关文章

地隔离放大器集成电路芯片D3121,低噪声低失真双通道且外接电容小,能有效消除由线 路电阻所引起的问题及噪声

D3121 是一块对地能动冲放大器集成电路&#xff0c;该电路能有效消除由线 路电阻所引起的问题及噪声。所需外围电容小&#xff0c;便于设计时小型化的同 时可靠性不降低。广泛应用于车载音响系统内。 D3121 系列采用 DIP8 、 SOP8 、 SIP8 的封装形式封装。 主要特点&#x…

Qt应用开发(Quick篇)——矩形模块 Rectangle

一、前言 矩形模块用于用纯色或渐变填充区域&#xff0c;或者提供一个矩形边框。 二、外观 每个矩形项都可以使用使用color属性指定的纯填充色、使用gradient类型定义并使用gradient属性设置的渐变来绘制。如果同时指定了颜色和渐变效果&#xff0c;则只会生效渐变效果。 通过…

Python:核心知识点整理大全2-笔记

在本章中&#xff0c;你将学习可在Python程序中使用的各种数据&#xff0c;还将学 习如何将数据存储到变量中&#xff0c;以及如何在程序中使用这些变量。 2.1 运行 hello_world.py 时发生的情况 运行hello_world.py时&#xff0c;Python都做了些什么呢&#xff1f;下面来深入…

NFTScan | 11.27~12.03 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2023.11.20~ 2023.11.26 NFT Hot News 01/ Web3 教育平台 Open Campus 获 Binance Labs 315 万美元投资 11 月 27 日&#xff0c;Binance Labs 已向社区主导的 Web3 教育平台 Open Campu…

Selenium自动化测试工具使用方法汇总

1、设置无头浏览器模式 from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options Options() chrome_options.add_argument(- -headless) chrome_options.add_argument(- -disable-gpu) class XX(object): self.driver webdriv…

Python selenium自动化测试模型图解

1、线性测试 优势&#xff1a;每一个脚本都是完整独立的&#xff0c;每一个脚本对应一个测试用例 缺点&#xff1a;开发成本高&#xff0c;会有重复操作重复脚本&#xff1b;维护成本也高&#xff0c;修改重复操作的脚本时&#xff0c;要逐一进行修改。 2、模块化驱动测试 …

三、Zookeeper数据模型

目录 1、Znode兼具文件和目录两种特点 2、Znode具有原子性操作

前端小记--3.接上篇,级联组件el-cascader回显问题

在使用el-cascader这个级联组件时&#xff0c;组件的值是数组形式&#xff0c;且选中节点时&#xff0c;所返回的值中是包含选中节点的所有父节点的。 比如&#xff0c;我们选中的是“值班点1号-东门”&#xff0c;但组件实际的值是[‘值班点1号’,‘值班点1号-东门’]&#x…

[PyTorch][chapter 4][李宏毅深度学习][Gradient Descent]

前言&#xff1a; 目录: 1: 梯度下降原理 2: 常见问题 3&#xff1a; 梯度更新方案 4&#xff1a; 梯度下降限制 一 梯度下降原理 机器学习的目标找到最优的参数,使得Loss 最小 为什么顺着梯度方向loss 就能下降了。主要原理是泰勒公式。 假设损失函数为 忽略二阶导数, 当 …

分享几个电视颜色测试图形卡

介绍 本文分享几个常见的电视颜色测试图形卡和一段matlab程序&#xff0c;完成JPG转FPGA烧写文件&#xff0c;便于把彩色图片预装载到FPGA内。 电视颜色测试图形卡 一种专业检测电视显示效果的工具。它通常由一张卡片和一些色块组成&#xff0c;可以根据标准色彩空间和颜色渐…

语义分割网络FCN

语义分割是一种像素级的分类&#xff0c;输出是与输入图像大小相同的分割图&#xff0c;输出图像的每个像素对应输入图像每个像素的类别&#xff0c;每一个像素点的灰度值都是代表当前像素点属于该类的概率。 语义分割任务需要解决的是如何把定位和分类这两个问题一起解决&…

嘉里大荣物流与极智嘉再度携手,合作助力物流服务高效升级

近日&#xff0c;全球仓储机器人引领者极智嘉(Geek)与3PL知名企业嘉里大荣物流联合宣布&#xff0c;双方再度携手&#xff0c;6周内共建全新自动化订单履行中心&#xff0c;赋能国际时尚运动品牌New Balance加速B2B和B2C订单交付&#xff0c;为其客户提供更高效便捷的物流服务。…

江科大STM32学习笔记(上)

STM32F103xx 前言外设篇GPIO输出GPIO位结构GPIO模式外设的GPIO配置查看实战1&#xff1a; 如何进行基本的GPIO输入输出 OLED显示屏及调试Keil的调试模式演示 EXTI外部中断NVIC基本结构EXTI结构代码实战2&#xff1a;如何使用中断和对射式红外传感器&#xff06;旋转编码器 TIM&…

【flink番外篇】1、flink的23种常用算子介绍及详细示例(1)- map、flatmap和filter

Flink 系列文章 1、Flink 专栏等系列综合文章链接 文章目录 Flink 系列文章一、Flink的23种算子说明及示例1、maven依赖2、java bean3、map4、flatmap5、Filter 本文主要介绍Flink 的3种常用的operator&#xff08;map、flatmap和filter&#xff09;及以具体可运行示例进行说明…

Mysql的索引详解

1.索引的分类 1.按照功能来分&#xff0c;可以分为主键索引、唯一索引、普通索引、全文索引 2.按照索引字段个数来分&#xff0c;可以分为单列索引、联合索引 3.按照物理实现方式来分&#xff0c;可以聚簇索引、非聚簇索引 2.适合添加索引的场景 1.具有唯一性约束的字段。 2…

医药行业:轻松学会超低温冰箱技能

超低温冰箱在医疗、科研和生物领域中扮演着至关重要的角色&#xff0c;用于存储和保护对温度极为敏感的样品和药品。 然而&#xff0c;由于这些冰箱内的温度波动可能导致样品的损坏&#xff0c;因此对超低温冰箱的监控变得至关重要。 客户案例 医疗研究机构 上海某医疗研究机…

YOLOv7独家原创改进:创新自研CPMS注意力,多尺度通道注意力具+多尺度深度可分离卷积空间注意力,全面升级CBAM

💡💡💡本文自研创新改进:自研CPMS, 多尺度通道注意力具+多尺度深度可分离卷积空间注意力,全面升级CBAM 1)作为注意力CPMS使用; 推荐指数:五星 CPMS | 亲测在多个数据集能够实现涨点,对标CBAM。 收录 YOLOv7原创自研 https://blog.csdn.net/m0_63774211/ca…

外包干了4年,技术退步太明显了。。。。。

先说一下自己的情况&#xff0c;本科生生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年国庆&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

Docker容器(一)概述

一、虚拟化概述 1.1引⼊虚拟化技术的必要性 服务器只有5%的时间是在⼯作的&#xff1b;在其它时间服务器都处于“休眠”状态. 虚拟化前 每台主机⼀个操作系统; 软硬件紧密结合; 在同⼀个主机上运⾏多个应⽤程序通常会遭遇冲突; 系统的资源利⽤率低; 硬件成本⾼昂⽽且不够灵活…

金蝶云星空单据体明细权限和表单插件操作事件的先后顺序

文章目录 金蝶云星空单据体明细权限和表单插件操作事件的先后顺序顺序说明结论 金蝶云星空单据体明细权限和表单插件操作事件的先后顺序 顺序说明 先分录菜单单击事件EntryBarItemClick 再验权 后表单操作执行事件BeforeDoOperation 结论 如果是需要鉴权通过才允许操作的逻辑…