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 相关文章推荐
JPA如何使用entityManager执行SQL并指定返回类型
Jun 15 Java/Android
深入理解java.lang.String类的不可变性
Jun 27 Java/Android
浅谈自定义校验注解ConstraintValidator
Jun 30 Java/Android
Java基础-封装和继承
Jul 02 Java/Android
springboot集成springCloud中gateway时启动报错的解决
Jul 16 Java/Android
Java如何实现通过键盘输入一个数组
Feb 15 Java/Android
springboot+zookeeper实现分布式锁
Mar 21 Java/Android
Java的Object类的九种方法
Apr 13 Java/Android
java开发双人五子棋游戏
May 06 Java/Android
Java数据结构之堆(优先队列)
May 20 Java/Android
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
Jul 07 Java/Android
SpringBoot详解整合Redis缓存方法
Jul 15 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中date与gmdate的区别及默认时区设置
2014/05/12 PHP
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
smarty简单入门实例
2014/11/28 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
JavaScript简单实现网页回到顶部功能
2013/11/12 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
JavaScript比较两个对象是否相等的方法
2015/02/06 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
基于 Vue 的树形选择组件的示例代码
2017/08/18 Javascript
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
微信小程序中转义字符的处理方法
2019/03/28 Javascript
利用d3.js实现蜂巢图表带动画效果
2019/09/03 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
Python实现简单的四则运算计算器
2016/11/02 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
Django中Model的使用方法教程
2018/03/07 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
python利用小波分析进行特征提取的实例
2019/01/09 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
python实现ssh及sftp功能(实例代码)
2020/03/16 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
生产部主管岗位职责
2014/01/06 职场文书
求职信标题怎么写
2014/05/26 职场文书
离婚协议书包括哪些内容
2014/10/16 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
教师个人工作总结范文2015
2015/10/14 职场文书