展开被 SpringBoot 玩的日子 《 四 》 Session 会话共享
共享Session-spring-session-data-redis
分布式系统中,sessiong共享有很多的解决方案,其中托管到缓存中应该是最常用的方案之一。
Spring Session官方说明
Spring Session provides an API and implementations for managing a user’s session information.
如何使用
1、引入依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
2、Session配置:
/**
* 共享 Session
* maxInactiveIntervalInSeconds = (秒)
*/
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 60 * 30)
public class SessionConfig {
}
maxInactiveIntervalInSeconds: 设置Session失效时间,使用Redis Session之后,原Boot的server.session.timeout属性不再生效
好了,这样就配置好了,我们来测试一下
3、测试
/**
* 第一次进入时,已保存(有效时长是 session 设置的maxInactiveIntervalInSeconds 时间)
* @param request
* @return
*/
@RequestMapping(value = "/first", method = RequestMethod.GET)
public Map<String, Object> firstResp (HttpServletRequest request){
Map<String, Object> map = new HashMap<>();
request.getSession().setAttribute("request Url", request.getRequestURL());
map.put("request Url", request.getRequestURL());
map.put("sessionId", request.getSession().getId());
return map;
} /**
* 获取sessionId
* @param request
* @return
*/
@RequestMapping(value = "/sessions", method = RequestMethod.GET)
public Object sessions (HttpServletRequest request){
Map<String, Object> map = new HashMap<>();
map.put("sessionId", request.getSession().getId());
map.put("message", request.getSession().getAttribute("map"));
return map;
}
这里,可能就会有人问了,怎么测验两个项目的sessionId是都相同:咋们先打一个 jar 去测试,端口是8080的,然后再把本地的项目跑起来,端口改成9090的,两个项目都跑起来之后,随便哪个项目(端口)先访问 /first ,这个接口,然后两个项目再访问一遍 /sessions 这个接口,看看sessionId 是不是相同的,不就成了?如下:

共享 session 就这样,是不是很简单?~~~~~~~~~~~~~~~~~~(麻蛋,我纠结了一个多小时没理解,我是菜鸡~~~~~~~~~~~)
展开被 SpringBoot 玩的日子 《 四 》 Session 会话共享的更多相关文章
- 展开被 SpringBoot 玩的日子 《 五 》 spring data jpa 的使用
在上篇文章< 展开被 SpringBoot 玩的日子 < 二 >WEB >中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring da ...
- 展开被 SpringBoot 玩的日子 《 一 》入门篇
SpringBoot 已经是久闻大名了,因各种原因导致迟迟未展开学习SpringBoot,今天,我将会逐渐展开被SpringBoot 玩的历程,有兴趣的,可以跟我一起来~~~~~~~ 什么是sprin ...
- 展开被 SpringBoot 玩的日子 《 二 》 WEB 开发
上篇文章介绍了Spring boot初级教程 :< spring boot(一):入门篇 >,方便大家快速入门.了解实践Spring boot特性:本篇文章接着上篇内容继续为大家介绍spr ...
- 展开被 SpringBoot 玩的日子 《 六 》 整合 Mybatis
上次整合了JPA ,但是很多人觉得JPA 并不是那么好用,这都是习惯问题,我本人也比较习惯Mybatis ,所以,今天就整合一下Mybatis,到网上找了一下关于spring boot和mybatis ...
- 展开被 SpringBoot 玩的日子 《 三 》 整合Redis
SpringBoot对常用的数据库支持外,对NoSQL 数据库也进行了封装自动化. redis介绍 Redis是目前业界使用最广泛的内存数据存储.相比memcached,Redis支持更丰富的数据结构 ...
- Tomcat通过自带的Cluster方式实现Session会话共享环境操作记录
一般来说,在多个tomcat集群业务中,session会话共享是必须的需求,不然前端nginx转发过来的请求不知道之前请求在哪台tomcat节点上,从而就找不到session以至于最终导致请求失败.要 ...
- memcached session会话共享
1 安装依赖包yum install libevent livevent-devel nc -y 2 yum 安装memcachedyum install -y memcached 3 启动memec ...
- redis做session会话共享
项目中需要两个不同的web项目互相访问,用户对象为同一个User.决定用Redis来存储用户对象信息...ok,环境搭建开始: 1.pom.xml引入Redis依赖的jar: <!-- jedi ...
- Session会话与Cookie简单说明
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端 ...
随机推荐
- #0 scrapy爬虫学习中遇到的坑记录
python 基础学习中对于scrapy的使用遇到了一些问题. 首先进行的是对Amazon.cn的检索结果页进行爬取,很顺利,无碍. 下一个目标是对baidu的搜索结果进行爬取 1,反爬虫 1.1 我 ...
- centos 7.2下搭建vsftp 虚拟用户
虚拟用户搭建vsftp 要求一: 只允许上传 下载 不能删除 不能更换名称 yum install pam* yum install db4* -y yum install vsftpd chkcon ...
- Codeforces Round #484 (Div. 2)Cut 'em all!(dfs)
题目链接 题意:给你一棵树,让你尽可能删除多的边使得剩余所有的联通组件都是偶数大小. 思路:考虑dfs,从1出发,若当前节点的子节点和自己的数目是偶数,说明当前节点和父亲节点的边是可以删除的,答案+1 ...
- IIS7二级域名添加同一证书
IIS7二级域名添加同一证书, 先绑定第一个域名到443 ,之后的用以下命令行绑定 cd C:\Windows\System32\Inetsrv\appcmd set site /site.name: ...
- android的nfc卡模拟开发
这是andorid官方文档对于卡模拟方式的描述: https://developer.android.google.cn/guide/topics/connectivity/nfc/hce 有两种方式 ...
- P1052 过河
动态规划的好题 状态转移很简单,dp[i] = dp[i-k] + st[i] ,k是移动距离,st[i]判断i位置是否有石头,但是距离太大,需要压缩路径. K∈[1,10],lcm[1,10] = ...
- gojs常用API-画布定义
持续更新中 基础画布定义API画布初始位置 initialContentAlignment: go.Spot.Center,画布位置,定义后就不能拖动画布了,画布位置交由gojs管理 contentA ...
- git查日志命令
git常用命令 1.创建仓库 a.当前目录创建仓库,即把当前目录的文件开始用git管理,该命令会在当前目录下创建一个.git目录 git init b.指定目录创建仓库 git init 目录名 2. ...
- 一个简单的go语言爬虫
package main import ( "bufio" "fmt" "golang.org/x/net/html/charset" &q ...
- go语言中使用defer、panic、recover处理异常
go语言中的异常处理,没有try...catch等,而是使用defer.panic.recover来处理异常. 1.首先,panic 是用来表示非常严重的不可恢复的错误的.在Go语言中这是一个内置函数 ...