解决Springboot2.X,无法用HttpSession报错org.apache.tomcat.websocket.server.WsSessionListener.sessionCreated
一、今天在学习 springboot2.x 拦截器的时候,发现直接使用 HttpSession 和 request.getSession().getAttribute() 会直接报错;
我的springboot2.x 版本:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.4</version><relativePath/> <!-- lookup parent from repository --> </parent>
1、异常信息如下:
java.lang.AbstractMethodError: org.apache.tomcat.websocket.server.WsSessionListener.sessionCreated(Ljavax/servlet/http/HttpSessionEvent;)V
2、看异常大概是 session 无法创建;解决方法就是添加 redis 依赖和 spring session依赖,直接上代码:
2-1、pom.xml 添加 redis 依赖和 spring session依赖
<!--添加 Redis 整合 springboot 依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!--SpringSession依赖--> <dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-core</artifactId> </dependency> <!--SpringSessionRedis依赖--> <dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId> </dependency>
2-2、application.properties 配置 redis 连接 和 spring session缓存类型
#使用Redis缓存session数据 spring.session.store-type=REDIS #Redis服务器地址 spring.redis.host=127.0.0.1 #Redis服务器端口号 spring.redis.port=6379
2-3、Application.java 开启扫描 Redis 和 Session
@SpringBootApplication // 以秒为单位 @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 800) public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);} }
2-4、过滤器和控制层中使用HttpSeesion
- 控制层:@RequestMapping("/login")public Object login(HttpSession session){System.out.println("执行 login ");User user = new User();user.setId(12211);user.setName("小明");session.setAttribute("user",user);System.out.println("执行 login 完毕,保存 session 值");return "login success";}- 拦截器,preHandle// 拦截器入口,编写拦截业务逻辑@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 1 从session中获取用户的信息HttpSession session = request.getSession(true);User user = (User) session.getAttribute("user");// 2 判断用户是否存在if (user == null) {// 未登录response.sendRedirect(request.getContextPath() + "/user/error");return false;}System.out.println("执行 preHandle 完毕" + user);return true;}
3、要是配置完上面代码,项目还是无法启动,那要看看实体类是否实现序列化,本地redis服务是否启动;
4、要是有什么问题,欢迎大家评论。
解决Springboot2.X,无法用HttpSession报错org.apache.tomcat.websocket.server.WsSessionListener.sessionCreated相关推荐
- hive报错(org.apache.hadoop.hdfs.server.namenode.SafeModeException): Cannot create directory/tmp/hive/.
报错场景: 使用shell脚本进行对hive的数据查询导入导致出错,先是hive执行时间较长,后面hive报错. 问题描述: 使用jps查询进程,发现有三个hive进程,三个RunJar,RunJar ...
- 按照黑马教程学习javaWeb出现Property ‘dataSource‘ is requir报错HTTP Status 500 – Internal Server Error——解决方案
在做网页登录时候,servlet无法连接到数据库,报错提示 Property 'dataSource' is required 具体错误如下: HTTP Status 500 – Internal S ...
- 解决idea导入项目后依赖报错问题
解决idea导入项目后依赖报错问题 参考文章: (1)解决idea导入项目后依赖报错问题 (2)https://www.cnblogs.com/dayandday/p/10607195.html (3 ...
- 解决Sublime包管理package control 报错 There are no packages available for installation
解决Sublime包管理package control 报错 There are no packages available for installation 真的是哔了狗了,要不是我机智的重新安装了 ...
- python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错“ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连接”的问题
python使用phantomJS循环for爬取多个页面时,解决内存持续变大而报错"ConnectionResetError: [WinError 10054]远程主机强迫关闭了一个现有的连 ...
- 解决Pycharm添加虚拟解释器的报错问题
解决Pycharm添加虚拟解释器的报错问题 参考文章: (1)解决Pycharm添加虚拟解释器的报错问题 (2)https://www.cnblogs.com/pyyu/p/9035436.html ...
- 解决VS2017中使用scanf函数报错的问题
解决VS2017中使用scanf函数报错的问题 参考文章: (1)解决VS2017中使用scanf函数报错的问题 (2)https://www.cnblogs.com/tanghaiyong/p/11 ...
- 一种解决Android studio 3.0 Build报错的方法
一种解决Android studio 3.0 Build报错的方法 参考文章: (1)一种解决Android studio 3.0 Build报错的方法 (2)https://www.cnblogs. ...
- [PVE]解决 ProXmoX VE升级 apt-get update 报错的问题
[PVE]解决 ProXmoX VE升级 apt-get update 报错的问题 参考文章: (1)[PVE]解决 ProXmoX VE升级 apt-get update 报错的问题 (2)http ...
最新文章
- linux根-文件系统-目录管理-文件管理-用户及权限详解-用户组-用户管理-权限管理...
- 解决查询时报的cannot be cast to com.credithc.enjoy.manager.OrderResp错误
- Maven pom 文件解释
- windows文件与Linux文件互转
- php sql语句过滤,php如何做sql过滤
- 实现 npm script 跨平台兼容
- Android学习笔记---20_采用ContentProvider对外共享数据, UriMatcher类使用介绍 ,ContentUris类使用介绍,使用ContentResolver操作Conte
- linux运维、架构之路-Kubernetes本地镜像仓库+dashboard部署
- python异步io协程读文件_Python协程中的并行异步IO
- abb变频器dp适配器说明书_ABB变频器ACS510_CN使用说明书.pdf
- Qt之SQLite数据库可视化工具
- MATLAB到底有多厉害?
- 取文件操作fopen(file open)
- linux里面rpm是什么文件,linux中deb格式和rpm格式分别是什么?
- STM32学习笔记——USB鼠标
- day21组合III电话号码的字母组合
- 【行业科普】一篇文读懂四大、咨询、投行、PE
- OpenVINO-yolov5推理代码
- 正则表达式(RegExp)
- JS标签选择器以及节点操作
热门文章
- 大学C语言字符串题目,[转载]大学C语言考试题精选
- 比尔盖茨与乔布斯,你们觉得,二人谁更伟大
- html wap广告代码,手机wap底部悬浮JS广告代码
- iOS小技能:设置tableView的点击事件优先级低于cell的选中事件(场景:比如筛选视图,监听蒙版的点击事件就隐藏筛选视图)
- 核心微生物分析_基因测序找出肠道核心微生物群
- Python学习教程:针对任意多的分隔符拆分字符串
- 使电脑显示文件后缀名的俩种方法
- 1+xweb初级试题及笔记
- Mybatis-04
- java无法安装路径无效_Java环境 jdk无法切换版本,修改path路径也无效