ServletContextListener 详解

ServletContextListener 详解1 首先来看一看源码该类的源码 publicinterf Receivesnoti processissta

1.首先来看一看源码 该类的源码

public interface ServletContextListener extends EventListener { / * Receives notification that the web application initialization * process is starting. * * 

All ServletContextListeners are notified of context * initialization before any filters or servlets in the web * application are initialized. * * @param sce the ServletContextEvent containing the ServletContext * that is being initialized */ public void contextInitialized(ServletContextEvent sce); / * Receives notification that the ServletContext is about to be * shut down. * *

All servlets and filters will have been destroyed before any * ServletContextListeners are notified of context * destruction. * * @param sce the ServletContextEvent containing the ServletContext * that is being destroyed */ public void contextDestroyed(ServletContextEvent sce); }

此接口中提供了两个方法,用于监听ServletContext  的创建和销毁,也就是监听ServletContext 的生命周期,可以说成是监听Web 应用的生命周期,当web应用启动后,就会触发ServletContextEvent 事件 当此事件执行时,就会被ServletContextListener 监听器监听到,会调用他的 contextInitialized(ServletContextEvent sce)  方法,通过sce 可以获取ServletContext 实例,初始化一些数据,例如缓存的应用,如,创建数据库连接,读取数据库数据,通过setAttribute(“”,obj) 方法设置数据,然后就是可通过servlet 获取servletContext 的实例,通过getAttribute(“”) 获取设置的数据

实现代码:

public class MyContextListener implements ServletContextListener { private ServletContext context = null; public void contextInitialized(ServletContextEvent event) { context = event.getServletContext(); User user = DatabaseManager.getUserById(1); context.setAttribute("user1", user); } public void contextDestroyed(ServletContextEvent event) { User user = (User)context.getAttribute("user1"); DatabaseManager.updateUserData(user); this.context = null; } }

如果是web 项目 最后一步是使 ServletContext 生效,需要在web.xml 中配置监听器,并且web.xml  把它放在正确的WEB-INF/classes目录下,

 
     
     
       MyServletContextListener 
      
    









版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206456.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午3:39
下一篇 2026年3月19日 下午3:40


相关推荐

  • jsplumb 绘制页面链接线

    jsplumb 绘制页面链接线最近公司打算实现通用的流程设计 对比之前公司有一套源码 发现它采用的是 FlowDesign 来实现的 但从晚上查找之后发现它实际上是采用了 jsplumb 来实现流程绘制的 这也不难理解 毕竟 jsplumb 是通用的程序 FlowDesign 只能算是 jsplumb 的具体使用 FlowDesign 的地址是 http flowdesign leipi org Jsplumb 官网 https

    2025年11月2日
    5
  • Android滑动解锁功能实现,Android_滑动解锁

    Android滑动解锁功能实现,Android_滑动解锁1.滑动解锁代码流程图:流程图图片资源:https://pan.baidu.com/s/1tkcw0tdxV78mnwHqOtcAGg提取码:2xsq2.代码:xml文件:xmlns:app=”http://schemas.android.com/apk/res-auto”xmlns:tools=”http://schemas.android.com/tools”android:layout_wi…

    2022年6月29日
    42
  • 科大讯飞股份有限公司副总裁娄超:AI为笔、文旅为卷,星火大模型助力文旅场景的实践分享

    科大讯飞股份有限公司副总裁娄超:AI为笔、文旅为卷,星火大模型助力文旅场景的实践分享

    2026年3月14日
    3
  • WinRunner在项目中的作用

    WinRunner在项目中的作用可以用 WinRunner 为所测试应用程序的 GUI 功能和回归测试创建自动化脚本 WinRunner 的测试过程主要包括如下 6 个阶段 1 nbsp nbsp nbsp nbsp 创建 GUIMap 文件 WinRunner 可以通过它来识别被测试应用程序中的 GUI 对象 2 nbsp nbsp nbsp nbsp 创建测试脚本 通过录制 编程 或两者的组合创建 在录制测试脚本时 在你想检查被测试应用程序响应的地方插入验证点

    2026年3月17日
    3
  • LoRaWAN介绍 – LoRa从业者读这篇就够了

    LoRaWAN介绍 – LoRa从业者读这篇就够了这篇介绍文章是用于团队内部培训使用 对部分内容做了删减后公开发出 本文是一篇 LoRaWAN 的科普介绍 你已经在朋友圈看过无数蜻蜓点水的 LoRaWAN 文章 是时候来一篇真正的技术干货了

    2026年3月26日
    2
  • 初学SpringBoot框架: Dao层、Service层、Controller层的作用

    初学SpringBoot框架: Dao层、Service层、Controller层的作用1 Dao 层 全称 DataAccessOb Dao 层比较底层 负责与数据库打交道具体到对某个表 某个实体的增删改查 2 Service 层 又叫服务层或业务层 封装 Dao 层的操作 使一个方法对外表现为实现一种功能 例如 网购生成订单时 不仅要插入订单信息记录 还要查询商品库存是否充足 购买是否超过限制等等 3 Controller 层 业务控制层 负责接收数据和请

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号