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 相关文章推荐
Feign调用全局异常处理解决方案
Jun 24 Java/Android
Java Dubbo框架知识点梳理
Jun 26 Java/Android
springboot集成flyway自动创表的详细配置
Jun 26 Java/Android
Spring整合Mybatis的全过程
Jun 28 Java/Android
SpringBoot整合JWT的入门指南
Jun 29 Java/Android
java基础——多线程
Jul 03 Java/Android
Java8中接口的新特性使用指南
Nov 01 Java/Android
MybatisPlus EntityWrapper如何自定义SQL
Mar 22 Java/Android
Spring Boot 底层原理基础深度解析
Apr 03 Java/Android
Java 获取Word中所有的插入和删除修订的方法
Apr 06 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
Spring Data JPA框架的核心概念和Repository接口
Apr 28 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通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
php精度计算的问题解析
2019/06/21 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
jQuery ui1.7 dialog只能弹出一次问题
2009/08/27 Javascript
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
node.js中的fs.readdirSync方法使用说明
2014/12/17 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
JavaScript中的ajax功能的概念和示例详解
2016/10/17 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
js抽奖转盘实现方法分析
2020/05/16 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
使用Python编写Linux系统守护进程实例
2015/02/03 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
pymongo中group by的操作方法教程
2019/03/22 Python
python-序列解包(对可迭代元素的快速取值方法)
2019/08/24 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
个人教师自我评价范文
2013/12/02 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
乡镇干部先进事迹材料
2014/02/03 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
2015年工会工作总结
2015/03/30 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
执行力心得体会范文
2016/01/11 职场文书
员工工作失职检讨书范文!
2019/07/03 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
Python中json.dumps()函数的使用解析
2021/05/17 Python
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
Netty结合Protobuf进行编解码的方法
2021/06/26 Java/Android
win7配置本地ftp服务器的图文教程
2022/08/05 Servers