一、简介
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