java - 如何在 Spring MVC 的 session 开始时做一些事情?

标签 java spring servlets spring-mvc

我需要用一些值来初始化每个新的 http session 。我怎么做?

我尝试在@PostConstruct 中创建一个 session 范围的组件并初始化 session ,但是在我请求访问它们之前,不会急切地创建 session 范围的 bean。

最佳答案

如果你绝对确定你想要预先初始化,你可以执行以下操作:

  • 为所有bean定义一个拦截器
  • 定义一个 <lookup-method>对于那个拦截器:

    <lookup-method name="getCurrentSessionBean"
         bean="yourSessionBeanToInitialize"/>
    
  • 定义拦截器abstract , 与 abstract方法 getCurrentSessionBean()

  • 创建一个标志 initialized在 bean 上
  • 在每次拦截时,调用 lookup 方法,它将返回当前 session 中的 bean 实例。如果没有初始化(flag),就初始化
  • 你也可以使用@PostConstruct并保留 initizlied旗帜

另一种选择是:

  • 定义一个HttpSessionListener在 web.xml 中(如果使用 servlet 3.0,则带有注释)
  • 使用WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext)获取上下文
  • 调用getBean(..)获取 session 范围 bean 的实例
  • 它将被初始化为@PostConstruct那时

第一个选项是“更多 Spring ”,第二个选项更容易和更快地实现。

关于java - 如何在 Spring MVC 的 session 开始时做一些事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3263067/

相关文章:

java - 无法将 servlet 添加到 Tomcat web.xml

java - 出现错误 "getOutputStream() has already been called for this response"

jsp - 访问控制允许 Servlet 中的来源

java - 文件输出流 FileNotFoundException

java - java中通过鼠标点击监听器获取标签名称

java - Spring 2.5 表单验证在 validator 实现中发现的错误不会更新 View <form :error/> tags

spring - Spring JMS/AQ。如何为多个使用者队列创建持久订阅。 ils子

java - 马文 : Build native installer of javaFX application with Inno Setup script

java - 有没有衡量 java web GUI 设计有效性的指标?

spring - Spring Boot Elasticsearch