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并发编程之详解CyclicBarrier线程同步
Jun 23 Java/Android
Spring Boot 启动、停止、重启、状态脚本
Jun 26 Java/Android
Java中使用Filter过滤器的方法
Jun 28 Java/Android
浅谈resultMap的用法及关联结果集映射
Jun 30 Java/Android
Java Spring 控制反转(IOC)容器详解
Oct 05 Java/Android
Java 在线考试云平台的实现
Nov 23 Java/Android
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
Dec 06 Java/Android
Android自定义ScrollView实现阻尼回弹
Apr 01 Java/Android
JavaWeb Servlet开发注册页面实例
Apr 11 Java/Android
Java处理延时任务的常用几种解决方案
Jun 01 Java/Android
Java中的Kotlin 内部类原理
Jun 16 Java/Android
tree shaking对打包体积优化及作用
Jul 07 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和Mysqlweb应用开发核心技术 第1部分 Php基础-1 开始了解php
2011/07/03 PHP
php中使用redis队列操作实例代码
2013/02/07 PHP
具有时效性的php加密解密函数代码
2013/06/19 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
JSONP跨域请求实例详解
2016/07/04 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
[00:59]DOTA2英雄背景故事——上古巨神
2020/06/28 DOTA
Python用list或dict字段模式读取文件的方法
2017/01/10 Python
Flask数据库迁移简单介绍
2017/10/24 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
python简单实现插入排序实例代码
2020/12/16 Python
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
Nike瑞士官网:Nike CH
2021/01/18 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
高中生的自我评价
2014/03/04 职场文书
入党介绍人评语
2014/05/06 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
婚庆开业庆典主持词
2015/06/30 职场文书
高中数学教学反思范文
2016/02/18 职场文书
写好Python代码的几条重要技巧
2021/05/21 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python