• ServletContextListener 详解


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

    1.  
      public interface ServletContextListener extends EventListener {
    2.  
       
    3.  
      /**
    4.  
      * Receives notification that the web application initialization
    5.  
      * process is starting.
    6.  
      *
    7.  
      * <p>All ServletContextListeners are notified of context
    8.  
      * initialization before any filters or servlets in the web
    9.  
      * application are initialized.
    10.  
      *
    11.  
      * @param sce the ServletContextEvent containing the ServletContext
    12.  
      * that is being initialized
    13.  
      */
    14.  
      public void contextInitialized(ServletContextEvent sce);
    15.  
       
    16.  
      /**
    17.  
      * Receives notification that the ServletContext is about to be
    18.  
      * shut down.
    19.  
      *
    20.  
      * <p>All servlets and filters will have been destroyed before any
    21.  
      * ServletContextListeners are notified of context
    22.  
      * destruction.
    23.  
      *
    24.  
      * @param sce the ServletContextEvent containing the ServletContext
    25.  
      * that is being destroyed
    26.  
      */
    27.  
      public void contextDestroyed(ServletContextEvent sce);
    28.  
      }

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

    实现代码:

    1.  
      public class MyContextListener implements ServletContextListener {
    2.  
      private ServletContext context = null;
    3.  
       
    4.  
      public void contextInitialized(ServletContextEvent event) {
    5.  
      context = event.getServletContext();
    6.  
      User user = DatabaseManager.getUserById(1);
    7.  
      context.setAttribute("user1", user);
    8.  
      }
    9.  
       
    10.  
      public void contextDestroyed(ServletContextEvent event) {
    11.  
      User user = (User)context.getAttribute("user1");
    12.  
      DatabaseManager.updateUserData(user);
    13.  
      this.context = null;
    14.  
      }
    15.  
      }


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

    1.  
      <listener>
    2.  
      <listener-class>MyServletContextListener</listener-class>
    3.  
      </listener>

    --------------------- 本文来自 为了那份宁静 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/linhaiguo/article/details/50867376?utm_source=copy 

  • 相关阅读:
    shell关闭指定进程
    linux tricks 之数据对齐。
    linux tricks 之VA系列函数.
    linux tricks 之 typeof用法.
    linux下notify机制(仅用于内核模块之间的通信)
    怎么判定一个mac地址是multicast还是unicast.
    linux tricks 之 ALIGN解析.
    fid解释
    c语言中宏定义#和 ##的作用:
    rebtree学习
  • 原文地址:https://www.cnblogs.com/shizhijie/p/9718546.html
Copyright © 2020-2023  润新知