Spring Session簡介
Spring Session 是Spring家族中的一個子項目,它提供一組API和實現,用于管理用戶的session信息;
它把servlet容器實現的httpSession替換為spring-session,專注于解決 session管理問題,Session信息存儲在Redis中,可簡單快速且無縫的集成到我們的應用中。
官網:https://spring.io/
• 提供用戶session管理的API和實現
• 提供HttpSession,以中立的方式取代web容器的session,比如tomcat中的session
• 支持集群的session處理,不必綁定到具體的web容器去解決集群下的session共享問題
① 創建一個空的Maven project,名字及路徑根據自己的情況定。
② 空project創建好后,會提示創建模塊,我們暫時先取消
③ 設置字體
④ 設置編碼方式
⑤ 設置maven信息
⑥ 創建一個Maven的web module,名字為01-springsession-web
⑦ 完善Maven項目的結構
A、 在main目錄下,創建java目錄,并標記為Sources Root
B、 在main目錄下,創建resources目錄,并標記為Resources Root
① 創建向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格式就是用冒號分割,客戶端工具會以目錄的形式展示