Spring Boot Session 会话管理

本文探讨了Spring Boot中的会话管理,包括HTTP会话的重要性、管理方法如Cookies、隐藏字段、URL重写和HttpSession。重点介绍了Spring Session,提供了如Redis、JDBC和Hazelcast等不同存储库的会话管理方案。通过Spring Session JDBC在数据库中持久化会话信息,并展示了如何在Maven项目中引入和创建Controller进行会话操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Boot Session

会话管理是用于安全控制一个用户或者实体对基于网络的应用/服务的多个请求的过程。

HTTP用于网站和浏览器之间的交流,而会话则是同一个用户创建的一系列的HTTP请求和事务。

会话管理的实现规定了用户、网络应用之间共享和持续交换会话ID的过程。

由于HTTP协议的无状态,为了跟踪客户的行为,我们需要会话管理。会话管理是一个网络容器框架,用于为特定的用户储存会话数据

我们可以通过以下方法处理会话:

  1. Cookies

    网站发送的数据被储存在用户的本地浏览器中

  2. 隐藏的表达字段

    在隐藏的数据中,对用户不可见也不可修改,当用户提交表单时,隐藏数据会被发送。

  3. URL重写

    修改URL的参数

  4. HttpSession(网络会话)

    允许数据与单个访问者绑定

在分布式环境中,我们可以通过以下方式管理会话:

  • 粘性会话(Sticky Session)

    在这种类型的会话中,负载均衡将把通过一个客户的请求路由到同一个节点,如果这个节点发生故障,则会话会丢失。

  • 复制会话(Session Replication)

    为了克服粘性会话的问题,会话复制将会话数据复制到多个服务器,当任何节点发生故障后,会话数据可以转移到另外的节点。

  • 持久数据储存中的会话数据(Session Data in a Persistent DataStore)

    还有一种情况下,会话数据并不会储存在服务器中,取而代之的是,它会被储存在数据库里,并且拥有唯一id SESSION_ID

Spring Session

Spring Session包含下述组件:

  • Spring Session Core

    Spring Session的核心APIs

  • Spring Session Data Redis

    提供Redis数据库会话管理的会话存储库

  • Spring Session JDBC

    提供关系数据库会话管理的会话存储库

  • Spring Session Hazelcast

    提供Hazelcast会话管理的会话存储库

默认情况下,Apache Tomcat在内存中储存HTTP会话管理的对象。为了管理Spring Boot 会话管理,HTTPSession会被用于通过Spring Session JDBC在持久层中存储会话信息。

maven中导入

<dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session-jdbc</artifactId>
		</dependency>

创建Controller

为了处理用户的请求,处理用户的数据并将数据存储在会话的 NOTES_SESSION 属性中。

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值