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/home 和 http://localhost:8082/home ,都被重定向login頁面了,先在8081登錄跳回home頁面,打開http://localhost:8082/home 能夠正常顯示用戶信息,測試通過。