Spring Session教程

本文是Spring Session的详细教程,涵盖了其特性、入门案例及集成配置。通过实例演示了如何在Redis中存储Session,实现跨服务器session共享,帮助读者深入理解Spring Session的使用。

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

Spring Session简介

Spring Session 是Spring家族中的一个子项目,它提供一组API和实现,用于管理用户的session信息;

它把servlet容器实现的httpSession替换为spring-session,专注于解决 session管理问题,Session信息存储在Redis中,可简单快速且无缝的集成到我们的应用中。

官网:https://spring.io/

Spring Session的特性

• 提供用户session管理的API和实现

• 提供HttpSession,以中立的方式取代web容器的session,比如tomcat中的session

• 支持集群的session处理,不必绑定到具体的web容器去解决集群下的session共享问题

Spring Session入门案例

1. 环境配置

① 创建一个空的Maven project,名字及路径根据自己的情况定。

image.png

② 空project创建好后,会提示创建模块,我们暂时先取消

image.png

③ 设置字体

image.png

④ 设置编码方式

image.png

⑤ 设置maven信息

image.png

⑥ 创建一个Maven的web module,名字为01-springsession-web

image.png

image.png

⑦ 完善Maven项目的结构

A、 在main目录下,创建java目录,并标记为Sources Root

image.png

B、 在main目录下,创建resources目录,并标记为Resources Root

image.png

2. 代码开发

① 创建向session放数据的servlet

在java目录下创建包com.bjpowernode.session.servlet包

image.png

在servlet包下创建SetSessionServlet

image.png

image.png

在Servlet中通过注解指定urlPatterns,并编写代码

image.png

② 创建从session放数据的servlet

在servlet包下创建GetSessionServlet

image.png

image.png

在Servlet中通过注解指定urlPatterns,并编写代码

image.png

③ 向pom.xml文件中添加servlet及jsp的配置[图片上传失败...(image-24e33f-1659698259672)] [图片上传失败...(image-d16876-1659698259672)]

④ 部署访问测试(目前无法实现session共享)

A、 配置tomcat9100服务器

打开Edit Configurations选项

image.png

添加tomcat配置

image.png

给tomcat服务器取名,并修改端口号

image.png

将项目部署到tomcat9100上

image.png

指定项目的上下文根为/01-springsession-web

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qwrispeG-1659698536552)(https://upload-images.jianshu.io/upload_images/26756112-b976ed6935ec3d48.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

为了实现热部署,在Server选项卡中,配置以下两个选项

image.png

B、 配置tomcat9200服务器

操作步骤同配置tomcat9100,配完之后在Application Servers窗口中如下

image.png

3. SpringSession集成配置

① 在pom.xml文件中,添加Spring Session相关的依赖

image.png

② 在web.xml文件中配置springSessionRepositoryFilter过滤器

image.png

③ 在web.xml文件中加载Spring配置文件

image.png

④ 创建applicationContext-session.xml

A、 配置一个RedisHttpSessionConfiguration类

<context:annotation-config/>:用于激活已经在Spring容器中注册的bean或者注解,因为我们通过容器创建的bean中,底层有可能使用了其它的注解,我们通过<context:component-scan>就不能指定具体的包了,所以可以使用<context:annotation-config/>激活

image.png

B、 配置Spring-data-redis

<!-- 配置jedis连接工厂,用于连接redis -->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
    <property name="hostName" value="${redis.hostName}"/>
    <property name="port" value="${redis.port}"/>
    <property name="password" value="${redis.password}"/>
    <property name="usePool" value="${redis.usePool}"/>
    <property name="timeout" value="${redis.timeout}"/>
</bean>

<!--读取redis.properties属性配置文件-->
<context:property-placeholder location="classpath:redis.properties"/>

⑤ 配置redis.properties文件

redis.hostName=192.168.235.128
redis.port=6379
redis.password=123456
redis.usePool=true
redis.timeout=15000

⑥ 在applicationContext.xml中导入applicationContext-session.xml

image.png

点击config将这两个配置文件进行关联

image.png

4. 部署测试

① 思路

为了演示session的共享,我们这里配置两个tomcat服务器,端口号分别为9100和9200,将我们上面创建好的项目分别部署到这两台服务器上。一台服务器执行放session,另一台服务器执行取session的操作。

② 启动Linux上的redis服务器

③ 启动两台tomcat服务器

在浏览器中访问tomcat9100服务器的setSession

image.png

Ø 在浏览器中访问tomcat9200服务器的getSession

image.png

④ 分析

tomcat9200服务器上的项目可以访问tomcat9100上的session,说明session共享成功

⑤ 进一步验证

打开Resis客户端工具(RedisDesktopManager),查看Redis里面的session数据

其实标准的redis的key格式就是用冒号分割,客户端工具会以目录的形式展示

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值