使用spring-session把http session放到redis里面

来源:互联网 发布:数据库用户权限 表格 编辑:程序博客网 时间:2024/05/04 07:03

一:

新建maven的webapp项目,加入spring session的相关依赖

pom.xml 如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lala</groupId><artifactId>leshop</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>taobao Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId><version>1.0.1.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>4.1.6.RELEASE</version></dependency><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session</artifactId><version>1.0.1.RELEASE</version></dependency><dependency><groupId>com.orange.redis-embedded</groupId><artifactId>embedded-redis</artifactId><version>0.6</version></dependency></dependencies><build><finalName>leshop</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.3</version><configuration><source>1.8</source><target>1.8</target><verbose>true</verbose></configuration></plugin></plugins></build></project>


二:

配置redis环境

1:安装redis,启动

2:

package com.lala.config;import org.springframework.context.annotation.Bean;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;@EnableRedisHttpSessionpublic class SessionConfig {@Beanpublic JedisConnectionFactory connectionFactory(){JedisConnectionFactory connection = new JedisConnectionFactory();connection.setPort(6379);connection.setHostName("192.168.1.106");return connection;}}

package com.lala.config;import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer;public class SessionInitializer extends AbstractHttpSessionApplicationInitializer {public SessionInitializer() {super(SessionConfig.class);}}


三:

最后,在servlet或者action里面

Integer uid = Integer.valueOf(req.getParameter("uid"));req.getSession().setAttribute("user", new User(uid, "张三", "这里是redis的"));

执行之后,发现session已经保存在redis里面了。


这种做法,不需要依赖具体的容器。放到任何容器里面都可以使用。

不像网上的做法,使用其他的jar,还需要配置tomcat。这种做法,不支持其他的web server


7 0