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 15 Java/Android
Springboot集成阿里云OSS上传文件系统教程
Jun 28 Java/Android
看完这篇文章获得一些java if优化技巧
Jul 15 Java/Android
深入解读Java三大集合之map list set的用法
Nov 11 Java/Android
alibaba seata服务端具体实现
Feb 24 Java/Android
Java并发编程之原子性-Atomic的使用
Mar 16 Java/Android
Java 异步任务计算FutureTask
Apr 28 Java/Android
Spring 使用注解开发
May 20 Java/Android
多线程Spring通过@Scheduled实现定时任务
May 25 Java/Android
springboot集成redis存对象乱码的问题及解决
Jun 16 Java/Android
SpringBoot Http远程调用的方法
Aug 14 Java/Android
Springboot集成kafka高级应用实战分享
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
比较全面的PHP数组的使用方法小结
2010/09/23 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
静态页面的值传递(三部曲)
2006/09/25 Javascript
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
jquery animate 动画效果使用说明
2009/11/04 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
JS获取鼠标相对位置的方法
2016/09/20 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
vue下拉列表功能实例代码
2018/04/08 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
原生JavaScript实现购物车
2021/01/10 Javascript
Pandas:Series和DataFrame删除指定轴上数据的方法
2018/11/10 Python
Python3爬虫学习入门教程
2018/12/11 Python
Python中最大递归深度值的探讨
2019/03/05 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
美国性感女装网站:bebe
2017/03/04 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
关于教师节的演讲稿
2014/09/04 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
上班旷工检讨书
2015/08/15 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
redis限流的实际应用
2021/04/24 Redis
jquery插件实现悬浮的菜单
2021/04/24 jQuery
go语言-在mac下brew升级golang
2021/04/25 Golang
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python