【Listener机制】ServletContextListener
来源:互联网 发布:淘宝卖家店铺已过期 编辑:程序博客网 时间:2024/05/16 15:38
ServletContextListener是对ServeltContext的一个监听,主要监听关于ServletContext的两个事件,即初始化和销毁。
【原理】
ServletContextListener对应的是application范围。Servlet一旦被创建,ServletContext也同时被创建了,同时ServletContextListener也监听到了,随即将自己要监听的相关信息设置在ServletContext中,所以listener的执行时间比servlet更早。
Web容器先解析web.xml,获取listener的值。通过反射生成对象放进缓存,然后创建ServletContext对象和servletContextEvent对象,然后再调用ServletContextListener的contextInitialized方法,在方法里面调用event.getServletContext()可以获取ServletContext,ServeltContext是全局对象,其中的数据供所有的应用程序共享,进行一些业务的初始化。
(PS: JSP,使用application.getAttribute();Servlet,使用 getServletContext().getAttribute())
Web容器关闭,ServeltContextListener就会调用contextDestroyed。
【代码实现】
1.新建一个类,实现servletCOntextListener接口,以及它的两个函数。
2.在web.xml配置文件中配置监听器
Web.xml配置:
<listener><listener-class>com.bjpowernode.drp.util.listener.InitListener</listener-class></listener>
监听类代码:
import javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import com.bjpowernode.drp.util.BeanFactory;import com.bjpowernode.drp.util.Constants;/** * 采用ServletContextListener完成初始化 * * @author Administrator * */public class InitListener implements ServletContextListener {/** * 从tomcat中移除 */public void contextDestroyed(ServletContextEvent sce) {}public void contextInitialized(ServletContextEvent sce) {System.out.println("InitListener.init()");System.out.println("创建系统的BeanFactory...");// 将抽象工厂放到ServletContext中BeanFactory beanFactory = BeanFactory.getInstance();sce.getServletContext().setAttribute("beanFactory", beanFactory);// 加入常量,根据业务进行的初始化处理sce.getServletContext().setAttribute("add", Constants.ADD);sce.getServletContext().setAttribute("del", Constants.DEL);sce.getServletContext().setAttribute("modify", Constants.MODIFY);sce.getServletContext().setAttribute("showAdd", Constants.SHOW_ADD);sce.getServletContext().setAttribute("audit", Constants.AUDIT);}}
- 【Listener机制】ServletContextListener
- Listener监听器(ServletContextListener)
- Servlet Listener之ServletContextListener用法
- Listener之实现ServletContextListener接口
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- ServletContextListener
- java执行bat文件--jsp中实现
- vue 概述
- HDU - 4160 最小路径覆盖
- Jenkins+Gitlab+Sonar代码检查平台搭建-Pom.xml
- slk文件(QQ or 微信) 转为 mp3
- 【Listener机制】ServletContextListener
- Android Studio配置SVN详解
- Miracast/音视频处理
- 剑指offer-面试题40-数组中只出现一次的数字
- STM32F10x_硬件I2C读写EEPROM(标准外设库版本)
- CSS盒模型
- JDK源码分析-AtomicInteger
- [7] Window PowerShell DSC 学习系列----如何被管理的设置节点注册到Pull Server?
- java基础之语法基础