一、简介

spring-session 提供了一套创建和管理Servlet HttpSession的方案。

spring-session 提供了集群Session(Clustered Sessions)功能,默认采用外置的Redis来存储Session数据,以此来解决Session共享的问题。

下面是来自官网的特性介绍:

1.用于管理用户会话的api和实现。

2.HttpSession:允许在应用程序容器代替HttpSession(如Tomcat)中立的方式。

Clustered Sessions:Spring会话很难支持集群会话,而不必绑定到应用程序容器特定的解决方案。

Multiple Browser Sessions:Spring会话支持在单个浏览器实例中管理多个用户会话(即与谷歌类似的多个身份验证帐户)。

RESTful APIs:Spring会话允许在报头中提供会话ID,以便与REST API一起工作。

3.WebSocket:为保持HttpSession活着时接收WebSocket消息的能力。

二、配置

1. 添加依赖

<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>

2. spring-context-springsession.xml配置文件添加(SessionRepositoryFilter实例化bean)

<!-- 将session放入redis -->
<context:annotation-config/>
<bean id="redisHttpSessionConfiguration" class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration" >
	<property name="redisNamespace" value="web_01" />
	<property name="maxInactiveIntervalInSeconds" value="1800" />
</bean>

redisNamespace:redis键空间名称;
maxInactiveIntervalInSeconds:每一个新创建的springsession的过期时间(秒)。

3. web.xml添加(SessionRepositoryFilter过滤器的配置)

<!-- 分布式Session共享Filter -->
<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>

三、补充

如果要设置Session的过期时间,通常我们会在web.xml文件中进行设置。

但是,使用Spring Session托管session后,这里的设置将会失效。

我们要专门为Spring Session进行设置:设置其maxInactiveIntervalInSeconds属性即可。注意,maxInactiveIntervalInSeconds的的单位是秒!

=============================================================================================================

相关文章

1. http://blog.csdn.net/zcl111/article/details/51700925

2. https://www.cnblogs.com/qlong8807/p/5557271.html

配置中遇到的问题

1. http://blog.csdn.net/ankeway/article/details/72961346

通过Spring Session实现Session集中管理

1. https://zhuanlan.zhihu.com/p/26903358

spring-session相关知识

1. Spring Session-使用Redis的HttpSession

2. Spring Session-使用JDBC的HttpSession

3. Spring Session-使用Hazelcast的HttpSession

4. Spring Session-HttpSession整合工作原理

5. Spring Session-HttpSession & RESTful APIs

6. Spring Session-WebSocket集成

7. Spring Session-Spring Security集成

8. Spring Session-API文档