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 Optional<Foo>转换成List<Bar>的实例方法
Jun 20 Java/Android
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 Java/Android
解决SpringBoot文件上传临时目录找不到的问题
Jul 01 Java/Android
SpringBoot 拦截器妙用你真的了解吗
Jul 01 Java/Android
Java比较两个对象中全部属性值是否相等的方法
Aug 07 Java/Android
Java spring单点登录系统
Sep 04 Java/Android
Java 实战项目之家居购物商城系统详解流程
Nov 11 Java/Android
使用HttpSessionListener监听器实战
Mar 17 Java/Android
Android自定义双向滑动控件
Apr 19 Java/Android
Java工作中实用的代码优化技巧分享
Apr 21 Java/Android
Java实现扫雷游戏详细代码讲解
May 25 Java/Android
SpringBoot使用AOP实现统计全局接口访问次数详解
Jun 16 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
ThinkPHP模型详解
2015/07/27 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
dojo 之基础篇
2007/03/24 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
JavaScript中匿名函数的用法及优缺点详解
2016/06/01 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
基于Node.js模板引擎教程-jade速学与实战1
2017/09/17 Javascript
详解React 的几种条件渲染以及选择
2018/10/23 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
使用 vue 实现灭霸打响指英雄消失的效果附demo
2019/05/06 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
Python实现自动为照片添加日期并分类的方法
2017/09/30 Python
python实现自动解数独小程序
2019/01/21 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
几道Java和数据库的面试题
2013/05/30 面试题
高三政治教学反思
2014/02/06 职场文书
辩论赛主持词
2014/03/18 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
开学典礼策划方案
2014/05/28 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
五好家庭事迹材料
2014/12/20 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
请病假条范文
2015/08/17 职场文书
高中政治教师教学反思
2016/02/23 职场文书
python pygame 开发五子棋双人对弈
2022/05/02 Python
JS开发前端团队展示控制器来为成员引流
2022/08/14 Javascript