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 相关文章推荐
手把手教你用SpringBoot将文件打包成zip存放或导出
Jun 11 Java/Android
SpringBoot 拦截器妙用你真的了解吗
Jul 01 Java/Android
SpringBoot+VUE实现数据表格的实战
Aug 02 Java/Android
java objectUtils 使用可能会出现的问题
Feb 28 Java/Android
Java字符串逆序方法详情
Mar 21 Java/Android
Flutter集成高德地图并添加自定义Maker的实践
Apr 07 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
Spring Boot项目如何优雅实现Excel导入与导出功能
Jun 10 Java/Android
Android基础入门之dataBinding的简单使用教程
Jun 21 Java/Android
Java Spring Boot请求方式与请求映射过程分析
Jun 25 Java/Android
Java多线程并发FutureTask使用详解
Jun 28 Java/Android
OpenFeign实现远程调用
Aug 14 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
Memcached常用命令以及使用说明详解
2013/06/27 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
2014/09/22 PHP
PHP使用xpath解析XML的方法详解
2017/05/20 PHP
JavaScript的21条基本知识点
2014/03/04 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
2017/03/21 jQuery
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
浅谈bootstrap layer.open中end的使用方法
2019/09/12 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
原生js实现俄罗斯方块
2020/10/20 Javascript
在Python中使用HTML模版的教程
2015/04/29 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
python 找出list中最大或者最小几个数的索引方法
2018/10/30 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
Python numpy多维数组实现原理详解
2020/03/10 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
pycharm Tab键设置成4个空格的操作
2021/02/26 Python
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
求职简历的自我评价怎样写好
2013/10/07 职场文书
翻译专业应届生求职信
2013/11/23 职场文书
2014年社区工会工作总结
2014/12/18 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
《青山不老》教学反思
2016/02/22 职场文书
《中彩那天》教学反思
2016/02/24 职场文书
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android