SpringMVC實現Session共享

SpringMVC實現Session共享

1.pom.xml添加項目依賴

注意這個兩個項目的版本號不對會觸發各種彩蛋,調了好久才調出個沒問題的。

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.6.2</version>
</dependency>
<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
    <version>1.3.5.RELEASE</version>
</dependency>

2.web.xml添加攔截器

<filter>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSessionRepositoryFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-session-redis.xml</param-value>
</context-param>

3.添加spring-session-redis.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:property-placeholder location="classpath:conf/redis.properties"/>
    <context:annotation-config />

    <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="hostName" value="${redis.host}"/>
        <property name="port" value="${redis.port}"/>
        <property name="password" value="${redis.password}"/>
    </bean>

    <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
        <property name="connectionFactory" ref="jedisConnectionFactory" />
    </bean>

    <bean id="redisHttpSessionConfiguration"
          class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>

</beans>

還有conf/redis.properties

redis.host=localhost
redis.port=6379
redis.password=123456

演示代碼: https://github.com/zhanjixun/spring-session-redis-demo

4.測試

項目中添加了jetty插件,這裏啓動兩個jetty用於模擬分佈式部署,一個jetty以8081端口啓動,另一個以8082端口啓動。先打開http://localhost:8081/homehttp://localhost:8082/home ,都被重定向login頁面了,先在8081登錄跳回home頁面,打開http://localhost:8082/home 能夠正常顯示用戶信息,測試通過。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章