SpringSession管理

说明:在使用Nginx进行反向代理的时候会发现,每当代理到不同的Tomcat的时候,实际上不同的Tomcat都会各自维护自己的Session数据信息,这样就有可能出现一种情况,通过Nginx访问转移到了A主机上设置了session属性,第二次访问的时候由于通过Nginx转移到了B主机上,于是就无法发现之前设置的session属性。解决这一问题有三种方式:nginx解决,tomcat解决,程序解决。开发的时候用的是程序解决即SpringSession。

1.如果想要使用SpringSession技术,则首先要导入相应依赖包

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

2.既然整个的项目都是围绕着Redis展开的,那么一定要在项目里面配置好Redis的环境属性以及SpringDataRedis配置类,同时还需要追加有一个SpringSession配置类。

package com.yootk.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration;

@Configuration
@EnableRedisHttpSession // 与Redis自动整合
public class SpringSessionConfig {
    @Bean
    public RedisHttpSessionConfiguration getRedisHttpSessionConfiguration() {
        RedisHttpSessionConfiguration configuration = new RedisHttpSessionConfiguration() ;
        return configuration ;
    }
}

3.修改web.xml配置文件,追加一个过滤器,这样才可以使用SpringSession统一管理。

<!-- 5、追加SpringSession的过滤器配置,设置session生效路径 -->
    <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>
此时的名称必须为"springSessionRepositoryFilter",否则服务器无法启动。

  

原文地址:https://www.cnblogs.com/wxl123/p/11147853.html