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 相关文章推荐
springboot利用redis、Redisson处理并发问题的操作
Jun 18 Java/Android
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
Jul 16 Java/Android
mybatis中注解与xml配置的对应关系和对比分析
Aug 04 Java/Android
Spring中的使用@Async异步调用方法
Nov 01 Java/Android
springboot 多数据源配置不生效遇到的坑及解决
Nov 17 Java/Android
JAVA长虹键法之建造者Builder模式实现
Apr 10 Java/Android
Android开发 使用文件储存的方式保存QQ密码
Apr 24 Java/Android
Java 轮询锁使用时遇到问题
May 11 Java/Android
Android开发手册TextInputLayout样式使用示例
Jun 10 Java/Android
Java界面编程实现界面跳转
Jun 16 Java/Android
HttpClient实现文件上传功能
Aug 14 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下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
php+highchats生成动态统计图
2014/05/21 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
php mysql数据库操作类(实例讲解)
2017/08/06 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
js判断url是否有效的两种方法
2014/03/04 Javascript
ExtJS4利根据登录后不同的角色分配不同的树形菜单
2014/05/02 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
基于Jquery实现焦点图淡出淡入效果
2015/11/30 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
jQuery实现ajax无刷新分页页码控件
2017/02/28 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
JavaScript中in和hasOwnProperty区别详解
2017/08/04 Javascript
详解vue mint-ui源码解析之loadmore组件
2017/10/11 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
详解js常用分割取字符串的方法
2019/05/15 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python常用随机数与随机字符串方法实例
2015/04/09 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
利用python开发app实战的方法
2019/07/09 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
python获取Pandas列名的几种方法
2019/08/07 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
2020/02/18 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
Python word文本自动化操作实现方法解析
2020/11/05 Python
html+css3实现的登录界面
2020/12/09 HTML / CSS
美国新娘礼品店:The Paisley Box
2020/09/08 全球购物
十八大报告观后感
2014/01/28 职场文书
Python机器学习实战之k-近邻算法的实现
2021/11/27 Python
Python如何让字典保持有序排列
2022/04/29 Python
vue/cli 配置动态代理无需重启服务的方法
2022/05/20 Vue.js