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利用redis、Redisson处理并发问题的操作
Jun 18 Java/Android
Mybatis-plus在项目中的简单应用
Jul 01 Java/Android
新手初学Java网络编程
Jul 07 Java/Android
Sleuth+logback 设置traceid 及自定义信息方式
Jul 26 Java/Android
Java中CyclicBarrier和CountDownLatch的用法与区别
Aug 23 Java/Android
Java练习之潜艇小游戏的实现
Mar 16 Java/Android
Android自定义scrollview实现回弹效果
Apr 01 Java/Android
Spring Data JPA框架Repository自定义实现
Apr 28 Java/Android
Java 定时任务技术趋势简介
May 04 Java/Android
Java 多线程协作作业之信号同步
May 11 Java/Android
java实现面板之间切换功能
Jun 10 Java/Android
springboot读取resources下文件的方式详解
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 和 HTML
2006/10/09 PHP
php Memcache 中实现消息队列
2009/11/24 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
2020/04/23 PHP
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
2015/10/20 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
Python yield使用方法示例
2013/12/04 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
python3使用urllib模块制作网络爬虫
2016/04/08 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
python WindowsError的错误代码详解
2017/07/23 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python矩阵转换为一维数组的实例
2018/06/05 Python
python实现时间o(1)的最小栈的实例代码
2018/07/23 Python
python实现趣味图片字符化
2019/04/30 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Keras 数据增强ImageDataGenerator多输入多输出实例
2020/07/03 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
大学生大二自我鉴定
2013/10/28 职场文书
自我推荐书
2013/12/04 职场文书
证婚人搞笑证婚词
2014/01/10 职场文书
中学自我评价
2014/01/31 职场文书
活动宣传策划方案
2014/05/23 职场文书
高中同学会活动方案
2014/08/14 职场文书
庆祝新中国成立65周年“向国旗敬礼”网上签名寄语
2014/09/27 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
暑期工社会实践报告
2015/07/13 职场文书
go goth封装第三方认证库示例详解
2022/08/14 Golang