<menu id="k0e80"><tt id="k0e80"></tt></menu>
  • 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格式就是用冒號分割,客戶端工具會以目錄的形式展示

    全部教程
    XXX
    <menu id="k0e80"><tt id="k0e80"></tt></menu>