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 将PPT幻灯片转为HTML文件的实现思路
Jun 11 Java/Android
SpringAop日志找不到方法的处理
Jun 21 Java/Android
Feign调用传输文件异常的解决
Jun 24 Java/Android
Maven学习----Maven安装与环境变量配置教程
Jun 29 Java/Android
SpringBoot集成Druid连接池连接MySQL8.0.11
Jul 02 Java/Android
java泛型通配符详解
Jul 25 Java/Android
IDEA 2022 Translation 未知错误 翻译文档失败
Apr 24 Java/Android
Java存储没有重复元素的数组
Apr 29 Java/Android
Java实现注册登录跳转
Jun 16 Java/Android
java实现自定义时钟并实现走时功能
Jun 21 Java/Android
利用Java连接Hadoop进行编程
Jun 28 Java/Android
springboot+rabbitmq实现智能家居实例详解
Jul 23 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新建文件自动编号的思路与实现
2011/06/27 PHP
微信access_token的获取开发示例
2015/04/16 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
2020/01/25 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
js的一些常用方法小结
2011/06/29 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
JS实现队列与堆栈的方法
2016/04/21 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
angular4自定义组件详解
2017/09/28 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
React实现全选功能
2020/08/25 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
使用python分析git log日志示例
2014/02/27 Python
python提取字典key列表的方法
2015/07/11 Python
Python实现定时任务
2017/02/08 Python
django加载本地html的方法
2018/05/27 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
使用python 写一个静态服务(实战)
2019/06/28 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
css背景图片的背景裁切、背景透明度、背景变换等效果运用
2012/12/24 HTML / CSS
css3实现背景模糊的三种方式(小结)
2020/05/15 HTML / CSS
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
软件工程师岗位职责
2013/11/16 职场文书
大学感恩节活动策划方案
2014/10/11 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技