`
lf008
  • 浏览: 66674 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

Servlet上下文监听器——ServletContextListener

阅读更多
J2EE监听器和J2SE事件处理中监听器一样,用于监视事件动作。
J2EE监听器类别:
请求监听器:
    ServletRequestListener、
    ServletRequestAttributeListener
HttpSession监听器:
   HttpSessionListener、
   HttpSessionAttributeListener
Servlet上下文监听器:
   ServletContextListener、
   ServletContextAttributeListener
上下文监听器相关方法:
ServletContextListener
方法说明
contextInitialized(ServletContextEvent sce)WEB应用准备处理请求时触发
contextDestroyed(ServletContextEvent sce)关闭时触发

ServletContextAttributeListener
方法说明
attributeAdded(ServletContextAttributeEvent scab)新增一个属性时触发
attributeRemoved(ServletContextAttributeEvent scab)删除一个属性时触发
attributeReplaced(ServletContextAttributeEvent scab)替换属性值时触发

HttpSession监听器相关方法:
HttpSessionListener
方法说明
sessionCreated(HttpSessionEvent se)Session创建时触发
sessionDestroyed(HttpSessionEvent se)Session关闭时触发

HttpSessionAttributeListener
方法说明
attributeAdded(HttpSessionBindingEvent hsbe)新增一个属性时触发
attributeRemoved(HttpSessionBindingEvent hsbe)删除一个属性时触发
attributeReplaced(HttpSessionBindingEvent hsbe)替换属性值时触发

请求监听器相关方法:
ServletRequestListener
方法说明
sessionCreated(HttpSessionEvent se)Session创建时触发
sessionDestroyed(HttpSessionEvent se)Session关闭时触发

ServletRequestAttributeListener
方法说明
attributeAdded(HttpSessionBindingEvent srae)新增一个属性时触发
attributeRemoved(HttpSessionBindingEvent srae)删除一个属性时触发
attributeReplaced(HttpSessionBindingEvent srae)替换属性值时触发


需要在服务器启动时就加载就必须用上下文监听器
监听器(部署运行)
<listener>
	<listener-class>
		com.fjdz.listener.InitListener
	</listener-class>
</listener>


监听器(开发):实现ServletContextListener的接口
以下是实现服务器启动时从配置文件中读出需要从数据文件要读取的相应数据,并取出数据保存在内存中
package com.fjdz.listener;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.esri.arcgis.system.AoInitialize;
import com.esri.arcgis.system.EngineInitializer;
import com.esri.arcgis.system.esriLicenseProductCode;
import com.fjdz.getdata.beans.DataBean;
import com.fjdz.getdata.query.QueryFactory;

public class InitListener implements ServletContextListener {
	private Element root = null;
	private Document doc = null;
	public static List<List<DataBean>> list;
	
	public static List<List<DataBean>> getList() {
		return list;
	}

	public static void setList(List<List<DataBean>> list) {
		InitListener.list = list;
	}

	public void contextDestroyed(ServletContextEvent sce) {

	}

	@SuppressWarnings("unchecked")
	public void contextInitialized(ServletContextEvent sce) {
		SAXReader reader = new SAXReader();
		List<List<DataBean>> datalist = new ArrayList<List<DataBean>>();
		try {
			doc = reader.read(new File(sce.getServletContext().getRealPath("WEB-INF") + "/xml/datainfo.xml"));//用DOM-4j读取配置文件
			root = doc.getRootElement();
			List rootList = root.selectNodes("/datas/data");//使用X-Path读取根节点
			
			QueryFactory queryFactory = new QueryFactory();
			EngineInitializer.initializeEngine();
			AoInitialize aoInitialize = new AoInitialize();
			aoInitialize.initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
			for(Object obj : rootList){		
				List<DataBean> beanlist = new ArrayList<DataBean>();
				List<DataBean> blist = new ArrayList<DataBean>();
				Element element = (Element)obj;
				String dataType = element.attributeValue("datatype");//读取子节点下的属性值
				String path = element.attributeValue("path");				
				List rootList1 = root.selectNodes("/datas/data/trees");
				for(Object o : rootList1){				
					Element element1 = (Element)o;
					String className = element1.attributeValue("classname");
					String code = element1.attributeValue("code");
					String name = element1.attributeValue("name");									
					beanlist = queryFactory.query(dataType, className, path, code, name,"");//读取数据的方法					
					datalist.add(beanlist);										
				}					
				List rootList2 = root.selectNodes("/datas/data/trees/tree");
				for(Object object : rootList2){
					Element element2 = (Element)object;
					String className = element2.attributeValue("classname");
					String code1 = element2.attributeValue("code");
					String name1 = element2.attributeValue("name");
					String keycode = element2.attributeValue("keycode");
					blist = queryFactory.query(dataType, className, path, code1, name1,keycode);					
					datalist.add(blist);
				}				
			}			
			aoInitialize.shutdown();
			InitListener.setList(datalist);//数据保存在静态变量中存放于内存里	
		} catch (IOException e) {
			e.printStackTrace();
		}catch (DocumentException e) {
			e.printStackTrace();
		}
		
	}


	
}



分享到:
评论

相关推荐

    servlet监听器技术源码

    这些事件可以包括Web应用程序的初始化、终止,或者是Servlet或Servlet上下文(ServletContext)对象的创建和销毁。通过实现特定的监听器接口,开发者可以对这些事件进行监听和响应。 在Java Servlet API中,监听器...

    j2ee20:servlet04监听器(监听四大web域)(用于访问人数的统计)、mvc模式的引入

    在"j2ee20:servlet04监听器(监听四大web域)"中,四大Web域指的是请求域、会话域、应用域和上下文域。这四个域提供了在Web应用程序中存储和检索对象的方法: 1. 请求域:`HttpServletRequest`对象的属性,仅在当前...

    JAVA自动执行任务

    在Servlet 3.0规范中,引入了Servlet上下文侦听器(ServletContextListener),它可以在Servlet容器启动时自动加载运行,并在整个WEB工程生命期中处于监听状态。 2. Java定时器 Java定时器(Timer)是Java语言中的...

    javaEE(上下文_监听器_过滤器) ppt

    在Java EE中,上下文通常指的是Servlet上下文(ServletContext),它是整个Web应用程序的共享环境。每个Web应用都有一个唯一的ServletContext对象,它可以存储全局属性,供所有Servlet和JSP页面访问。开发者可以使用...

    web监听器代码--监听servlet

    1. **上下文监听器**: 当Web应用启动和关闭时,可以执行一些初始化和清理工作,例如加载配置信息、数据库连接池的初始化等。 2. **会话监听器**: 可以监控用户的会话状态,如检测会话超时、会话创建和销毁等,常...

    servlet中的过滤器与监听器

    **监听器** 是一种特殊类型的Servlet组件,它可以监听特定的事件,如会话创建、销毁、请求初始化、上下文初始化等。监听器通过实现不同的接口,如`ServletContextListener`, `HttpSessionListener`, `...

    Servlet的监听器小DEMO

    监听器不仅可以用于会话管理,还可以监听请求(`ServletRequestListener`)、上下文(`ServletContextListener`)以及过滤器初始化(`FilterListener`)。例如,`ServletContextListener`可以用来在Web应用启动时...

    JAVA Servlet监听器listener学习资料

    - 监听器是Java Servlet API的一部分,它们是实现了特定监听接口的类,用于监听服务器、Servlet上下文(ServletContext)、HttpSession以及请求对象等发生的事件。 - 监听器可以自动触发某些操作,例如监控在线...

    jsp/servlet中过滤器和监听器的区别

    - **定义**:监听器是实现了特定接口的Java类,用于监听Web应用中特定事件的发生,如会话创建、销毁、请求到达、上下文初始化等。 - **工作原理**:监听器通过实现Servlet规范中的各种监听器接口,如`...

    Servlet监听器例子

    首先,`ServletContextListener`接口用于监听Servlet上下文(即整个Web应用)的生命周期事件。当Web应用启动时,`contextInitialized`方法会被调用,这可以用来进行一些初始化工作,如加载配置文件、设置全局变量等...

    servlet监听器总结

    ### Servlet监听器总结 #### 一、Listener概念与作用 - **定义**:在Java Web开发中,Listener(监听器)是一种特殊的组件,主要用于监听容器内的特定事件,并根据这些事件的发生执行相应的处理逻辑。 - **功能**...

    web学习笔记 —— 监听器

    3. **上下文监听器**:`ServletContextListener`,当Web应用程序启动和停止时触发,用于初始化和清理工作。 4. **生命周期监听器**:如`ContainerListener`,可以监听到Servlet容器内部组件的生命周期变化。 三、...

    Servlet、监听器、过滤器、MVC模式介绍.docx

    监听器通过实现特定的监听接口,如`javax.servlet.ServletContextListener`(监听应用上下文事件)、`javax.servlet.http.HttpSessionListener`(监听会话事件)等,可以用来实现如统计在线用户数量、监控系统状态等...

    Java的监听器种类.pdf

    1. Servlet上下文监听(Application级) - ServletContextAttributeListener:这个接口提供了三个方法,分别对应于ServletContext属性的添加、修改和删除事件: - attributeAdded(ServletContextAttributeEvent): ...

    servlet事件监听

    - `javax.servlet.ServletContextListener`: 监听Servlet上下文的生命周期事件,例如应用启动和关闭。 - `javax.servlet.ServletContextAttributeListener`: 监听ServletContext中的属性添加、删除和更新事件。 -...

    ServletContextListener的应用

    这个接口的主要作用是监听Servlet上下文(`ServletContext`)的生命周期事件,比如Web应用的启动和停止。在`web.xml`配置文件中,我们可以通过注册`ServletContextListener`来实现特定的功能。 ### ...

    listener和filter 监听器和过滤器的介绍以及简单使用(csdn)————程序.pdf

    2. **监听器用途**:主要用于监控应用程序的状态,如跟踪用户会话、初始化和关闭应用上下文、管理缓存等。在GUI编程(如Java Swing、Android)中,监听器用于响应用户的交互事件。 3. **监听器术语**: - **事件源...

    Java的监听器种类

    #### Servlet上下文监听器(Application级) 在Servlet容器中,`ServletContext`对象代表了整个Web应用的上下文环境,它是全局唯一的。为了监控`ServletContext`生命周期内的变化,Servlet规范提供了以下两种监听器...

    Servlet监听器

    - `ServletContextListener`:监听`ServletContext`(即整个Web应用程序的上下文)的初始化和销毁事件。在Web应用启动时调用`contextInitialized`方法,而在关闭时调用`contextDestroyed`方法。开发者可以利用这些...

Global site tag (gtag.js) - Google Analytics