Springboot 项目一启动就获取HttpSession的两种方法

 更新时间:2025年10月21日 09:43:58   作者:梁云亮  
在SpringBoot项目中,HttpSession是有状态的,通常只有在用户发起 HTTP请求并建立会话后才会创建,因此,在项目启动时是无法获取到 HttpSession,下面就来介绍一下Springboot启动就获取HttpSession,感兴趣的可以了解一下

在 Spring Boot 项目中,HttpSession 是有状态的,通常只有在用户发起 HTTP 请求并建立会话后才会创建。因此,在项目启动时(即应用刚启动还未处理任何请求)是无法获取到 HttpSession 的。

方法一:使用 HttpSessionListener(监听 session 创建)

@Component
public class MySessionListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        // 当 session 被创建时执行
        System.out.println("Session created: " + se.getSession().getId());
        se.getSession().setAttribute("initData", "some value");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        // 当 session 销毁时执行
    }
}

方法二:使用拦截器或过滤器设置 Session 数据

@Component
public class SessionInitInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
        HttpSession session = request.getSession();
        if (session.getAttribute("initData") == null) {
            session.setAttribute("initData", "initialized on first request");
        }
        return true;
    }
}

并在配置中注册:

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private SessionInitInterceptor sessionInitInterceptor;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(sessionInitInterceptor);
    }
}

到此这篇关于Springboot 项目一启动就获取HttpSession的两种方法的文章就介绍到这了,更多相关Springboot启动就获取HttpSession内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于SpringBoot和Vue的动态语音播放实现

    基于SpringBoot和Vue的动态语音播放实现

    本文介绍如何使用SpringBoot和Vue实现音频文件的动态播放,包括前端页面设计、后端接口开发、音频文件存储和调用等方面。通过该实现,用户可以在网页上直接播放音频,增强用户体验,提高网站互动性
    2023-04-04
  • mybatis-plus实体类中出现非数据库映射字段解决办法

    mybatis-plus实体类中出现非数据库映射字段解决办法

    这篇文章主要介绍了mybatis-plus实体类中出现非数据库映射字段解决办法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 详解Java使用Jsch与sftp服务器实现ssh免密登录

    详解Java使用Jsch与sftp服务器实现ssh免密登录

    这篇文章主要介绍了详解Java使用Jsch与sftp服务器实现ssh免密登录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Maven的概述及基本使用示例详解

    Maven的概述及基本使用示例详解

    MApache Maven是一个项目管理和构建工具,它基于项目对象模型POM的概念,通过一小段描述信息来管理项目的构建、报告和文档,aven是专门用于管理和构建Java项目的工具,本文给大家介绍Maven的概述及基本使用,感兴趣的朋友一起看看吧
    2023-07-07
  • Maven多个项目实现聚合过程解析

    Maven多个项目实现聚合过程解析

    这篇文章主要介绍了Maven多个项目实现聚合过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • spring-boot-maven-plugin:打包时排除provided依赖问题

    spring-boot-maven-plugin:打包时排除provided依赖问题

    这篇文章主要介绍了spring-boot-maven-plugin:打包时排除provided依赖问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • JDBC实现Mysql自动重连机制的方法详解

    JDBC实现Mysql自动重连机制的方法详解

    最近在工作中发现了一个问题,通过查找相关的资料终于解决了,下面这篇文章主要给大家介绍了关于JDBC实现Mysql自动重连机制的相关资料,文中给出多种解决的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-07-07
  • 浅谈springboot 属性定义

    浅谈springboot 属性定义

    本篇文章主要介绍了浅谈springboot 属性定义,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • SpringBoot整合Zookeeper详细教程

    SpringBoot整合Zookeeper详细教程

    Curator是Netflix公司开源的⼀套zookeeper客户端框架,Curator是对Zookeeper⽀持最好的客户端框架。Curator封装了⼤部分Zookeeper的功能,⽐如Leader选举、分布式锁等,减少了技术⼈员在使⽤Zookeeper时的底层细节开发⼯作
    2022-12-12
  • mac下idea启动web项目报错java.net.SocketException:socket closed问题

    mac下idea启动web项目报错java.net.SocketException:socket closed

    本文主要介绍了作者在项目启动时遇到的一个问题——无法打开调试端口,经过一系列排查和尝试,最终发现是由于权限问题导致的,作者还分享了如何修改文件权限的方法,并提醒大家不要随意kill掉占用端口的进程
    2024-12-12

最新评论