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 Socket实现多人聊天系统
Jul 15 Java/Android
OpenCV实现普通阈值
Nov 17 Java/Android
springboot+zookeeper实现分布式锁
Mar 21 Java/Android
Java 超详细讲解ThreadLocal类的使用
Apr 07 Java/Android
Android自定义双向滑动控件
Apr 19 Java/Android
Java工作中实用的代码优化技巧分享
Apr 21 Java/Android
Java 写一个简单的图书管理系统
Apr 26 Java/Android
Java 定时任务技术趋势简介
May 04 Java/Android
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
Jul 07 Java/Android
SpringBoot详解执行过程
Jul 15 Java/Android
JDK8中String的intern()方法实例详细解读
Sep 23 Java/Android
Android实现获取短信验证码并自动填充
May 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在线调试执行的实现方法(附demo源码)
2016/04/28 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
JS表格组件神器bootstrap table详解(强化版)
2016/05/26 Javascript
一个可复用的vue分页组件
2017/05/15 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
Vue使用screenfull实现全屏效果
2020/09/17 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python数据分析中Groupby用法之通过字典或Series进行分组的实例
2017/12/08 Python
python复制文件到指定目录的实例
2018/04/27 Python
python简单区块链模拟详解
2019/07/03 Python
如何通过python的fabric包完成代码上传部署
2019/07/29 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
美国医疗用品、医疗设备和家庭保健用品商店:Medical Supply Depot
2018/07/08 全球购物
泰国网上购物:Shopee泰国
2018/09/14 全球购物
小学校园活动策划
2014/01/30 职场文书
C++程序员求职信范文
2014/04/14 职场文书
销售人员求职信
2014/07/22 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
单位租房协议书样本
2014/10/30 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
装修安全责任协议书
2016/03/22 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
css布局巧妙技巧之css三角示例的运用
2022/03/16 HTML / CSS
MYSQL常用函数介绍
2022/05/05 MySQL