Spring源码解读:ServletContextListener接口
来源:互联网 发布:公路工程计量软件 编辑:程序博客网 时间:2024/06/05 06:53
ServletContextListener接口的源码
package javax.servlet;import java.util.EventListener;/** * Implementations of this interface receive notifications about * changes to the servlet context of the web application they are * part of. * To receive notification events, the implementation class * must be configured in the deployment descriptor for the web * application. * @see ServletContextEvent * @sincev 2.3 */public interface ServletContextListener extends EventListener {/** ** Notification that the web application initialization ** process is starting. ** All ServletContextListeners are notified of context ** initialization before any filter or servlet in the web ** application is initialized. */ public void contextInitialized ( ServletContextEvent sce );/** ** Notification that the servlet context is about to be shut down. ** All servlets and filters have been destroy()ed before any ** ServletContextListeners are notified of context ** destruction. */ public void contextDestroyed ( ServletContextEvent sce );}
此接口被EventListener标记,用来接收web应用中servlet 上下文变化的通知,同时,为了接收通知事件。该具体实现类必须在web.xml中配置(部署描述符)。
其中设计了两个方法:
//通知web应用的初始化处理开始,所有的ServletContextListeners在filter or servlet在(web应用)初始化之前都会被接收到上下文初始化的信息。
public void contextInitialized ( ServletContextEvent sce );
//在上下文中的销毁中,所有的filter or servlet在销毁之间ServletContextListeners都会被提前通知。
public void contextDestroyed ( ServletContextEvent sce );
其中的实现类有:
同时该接口引入了ServletContextEvent事件类:
ServletContextEvent:这是关于Web应用程序的servlet上下文更改的通知的事件类。
package javax.servlet;/** * This is the event class for notifications about changes to * the servlet context of a web application. * @see ServletContextListener * @sincev 2.3 */public class ServletContextEvent extends java.util.EventObject { /** 从给定的上下文中构建一个ServletContextEvent对象 * * @param source - the ServletContext that is sending the event. */ public ServletContextEvent(ServletContext source) {super(source); } /** * 返回一个Servlet上下对象 * * @return the ServletContext that sent the event. */ public ServletContext getServletContext () { return (ServletContext) super.getSource(); } }其中有EventObject和ServletContext。
对于EventObject没啥特别的就是jdk工具类提供的一个事件对象,获取对象只能通过getSource返回一个Object。
ServletContextEvent也使用相同的手段,只能通过传入一个ServletContext构建一个对象,并返回ServletContext。
package java.util;/** * <p> * The root class from which all event state objects shall be derived. * <p> * All Events are constructed with a reference to the object, the "source", * that is logically deemed to be the object upon which the Event in question * initially occurred upon. * * @since JDK1.1 */public class EventObject implements java.io.Serializable { private static final long serialVersionUID = 5516075349620653480L; /** * The object on which the Event initially occurred. */ protected transient Object source; /** * Constructs a prototypical Event. * * @param source The object on which the Event initially occurred. * @exception IllegalArgumentException if source is null. */ public EventObject(Object source) { if (source == null) throw new IllegalArgumentException("null source"); this.source = source; } /** * The object on which the Event initially occurred. * * @return The object on which the Event initially occurred. */ public Object getSource() { return source; } /** * Returns a String representation of this EventObject. * * @return A a String representation of this EventObject. */ public String toString() { return getClass().getName() + "[source=" + source + "]"; }}对于ServletContext只是定义了一系列Servlet与Servlet容器通信的方法,例如获取一个文件的MIME的类型,分配一个请求或者写日志文件。
在java虚拟机中一个应用只有一个上下文ServletContext
0 0
- Spring源码解读:ServletContextListener接口
- spring源码解读:aware接口
- spring源码解读:BeanPostProcessor接口
- Spring源码解读:Envrionment接口
- Spring源码解读:EventListener接口
- spring源码解读:BeanFactory接口
- ServletContextListener接口在Spring中的实现
- ServletContextListener 接口
- ServletContextListener接口
- spring ServletContextListener
- 【Servlet标准解读】ServletContextListener
- Spring RMI源码解读
- spring IOC源码解读
- spring beans源码解读
- spring 源码解读
- spring源码解读
- Spring源码解读顺序
- spring源码解读感想
- 格莱富笔记本电脑教你如何隐藏磁盘驱动器保护隐私文件
- 在文本最后一列的后面加上递增的数字-Linux
- Gitlab的使用
- H264编码原理
- 【散招单面】创业型公司-产品助理实习生
- Spring源码解读:ServletContextListener接口
- Java中遍历删除ArrayList中多个元素
- Oracle计算时间函数(对时间的加减numtodsinterval、numtoyminterval)
- PHP关于数组
- C++第4次实验(基础班)—循环结构程序设计(参考答案)-项目6:输出星号图
- cocoapods安装备注
- Jenkins学习:介绍一些Jenkins的常用功能
- python快速入门(控制结构)
- Codeforces Round #411 (Div. 2)(A+B+C+D)