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 相关文章推荐
Spring Bean的实例化之属性注入源码剖析过程
Jun 13 Java/Android
新手入门Jvm-- JVM对象创建与内存分配机制
Jun 18 Java/Android
利用Java设置Word文本框中的文字旋转方向的实现方法
Jun 28 Java/Android
分析ZooKeeper分布式锁的实现
Jun 30 Java/Android
用Java实现简单计算器功能
Jul 21 Java/Android
浅谈sql_@SelectProvider及使用注意说明
Aug 04 Java/Android
Java的Object类的九种方法
Apr 13 Java/Android
JavaScript正则表达式实现注册信息校验功能
May 30 Java/Android
Java异常体系非正常停止和分类
Jun 14 Java/Android
Java中的Kotlin 内部类原理
Jun 16 Java/Android
springboot 全局异常处理和统一响应对象的处理方式
Jun 28 Java/Android
java获取一个文本文件的编码(格式)信息
Sep 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
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
正确的PHP匹配UTF-8中文的正则表达式
2015/05/13 PHP
简单了解PHP编程中数组的指针的使用
2015/11/30 PHP
针对PHP开发安全问题的相关总结
2019/03/22 PHP
深入了解javascript中的prototype与继承
2013/04/14 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
jquery索引在使用中的一些困惑
2013/10/24 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
2014/08/22 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
js实现简洁的TAB滑动门效果代码
2015/09/06 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
AngularJS入门教程之AngularJS表达式
2016/04/18 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
2019/08/14 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
python 内置模块详解
2019/01/01 Python
Python绘制动态水球图过程详解
2020/06/03 Python
python 在sql语句中使用%s,%d,%f说明
2020/06/06 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
python 窃取摄像头照片的实现示例
2021/01/08 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
小饰品店的创业计划书范文
2013/12/28 职场文书
参观监狱心得体会
2014/01/02 职场文书
银行职员自我鉴定
2014/04/20 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
html输入两个数实现加减乘除功能
2021/07/01 HTML / CSS
Redis唯一ID生成器的实现
2022/07/07 Redis