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

一:

新建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;

@EnableRedisHttpSession
public class SessionConfig
{
	@Bean
	public 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

时间: 2024-11-10 11:32:41

使用spring-session把http session放到redis里面的相关文章

将php的session存放到redis里面

通常我们将session存储到memcached,但是有时候老大让你将session存储到Redis怎么办,因此有必要了解下如何将session存到redis. step1.服务器上需要安装redis扩展(以php7为例) # 以安装php7为例,简单起见直接安装了全部的包 yum install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbst

【转载】Session分布式共享 = Session + Redis + Nginx

转载blogs文章,以作收藏学习 原文作者:傲翼飞寒 原文地址:http://www.cnblogs.com/newP/p/6518918.html 一.Session 1.Session 介绍 我相信,搞Web开发的对Session一定再熟悉不过了,所以我就简单的介绍一下. Session:在计算机中,尤其是在网络应用中,称为“会话控制”. 每个用户(浏览器)首次与web服务器建立连接时,就会产生一个Session,同时服务器会分配一个SessionId给用户的浏览器.我们可以用Fiddler

Spring Session解决分布式Session问题的实现原理

使用Spring Session和Redis解决分布式Session跨域共享问题 上一篇介绍了如何使用spring Session和Redis解决分布式Session跨域共享问题,介绍了一个简单的案例,下边就学习一下Spring Session的实现原理. 注:以下步骤是基于XML的方式实现 Spring Session的代码讲解! 先从web.xml文件说起 我们知道Tomcat再启动的时候首先会去加载web.xml 文件,Tomcat启动的时候web.xml被加载的顺序:context-pa

如何使用Spring Session实现分布式Session管理

Spring Session作为Spring社区官方推荐的一个比较简单快速的Java Web分布式session解决方案,帮我们搞定了长期以来比较蛋疼的session分布式的问题. Spring Session解决的基本思路很简单,即将用户的session信息全部存放到一个redis数据库中,所有的session都从这个数据库拿.由于redis是一个内存数据库,数据信息读写是非常快速的.如此一来,多个Tomcat,共用一个redis数据库,即实现了session的共享问题. 鉴于目前很少看到Sp

利用spring session解决共享Session问题

1.共享Session问题 HttpSession是通过Servlet容器创建和管理的,像Tomcat/Jetty都是保存在内存中的.而如果我们把web服务器搭建成分布式的集群,然后利用LVS或Nginx做负载均衡,那么来自同一用户的Http请求将有可能被分发到两个不同的web站点中去.那么问题就来了,如何保证不同的web站点能够共享同一份session数据呢? 最简单的想法就是把session数据保存到内存以外的一个统一的地方,例如Memcached/Redis等数据库中.那么问题又来了,如何

session放入缓存(redis)、DB

为什么要把SESSION保存在缓存 就php来说,语言本身支持的session是以文件的方式保存到磁盘文件中,保存在指定的文件夹中,保存的路径可以在配置文件中设置或者在程序中使用函数session_save_path()进行设置,但是这么做有弊端, 第一就是保存到文件系统中,效率低,只要有用到session就会从好多个文件中查找指定的sessionid,效率很低. 第二就是当用到多台服务器的时候可能会出现,session丢失问题(其实是保存在了其他服务器上). 当然了,保存在缓存中可以解决上面的

session存储的替代方法redis

php默认使用文件存储session,如果并发量大,效率非常低.而redis对高并发的支持非常好,所以,可以使用redis替代文件存储session. 这里,介绍下php的session_set_save_handler 函数的作用和使用方法.该函数定义用户级session保存函数(如打开.关闭.写入等).原型如下: bool session_set_save_hanler(callback open,callback close,callback read,callback write,cal

session保存到缓存(redis)、DB

为什么要把SESSION保存在缓存 就php来说,语言本身支持的session是以文件的方式保存到磁盘文件中,保存在指定的文件夹中,保存的路径可以在配置文件中设置或者在程序中使用函数session_save_path()进行设置,但是这么做有弊端, 第一就是保存到文件系统中,效率低,只要有用到session就会从好多个文件中查找指定的sessionid,效率很低. 第二就是当用到多台服务器的时候可能会出现,session丢失问题(其实是保存在了其他服务器上). 当然了,保存在缓存中可以解决上面的

spring 组件Scope(request,session)示例

上回说到, spring组件的注解Scope大约有singleton.prototype.request.session.global session 这么几种常用的场景.这里需要特别说明一下,根据源代码显示 Scope注解分为ConfigurableBeanFactory和WebApplicationContext两个大类,ConfigurableBeanFactory包含(singleton.prototype)两种Scope,WebApplicationContext下面有(ROOT_WE

Spring Security教程之session管理(十一)

1.1     检测session超时 1.2     concurrency-control 1.3     session 固定攻击保护 Spring Security通过http元素下的子元素session-management提供了对Http Session管理的支持. 1.1     检测session超时 Spring Security可以在用户使用已经超时的sessionId进行请求时将用户引导到指定的页面.这个可以通过如下配置来实现. <security:http> ... &