`

spring-session 共享session

阅读更多
1.下载jar
<!-- spring 共享session -->
    <!-- https://mvnrepository.com/artifact/org.springframework.session/spring-session-data-redis -->
    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session-data-redis</artifactId>
        <version>1.3.1.RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.session</groupId>
        <artifactId>spring-session</artifactId>
        <version>1.3.1.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-gemfire -->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-gemfire</artifactId>
        <version>1.8.5.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-mongodb -->
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>1.9.4.RELEASE</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.lambdaworks/lettuce -->
    <dependency>
        <groupId>biz.paluch.redis</groupId>
        <artifactId>lettuce</artifactId>
        <version>3.5.0.Final</version>
    </dependency>

2.配置文件:


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:cache="http://www.springframework.org/schema/cache"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
        http://www.springframework.org/schema/cache
        http://www.springframework.org/schema/cache/spring-cache.xsd">


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

    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="50"/>
        <property name="maxTotal" value="50"/>
        <property name="maxWaitMillis" value="50"/>
        <!--<property name="testOnBorrow" value="${redis.testOnBorrow}" />-->
    </bean>

    <!--<bean id="redisClient" class="redis.clients.jedis.JedisCluster">-->
    <!--<constructor-arg name="nodes">-->
    <!--<set>-->
    <!--<bean class="redis.clients.jedis.HostAndPort">-->
    <!--<constructor-arg name="host" value="192.168.6.24"></constructor-arg>-->
    <!--<constructor-arg name="port" value="6379"></constructor-arg>-->
    <!--</bean>-->
    <!--&lt;!&ndash;<bean class="redis.clients.jedis.HostAndPort">&ndash;&gt;-->
    <!--&lt;!&ndash;<constructor-arg name="host" value="192.168.31.100"></constructor-arg>&ndash;&gt;-->
    <!--&lt;!&ndash;<constructor-arg name="port" value="7001"></constructor-arg>&ndash;&gt;-->
    <!--&lt;!&ndash;</bean>&ndash;&gt;-->
    <!--</set>-->

    <!--</constructor-arg>-->
    <!--<constructor-arg name="poolConfig" ref="poolConfig"></constructor-arg>-->
    <!--</bean>-->

    <!--<bean id="redisClusterConfiguration" class=" org.springframework.data.redis.connection.RedisClusterConfiguration">-->
        <!--<property name="clusterNodes">-->
            <!--<set>-->
                <!--<value>192.168.6.24:3679</value>-->
                <!--<value>192.168.6.24:4679</value>-->
                <!--<value>192.168.6.24:5679</value>-->
            <!--</set>-->
        <!--</property>-->
    <!--</bean>-->

    <context:annotation-config />
    <bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/>
    <!--<bean class="org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory"/>-->


    <bean id="connectionFactory"
          class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <property name="poolConfig" ref="poolConfig"/>
        <property name="port" value="6379"/>
        <property name="hostName" value="192.168.6.24"/>
        <!--<property name="password" value="${redis.pass}" />-->
        <!--<property name="database" value="1" /> 数据库索引-->
        <property name="timeout" value="6000"/>
        <!--<constructor-arg name="clusterConfig" ref="redisClusterConfiguration"></constructor-arg>-->
    </bean>


    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
        <property name="connectionFactory" ref="connectionFactory"/>
        <property name="keySerializer">
            <bean
                    class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
        </property>
        <property name="valueSerializer">
            <bean
                    class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
        </property>
    </bean>





    <!-- 配置缓存 -->
    <bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager">
        <constructor-arg ref="redisTemplate"/>
        <!--<property name="defaultExpiration" value="60" /> 默认缓存失效时间 60秒-->
        <property name="expires">
            <map>
                <entry key="demopo_update" value="180"/> <!--对缓存名称为demopo_update 设置时间1000秒-->
            </map>
        </property>
    </bean>


</beans>



3.配置web.xml
<!--使用spring session 中的redis begin  注意如果web.xml中有其他过滤器,
一般情况下Spring 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>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<!--使用spring session 中的redis end-->





4.编程测试:

package boce.demo.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpSession;
import java.util.Calendar;

/**
* Created by gjp on 2017/7/20.
*/
@Controller
@RequestMapping("/session/")
public class SessionController {

    Logger logger = LoggerFactory.getLogger(SessionController.class);

    @RequestMapping(value = "setinfo")
    public ModelAndView sessionInfo(){
        ModelAndView mav = new ModelAndView("thymeleaf/setsession");
        ServletRequestAttributes servletRequestAttributes =(ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
        HttpSession session = servletRequestAttributes.getRequest().getSession();
        String value ="boce.com";
        String time1 = Calendar.getInstance().getTimeInMillis()+"";
        session.setAttribute("userId",value+time1);

        session.setAttribute("time1",time1);
        logger.info("session value="+value+time1);
        return mav;
    }


    @RequestMapping(value = "getinfo")
    public ModelAndView getInfo(){
        ModelAndView mav = new ModelAndView("thymeleaf/getsession");
        ServletRequestAttributes servletRequestAttributes =(ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
        HttpSession session = servletRequestAttributes.getRequest().getSession();
        String userId = (String) session.getAttribute("userId");
        String time = (String)session.getAttribute("time");
        mav.addObject("userId",userId);
        String sessionId = session.getId();
        long createTime = session.getCreationTime();
        long lastAccessedTime = session.getLastAccessedTime();
        int maxInactive = session.getMaxInactiveInterval();
        StringBuffer stringBuffer = new StringBuffer(64);
        stringBuffer.append("sessionId:").append(sessionId);
        stringBuffer.append(";createTime:").append(createTime);
        stringBuffer.append(";lastAccessdTime:").append(lastAccessedTime);
        stringBuffer.append("maxInactive:").append(maxInactive);

        logger.info(stringBuffer.toString());

        mav.addObject("time1",time);
        mav.addObject("good","good hello world!");
        logger.info("session value="+userId+";time1:"+time);
        return mav;
    }
}


测试结果:
.......
2017-07-21 11:23:22 INFO 11 [boce.common.mvcinterceptor.MVCRequestInterceptor] =preHandle end**********************
2017-07-21 11:23:22 INFO 33 [boce.demo.controller.SessionController] session value=boce.com1500607402364
............


2017-07-21 11:24:35 INFO 56 [boce.demo.controller.SessionController] sessionId:42b9e5d6-2a9f-4c0e-ae9e-2eb2ad1119cc;createTime:1500607429438;lastAccessdTime:1500607468057maxInactive:1800
2017-07-21 11:24:35 INFO 60 [boce.demo.controller.SessionController] session value=boce.com1500607429438;time1:null




  • 大小: 24.7 KB
分享到:
评论

相关推荐

    Spring-session2整合spring5+redis

    描述中的“spring5+hibernate5+Spring-session-data-redis2+Spring-data-redis2整合”进一步扩展了集成环境,引入了Hibernate 5作为ORM(对象关系映射)工具,Spring-session-data-redis和Spring-data-redis2则是...

    Spring-session共享所需jar合集.zip

    jedis-2.7.3.jar,spring-session-1.1.1.RELEASE.jar,spring-data-redis-1.6.2.RELEASE.jar等。。。

    spring-session实现session共享

    【Spring-Session 实现Session共享】 在现代分布式系统中,由于多服务器、微服务架构的广泛应用,Session共享成为一个重要的需求。传统的HTTP Session机制在单服务器环境下工作良好,但当涉及到跨域、多服务器间的...

    学习Spring-Session+Redis实现session共享

    ### Spring-Session与Redis结合实现Session共享 在分布式系统中,单点登录(Single Sign-On,简称SSO)成为一种常见的需求。为了实现这一目标,就需要解决不同服务器间Session共享的问题。Spring-Session正是为此而...

    nginx+spring-session+redis 实现session共享

    标题 "nginx+spring-session+redis 实现session共享" 涉及到的是在分布式系统中如何处理会话(session)共享的问题。在分布式环境中,由于用户请求可能被路由到不同的服务器节点,传统的session存储方式(如JVM内存...

    spring-session+spring的依赖包

    包含spring4.0相关jar包和commons-pool2-2.4.2.jar,jedis-2.7.3.jar,spring-data-redis-1.6.2.RELEASE.jar,spring-session-1.1.1.RELEASE.jar

    spring-session-1.3.1.RELEASE.zip

    首先,Spring Session 提供了跨多个服务器的会话共享能力,这意味着即使用户在不同的服务器之间切换,他们的会话状态也能保持一致。这在基于负载均衡的集群环境中至关重要,因为它消除了单点故障,并允许更灵活的...

    spring-session.zip

    在这些jar包中,"spring-session-data-mongodb-2.2.0.M3.jar"是专门为MongoDB设计的Spring Session模块,而"mongo-java-driver"系列jar包则是连接MongoDB的Java驱动程序,如"mongo-java-driver-2.11.3.jar"和"mongo-...

    tomcat8-redis-session共享

    2. **添加依赖**:在Tomcat的`lib`目录下,添加与Redis相关的Java库,例如`spring-session-data-redis`或`jedis`。压缩包中的jar文件可能包含了这些库。 3. **配置Tomcat**:在`$CATALINA_HOME/conf/context.xml`或...

    使用spring-session加redis来实现session共享.zip

    Spring Session是一个由Spring社区维护的项目,它允许我们通过多种后端存储(如Redis)来实现跨服务器的session共享。本项目“使用spring-session加redis来实现session共享”是一个基于Spring Boot框架的实现案例,...

    spring-session+spring+redis的依赖包

    3. **Spring Session-1**:这是Spring Session的主要版本,它为Spring MVC和Spring WebFlux提供会话管理支持。它定义了接口和实现,以便将会话数据存储在不同的后端,如In-Memory、 JDBC、MongoDB、Hazelcast或Redis...

    分布式环境下的session 共享-基于spring-session组件和Redis实现

    分布式环境下的session 共享-基于spring-session组件和Redis实现

    spring-session例子工程

    &lt;artifactId&gt;spring-session-core 版本号 &lt;!-- 根据你的后端存储选择对应的模块,这里以 Redis 为例 --&gt; &lt;groupId&gt;org.springframework.session &lt;artifactId&gt;spring-session-data-redis 版本号 ``` 2....

    spring redis session共享实现步骤

    以下将详细介绍如何通过Spring和Redis实现Session共享的步骤。 1. **理解Session共享需求**: 分布式环境下,用户可能会在多个服务器之间跳转,传统的基于内存的Session不能满足这种需求。Spring与Redis结合,可以...

    spring Session与Redis的jar包

    这些jar包可能包括`spring-session-data-redis`,`spring-boot-starter-data-redis`,以及Redis客户端库(如`lettuce`或`jedis`)。 2. **配置Redis连接**:接着,需要在Spring Boot的配置文件(如`application....

    spring-session

    Spring Session 提供了跨服务器的 session 共享功能,解决了这个问题。 2. **Spring Session 工作原理** Spring Session 使用基于 Redis、 Hazelcast 或者 JDBC 等后端存储来持久化 session 数据。这样,所有...

    tomcat7-redis-session共享 demo程序

    这个"tomcat7-redis-session-Demo"压缩包文件包含了完成上述配置和实现的源代码,用户可以直接下载运行,体验和学习如何在实际项目中集成Tomcat和Redis进行session共享。通过分析和理解这个示例,开发者可以掌握在...

    spring session 中源码更改

    在session共享中遇到的坑。自己通过更改源码实现自定义功能

    SpringSession+redis共享jar包

    SpringSession通过将Session数据持久化到外部存储,如Redis,实现了跨服务器的Session共享。 Redis 是一个高性能的键值数据库,常被用作缓存和消息代理。在SpringSession中,Redis被用作Session的存储后端,因为其...

Global site tag (gtag.js) - Google Analytics