首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

spring-session支持在session上调用"setAttribute“时保存session吗?

Spring Session 是一个用于在分布式环境中管理用户会话的框架。它提供了一种简单且灵活的方式来处理会话数据的存储和管理。在 Spring Session 中,可以通过调用 "setAttribute" 方法来保存会话数据。

当调用 "setAttribute" 方法时,Spring Session 会将会话数据保存在一个可配置的存储介质中,例如数据库、Redis、MongoDB 等。这样做的好处是,即使应用程序重启或用户切换到另一个服务器,会话数据仍然可以被正确地恢复和访问。

Spring Session 的优势包括:

  1. 分布式会话管理:Spring Session 提供了一种简单的方式来管理分布式环境中的用户会话,无需依赖特定的云计算品牌商。
  2. 灵活的存储介质:Spring Session 支持多种存储介质,可以根据实际需求选择合适的存储方式,如数据库、Redis、MongoDB 等。
  3. 高度可定制化:Spring Session 提供了丰富的配置选项和扩展点,可以根据业务需求进行定制和扩展。
  4. 安全性:Spring Session 提供了对会话数据的加密和验证机制,确保会话数据的安全性。

Spring Session 的应用场景包括但不限于:

  1. 分布式系统:当应用程序需要在多个服务器之间共享用户会话数据时,可以使用 Spring Session 来管理会话。
  2. 高并发环境:当应用程序需要处理大量并发用户请求时,可以使用 Spring Session 来管理会话,确保数据的一致性和可靠性。
  3. 云原生应用:当应用程序部署在云环境中时,可以使用 Spring Session 来管理会话,实现跨服务器的会话共享。

推荐的腾讯云相关产品和产品介绍链接地址:

腾讯云提供了多个与会话管理相关的产品和服务,包括云数据库 Redis、云原生应用引擎 TKE、云原生数据库 TDSQL 等。您可以通过以下链接了解更多信息:

  1. 云数据库 Redis:https://cloud.tencent.com/product/redis
  2. 云原生应用引擎 TKE:https://cloud.tencent.com/product/tke
  3. 云原生数据库 TDSQL:https://cloud.tencent.com/product/tdsql

请注意,以上链接仅供参考,具体选择产品和服务应根据实际需求和情况进行决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【SSO单点登录】分布式Session存在问题&& spring-session的设计之妙

分布式session如何解决 当我们用nginx做负载均衡,用户A服务器登录了,A服务器存储了session,客户端也存储了cookie,其中有JSESSIONID。...后续当第一次调用 request 的getSession方法,会调用到 SessionRepositoryRequestWrapper 的getSession方法。...说的简单点就是:拦截请求,将之前服务器内存中进行 Session 创建销毁的动作,改成 Redis 中创建。...解决过期事件不及时触发的方法 spring-session为了能够及时的产生Session过期的过期事件,所以增加了: spring:session:sessions:expires:726de8fc-c045...这不跟redis的第二个过期策略一样,都是去扫一遍,有必要这里再扫

8610

这是一种有关记住我功能的新实现方式

传统的前后端不分离项目中,大家登录界面应该经常能看到记住我这个功能,这个功能本质是为了让用户能在一段较长时间内不在重复登录,以前的实现方案中,大家多使用 cookie 实现,本文给大家介绍引入了...项目地址:https://github.com/wayn111/newbee-mall-pro本文大纲如下,1. spring-session 的 yml 配置使用 spring-session 后,...秒,也就是一小。...打开登录页面当用户打开 newbeepro 项目前端页面,用户 session 就已经 redis 中保存了下来,这一点我们通过查看 redis 客户端发现,此时用户的 session 信息已经存在...() == 1) { return R.error("该账户已被禁用"); } BeanUtils.copyProperties(user, mallUserVO); session.setAttribute

