Spring Session教程
Spring Session常見的應用場景
Spring Session的執行流程
Session會話管理

Spring Session教程

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,名字及路徑根據自己的情況定。

② 空project創建好后,會提示創建模塊,我們暫時先取消

③ 設置字體

④ 設置編碼方式

⑤ 設置maven信息

⑥ 創建一個Maven的web module,名字為01-springsession-web

⑦ 完善Maven項目的結構

A、 在main目錄下,創建java目錄,并標記為Sources Root

B、 在main目錄下,創建resources目錄,并標記為Resources Root

2. 代碼開發

① 創建向session放數據的servlet

在java目錄下創建包com.bjpowernode.session.servlet包

在servlet包下創建SetSessionServlet

在Servlet中通過注解指定urlPatterns,并編寫代碼

② 創建從session放數據的servlet

在servlet包下創建GetSessionServlet

在Servlet中通過注解指定urlPatterns,并編寫代碼

③ 向pom.xml文件中添加servlet及jsp的配置

④ 部署訪問測試(目前無法實現session共享)

A、 配置tomcat9100服務器

打開Edit Configurations選項

添加tomcat配置

給tomcat服務器取名,并修改端口號

將項目部署到tomcat9100上

指定項目的上下文根為/01-springsession-web

為了實現熱部署,在Server選項卡中,配置以下兩個選項

B、 配置tomcat9200服務器

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

3. SpringSession集成配置

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

② 在web.xml文件中配置springSessionRepositoryFilter過濾器

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

④ 創建applicationContext-session.xml

A、 配置一個RedisHttpSessionConfiguration類

<context:annotation-config/>:用于激活已經在Spring容器中注冊的bean或者注解,因為我們通過容器創建的bean中,底層有可能使用了其它的注解,我們通過<context:component-scan>就不能指定具體的包了,所以可以使用<context:annotation-config/>激活

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

點擊config將這兩個配置文件進行關聯

4. 部署測試

① 思路

為了演示session的共享,我們這里配置兩個tomcat服務器,端口號分別為9100和9200,將我們上面創建好的項目分別部署到這兩臺服務器上。一臺服務器執行放session,另一臺服務器執行取session的操作

② 啟動Linux上的redis服務器

③ 啟動兩臺tomcat服務器

在瀏覽器中訪問tomcat9100服務器的setSession

Ø 在瀏覽器中訪問tomcat9200服務器的getSession

④ 分析

tomcat9200服務器上的項目可以訪問tomcat9100上的session,說明session共享成功

⑤ 進一步驗證

打開Resis客戶端工具(RedisDesktopManager),查看Redis里面的session數據

其實標準的redis的key格式就是用冒號分割,客戶端工具會以目錄的形式展示

全部教程