学习Spring-Session+Redis实现session共享
2023-09-14 09:03:39 时间
1、添加依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.8.1</version>
</dependency>
2、配置
spring-mvc.xml:
<bean id="redisHttpSessionConfiguration"
class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">
<property name="maxInactiveIntervalInSeconds" value="600"/>
</bean>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="100" />
<property name="maxIdle" value="10" />
</bean>
<bean id="jedisConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" destroy-method="destroy">
<property name="hostName" value="${redis_hostname}"/>
<property name="port" value="${redis_port}"/>
<property name="password" value="${redis_pwd}" />
<property name="timeout" value="3000"/>
<property name="usePool" value="true"/>
<property name="poolConfig" ref="jedisPoolConfig"/>
</bean>
web.xml添加拦截器:
<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>
3、使用spring-session
只要使用标准的servlet api调用session,在底层就会通过Spring Session得到的,并且会存储到Redis或其他你所选择的数据源中。
这里是我写的一个demo:
/**
* @author fengzp
* @date 17/2/23下午3:19
* @email fengzp@gzyitop.com
* @company 广州易站通计算机科技有限公司
*/
@Controller
@RequestMapping(value = "index")
public class IndexController {
private final Gson gson = new GsonBuilder().setDateFormat("yyyyMMddHHmmss").create();
@RequestMapping(value = "login")
public String login(HttpServletRequest request, String username){
request.getSession().setAttribute("user", gson.toJson(new User(username,"123456")));
return "login";
}
@RequestMapping(value = "index")
public String index(HttpServletRequest request, Model model){
User user = gson.fromJson(request.getSession().getAttribute("user").toString(), User.class);
model.addAttribute("user", user);
return "index";
}
}
index.jsp:
第一个tomcat
<html>
<body>
<h2>Hello World!</h2>
<p>${user.username}</p>
</body>
</html>
第二个tomcat
<html>
<body>
<h2>Hello World! i am the second!</h2>
<p>${user.username}</p>
</body>
</html>
测试
这里利用上一篇nginx负载配置的两个tomcat来测试。
首先访问 http://192.168.99.100/feng/index/login.htm?username=nginx
来触发生成session。
查看redis,发现session已经保存到redis。
相关文章
- 学习Redis:熟悉默认数据库(redis默认数据库)
- 最强菜鸟:使用Redis极速学习(菜鸟教程redis)
- Mac系统下安装Redis教程(redis安装mac)
- 学习Redis掌握有效的知识学习策略(怎样学会redis)
- 深入学习使用Redis实现缓存查找(怎么查找redis缓存)
- 如何利用Redis来提升学习效率(怎么学习redis)
- 腾讯云Redis潜藏的缺陷让人担忧(腾讯云redis的坑)
- 调试无果程序存入Redis却无法成功(程序存redis存不进去)
- 百度上学习Redis一一步步掌握数据库分布式技术(百度redis教程)
- 深入学习Redis探究Redis的路径(查看redis路劲)
- 查询Redis根据特定规则实现(按指定条件查询redis)
- 亨斯迈带你深度学习Redis(亨斯迈redis)
- 实现一个系统多个Redis的共享存储(一个系统几个redis)
- 快速学习使用 Redis(刚使用redis怎么使用)
- 学习Redis构建稳固的基础(学习redis的基础)
- 实现高效快速用Redis进行高性能缓存优化(redis高性能缓存服务)
- 使用Redis系统保护公平性防止刷票行为(redis防止刷票)
- 消息Redis订阅消息失败深刻检视(redis订阅不到)