17510
  • spring-session实现分布式集群session的共享

    那问题来了,如何保证不同的应用能够共享同一份session数据呢?最简单的想法,就是把session数据保存到内存以外的一个统一的地方,例如Memcached/Redis等数据库中。...参考 spring-session之一 初探 spring-session   本博客不涉及session解释,关于session大家自行去查资料;关于spring-session的相关概念大家可以去spring...分布式集群应用   单机应用中,session肯定没问题,就存在本地的servlet容器中,那么分布式集群中会像单机一样正常?...6、spring-session官网提供的例子中,用注解的方式进行配置的,可我压根就没看到web.xml中有spring的配置,但实际spring容器启动了,并且实例化了需要的bean,应用也能跑起来...的时候,登录认证不要打开,因为jedis好像还不支持redis的集群密码设置。

    74510

    聊一聊分布式会话的解决方案

    2、服务器验证通过后,在当前对话(session)里面保存相关数据,比如用户角色、登录时间等等。 3、服务器向用户返回一个 session_id,写入用户的 Cookie。...2、存在的问题 扩展性不好,向上图中,存在两个服务器session不能共享 3、解决方案 1、session复制 将服务器1的session,复制到服务器2,同样将服务器2的session也复制到服务器...像tomcat等web容器都支持session复制的功能,同一个局域网内,一台服务器的session会广播给其他服务器。...2、Spring-Session Spring-Session 提供了对Redis、MongoDB、MySQL 等常用存储的支持Spring-Session 提供与 HttpSession 的透明整合...,这意味着开发人员可以使用 Spring-Session 支持的实现方式,切换 HttpSession 至 Spring-Session 1、引入依赖 <!

    29620

    分布式 Session 解决方案

    解决方案: 使用cookie来完成(很明显这种不安全的操作并不可靠) 使用Nginx中的ip绑定策略,同一个ip只能在指定的同一个机器访问(不支持负载均衡) 利用数据库同步session(效率不高) 使用..., String name) { session.setAttribute("name", name); return "当前项目端口:" + projectPort +...spring已经给我们想好了问题并且已经提供出解决方案:spring-session 不了解的可以去百度了解下。...实现原理: 就是当Web服务器接收到http请求后,当请求进入对应的Filter进行过滤,将原本需要由web服务器创建会话的过程转交给Spring-Session进行创建,本来创建的会话保存在Web服务器内存中...,通过Spring-Session创建的会话信息可以保存第三方的服务中,如:redis,mysql等。

    43320

    分布式Session解决方案

    解决方案: 使用cookie来完成(很明显这种不安全的操作并不可靠) 使用Nginx中的ip绑定策略,同一个ip只能在指定的同一个机器访问(不支持负载均衡) 利用数据库同步session(效率不高) 使用..., String name) { session.setAttribute("name", name); return "当前项目端口:" + projectPort +...spring已经给我们想好了问题并且已经提供出解决方案:spring-session 不了解的可以去百度了解下。...实现原理: 就是当Web服务器接收到http请求后,当请求进入对应的Filter进行过滤,将原本需要由web服务器创建会话的过程转交给Spring-Session进行创建,本来创建的会话保存在Web服务器内存中...,通过Spring-Session创建的会话信息可以保存第三方的服务中,如:redis,mysql等。

    60610

    理解分布式Session处理来看看spring怎么做的

    Spring Session使用Redis存储Session原理理解 1、背景 HttpSession ​ Session 是我们在做java web项目 或者是其他的web项目 一定会接触的,...简介 Spring Session是Spring的项目之一,GitHub地址:https://github.com/spring-projects/spring-session。...Spring Session把servlet容器实现的httpSession替换为spring-session,专注于解决session管理问题。...2、场景理解 ​ 从场景来理解这个session工具的好处,这里我们以微服务两个域名(父子域名)来举例 auth.mall.com mall.com ​ 我们注册需要转到 auth.mall.com中调用用户服务来完成登录...,加上注解,就可以共享redis的session域 他还做了很多的事情 比如 我们还在使用的时候 session的过期时间会自动的续上等操作, 4、核心原理 Spring-session 我们使用session

    40920

    Spring-Session基于Redis管理Session【面试+工作】

    spring-session管理session实战 1.maven依赖的jar ? 2.准备spring-session.xml配置文件 ?...,也支持持久化到其他数据库中(jdbc,Mongo,Hazelcast等); 3.SessionRepositoryFilter过滤器 所有的请求都会先经过SessionRepositoryFilter...对象;如果redis里面也没有则创建一个新的session; 5.RedisOperationsSessionRepository类 关于session保存,更新,删除,获取操作都在此类中; 5.1保存...session 每次消息处理完之后,会执行finally中的commitSession方法,每个session保存都会创建三组数据,如下所示: ?...是30分钟,而另外2个都是35分钟; 理论只需要为spring:session:sessions:[sessionId]指定有效期就行了,为什么还要再保存两个key,官方的说法是依赖redis自身提供的有效期并不能保证及时删除

    1.3K20

    从Spring Session源码看Session机制的实现细节

    ("/helloworld") public String hello(HttpSession session){ session.setAttribute("name","xu"); return...还记得前面 redis 文档里面提到的一个技巧?...并发问题导致的多余数据,实际并未过期。如上所述,第 32 分钟的桶里面存在的 session:1 实际并不应该被删除,使用 touch 的好处便是我只负责检测,删不删交给 redis 判断。...session:1 第 32 分钟被 touch 了一次,并未被删除,第 33 分钟应当被 redis 删除,但可能存在延时,这个时候 touch 一次,确保删除。...,spring-session 中 A 类型键的过期时间是 35 分钟,比实际的 30 分钟多了 5 分钟,这意味着即便 session 已经过期,我们还是可以 redis 中有 5 分钟间隔来操作过期的

    2.3K120

    Tomcat Session管理分析【面试+工作】

    复制,依赖redis的可靠性,比起sessin复制扩展性更好; Session的生命周期 1.解析获取requestedSessionId 当我们类中通过request.getSession(),tomcat...,如果为空,并且不是创建session操作,直接返回null;否则会调用Session manager创建一个新的session; 关于requestedSessionId是如何获取的,Tomcat内部可以支持从...DEFAULT:默认保存策略,依赖其他四种情况保存session, SAVE_ON_CHANGE:每次session.setAttribute()、session.removeAttribute()触发都会保存...ThreadLocal变量; 4.何时被移除 一节中介绍了Tomcat内置看定期检测session是否过期,ManagerBase中提供了processExpires方法来处理session过去的问题...,Spring session https://github.com/spring-projects/spring-session是一个不错的选择。

    68340

    分布式解决方案-分布式Session一致性问题

    这样,当用户应用程序的 Web 页之间跳转,存储 Session 对象中的变量将不会丢失,而是整个用户会话中一直存在下去。...浏览器获取到sessionid后会保存到本地cookie中。...但是session属于会话机制,当当先会话结束session就会被销毁,并且web程序会为每一次不同的会话创建不同的session,所以分布式场景下,即使是调用同一个方法执行同样的代码,但是他们的服务器不同...session丢失 不足:增加了一次网络调用,并且需要修改应用代码 对于db存储还是cache,个人推荐后者:session读取的频率会很高,数据库压力会比较大。...Spring-Session进行创建,本来创建的会话保存在Web服务器内存中,通过Spring-Session创建的会话信息可以保存第三方的服务中,如:redis,mysql等。

    51920

    sso单点登录的入门(Session跨域、Spring-Session共享)

    将这个标记作为key,将客户端需要保存的数据作为value,服务端进行保存(数据库保存或NoSQL保存)。这种机制就是Session的跨域解决。...1 spring-session技术是spring提供的用于处理集群会话共享的解决方案。spring-session技术是将用户session数据保存到三方存储容器中,如:mysql,redis等。...3 使用要求:   配置一个Spring提供的Filter,实现数据的拦截保存,并转换为spring-session需要的会话对象。...4 spring-session表:保存客户端session对象的表格。 5 spring-session-attributes表:保存客户端session中的attributes属性数据的表格。...-- 重要:spring-session的filter拦截器 完成数据转换的拦截器,spring提供的filter实现数据的拦截保存并转换为spring-session所需的会话对象中。

    1.9K20

    spring-boot-2.0.3不一样系列之番外篇 - 自定义session管理,绝对有值得你看的地方

    前言   还记得当初写spring-session实现分布式集群session的共享的时候,里面有说到利用filter和HttpServletRequestWrapper可以定制自己的getSession...客户端第一次请求request.getSession(),也就是说客户端的请求中服务端第一次调用request.getSession(),服务器会创建了Session对象并保存在servlet容器的...注意:         第一次请求request.getSession(),请求头没带session id的信息,响应头中包括设置session id的cookie设置命令;之后客户端的请求(不管服务端时候调用...是第一次调用request.getSession()创建的(session过期另说,不是本文内容)         不同容器的session id名称可能不一样,JSESSIONID是tomcat中...为了实现同一会话的效果,创建session的时候,需要往response中添加cookie,保存session id,下次请求的时候,浏览器会将cookie信息传过来,我们去cookie中获取session

    1.7K40

    补习系列(15)-springboot 分布式会话原理

    A和应用B,某用户第一次访问网站,session数据保存在应用A中; 第二次访问,如果请求到了应用B,会发现原来的session并不存在!...RedisOperationsSessionRepository是基于Redis实现的Session读写类,由spring-data-redis提供; 调用路径搜索中可以发现,SessionRepositoryRequestWrapper...spring-session 通过过滤器实现 HttpServletRequest 代理; 代理对象中调用会话管理器进一步进行Session的操作。 这是一个代理模式的巧妙应用! C....数据老化 我们注意到查看Redis数据发现了这样的 Key 1) "spring:session:app:sessions:expires:732134b2-2fa5-438d-936d-f23c9a384a46...定时器执行清理并没有涉及会话数据(HASH)的处理,而仅仅是对Expire键做了操作,是否当前存在的BUG?

    62120
    领券