SpringBoot中HttpSessionListener的简单使用方式


Posted in Java/Android onMarch 17, 2022

HttpSessionListener的使用方式

session监听实现类

import org.springframework.stereotype.Component;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
@Component
public class MySessionListener implements HttpSessionListener {
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        //设置session持续时间,单位为秒
        se.getSession().setMaxInactiveInterval(10);
        System.out.println("-----------Session已创建------------------");
    }
    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        String name = (String)se.getSession().getAttribute("name");
        System.out.println("name= "+ name);
        System.out.println("-----------Session已销毁------------------");
    }
}

controller调用

    @RequestMapping("/sessionTest")
    @ResponseBody
    public void sessionTest(HttpServletRequest request){
        request.getSession().setAttribute("name","zwq");
        //销毁session
        request.getSession().invalidate();
    }

注意点:

1、request.getSession(),获取即创建session,会触发session监听实现类中的sessionCreated方法;

2、session过了有效时间或主动使用invalidate方法销毁,会触发session监听实现类中的sessionDestroyed方法;

3、使用监听器一定要确保可以被springboot扫描到并打包成bean,一般来说在监听器实现类前加 @Component注解并保证该类在程序扫描范围内即可。

注册HttpSessionListener失效原因

问题描述

监听器:

@WebListener
public class MyHttpSessionListener implements HttpSessionListener {
    /**
     * session创建
     */
    @Override
    public void sessionCreated(HttpSessionEvent e) {
        HttpSession session=e.getSession();
        System.out.println("session创建===ID===="+session.getId());
    }
    /**
     * session销毁
     */
    @Override
    public void sessionDestroyed(HttpSessionEvent e) {
        HttpSession session=e.getSession();
        System.out.println("销毁的sessionID===="+session.getId());
    }
}

启动类上已经加了注解@ServletComponentScan

访问接口:

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String handle01(){
        return "nihao你好";
    }
}

这样写之后,发现第一次访问时,控制台并不会打印:

System.out.println("session创建===ID===="+session.getId());

原因

在访问接口时,形参要带上HttpSession session.

如下:

@RestController
public class HelloController {
    @RequestMapping("/hello")
    public String handle01(HttpSession session){
        return "nihao你好";
    }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
Java方法重载和方法重写的区别到底在哪?
Jun 11 Java/Android
启动Tomcat时出现大量乱码的解决方法
Jun 21 Java/Android
Spring整合Mybatis的全过程
Jun 28 Java/Android
简单总结SpringMVC拦截器的使用方法
Jun 28 Java/Android
Java并发编程必备之Future机制
Jun 30 Java/Android
Java使用jmeter进行压力测试
Jul 09 Java/Android
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
Dec 06 Java/Android
JavaCV实现照片马赛克效果
Jan 22 Java/Android
SpringBoot2零基础到精通之数据与页面响应
Mar 22 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
Spring Boot 实现 WebSocket
Apr 30 Java/Android
使用Postman测试需要授权的接口问题
Jun 21 Java/Android
SpringBoot+Redis实现布隆过滤器的示例代码
Mar 17 #Java/Android
Java9新特性对HTTP2协议支持与非阻塞HTTP API
Java练习之潜艇小游戏的实现
Mar 16 #Java/Android
你知道Java Spring的两种事务吗
Java并发编程之原子性-Atomic的使用
Java9新特性之Module模块化编程示例演绎
Mar 16 #Java/Android
JVM的类加载器和双亲委派模式你了解吗
You might like
用PHP制作的意见反馈表源码
2007/03/11 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
PHP7匿名类的用法示例
2019/04/05 PHP
Yii框架常见缓存应用实例小结
2019/09/09 PHP
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
jquery获取元素索引值index()示例
2014/02/13 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
2019/04/10 jQuery
ajaxfileupload.js实现上传文件功能
2019/04/19 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
Openlayers3实现车辆轨迹回放功能
2020/09/29 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
[52:52]完美世界DOTA2联赛PWL S3 LBZS vs access 第一场 12.10
2020/12/13 DOTA
wxPython之解决闪烁的问题
2018/01/15 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
搞定这套Python爬虫面试题(面试会so easy)
2019/04/03 Python
python实现批量视频分帧、保存视频帧
2019/05/31 Python
python实现简易淘宝购物
2019/11/22 Python
python 安装impala包步骤
2020/03/28 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
python实现网页录音效果
2020/10/26 Python
实习求职信
2013/12/01 职场文书
科长竞聘演讲稿
2014/05/16 职场文书
好听的队名和口号
2014/06/09 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
重温入党誓词主持词
2015/06/29 职场文书
python如何获取网络数据
2021/04/11 Python
Pytest之测试命名规则的使用
2021/04/16 Python
MySQL update set 和 and的区别
2021/05/08 MySQL
正则表达式拆分url实例代码
2022/02/24 Java/Android