`
lf008
  • 浏览: 65878 次
  • 性别: 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监听器例子

    关于Servlet监听器的几个例子,用于统计在线人数等等

    JavaWeb开发技术-Listener监听器.pptx

    Listener监听器 JavaBean Servlet Jsp XML HTML JAVA WEB开发技术 Listener监听器 事件监听器用于对程序中发生的事件进行监听,在监听的过程中会涉及几个重要组成部分: 事件(Event) 事件源 事件处理器 事件监听器...

    javax.servlet.jar下载

    Files contained in javax.servlet.jar:...javax.servlet.ServletContextListener.class META-INF/maven/org.mortbay.jetty/servlet-api-2.5/pom.xml META-INF/maven/org.mortbay.jetty/servlet-api-2.5/pom.properties

    ServletContextListener的应用

    ServletContextListener的应用案例 项目启动:创建新的空表, 项目关闭:删除表 百度六祎,期...

    ServletContextListener socket实现数据接收

    通过创建ServletContextListener监听器,socket来实现tcp/ip协议客户端数据的接收功能。这是一个maven项目,直接导入eclipse即可运行,此处监听的是9092端口,将项目运行起后,可以对其端口使用情况进行查看,在...

    servlet-api-2.4.jar.zip

    javax.servlet.ServletContextListener javax.servlet.ServletRequestListener javax.servlet.ServletResponseWrapper javax.servlet.http.HttpServletRequest javax.servlet.http.HttpSessionContext javax.servlet...

    JSP监听器用法分析

    监听器也叫Listener,是servlet服务的监听器。它可以监听客户端的请求,服务端的操作等。比如统计在线用户数量。每当增加一个HttpSession时,就会触发sessionCreate(HttpSessionEvent se)方法,这样就可以给在线人数...

    ServletContextListener使用详解

    ServletContextListener使用详解

    servlet2.4doc

    contextInitialized(ServletContextEvent) - Method in interface javax.servlet.ServletContextListener Notification that the web application initialization process is starting. Cookie - class javax....

    servlet小型项目

    servlet小项目 public class BookListener implements ServletContextListener { public void contextDestroyed(ServletContextEvent arg0) { // TODO Auto-generated method stub } public void context...

    Java基于servlet监听器实现在线人数监控功能的方法

    主要介绍了Java基于servlet监听器实现在线人数监控功能的方法,结合实例形式分析了ServletContextListener监听功能的相关使用步骤与操作技巧,需要的朋友可以参考下

    JAVA J2EE 类库文档

    ServletContextListener ServletException ServletInputStream ServletOutputStream ServletRequest ServletRequestAttributeEvent ServletRequestAttributeListener ServletRequestEvent ...

    ServletContextListener,Timer,TimerTask学习笔记

    NULL 博文链接:https://chenhua-1984.iteye.com/blog/374683

    JavaWeb新版教程. jsp--ServletContextListener监听器演示.avi

    JavaWeb新版教程. jsp--ServletContextListener监听器演示.avi

    监听器:监听三个对象的创建和销毁方法

    本次工程的目标是学习监听器,掌握监听三个对象的创建和销毁方法。 三个对象:rquest,session,ServletContext 实现的接口:ServletRequestListener,HttpSessionListener,ServletContextListener 工程的大致步骤...

    spring的监听器和缓存.docx

    public class MyListener implements ServletContextListener { ​ @Override public void contextInitialized(ServletContextEvent sce) { log.info("web项目的启动{} 一开始就启动",sce.getServletContext...

    23-Listener-源代码.rar

    5)ServletContextListener监听器的主要作用 a、初始化的工作:初始化对象 初始化数据 ---- 加载数据库驱动 连接池的初始 化 b、加载一些初始化的配置文件 --- spring的配置文件 c、任务调度----定时器----Timer/...

    ServletContextListener完成在线人数统计和显示人员列表

    ServletContextListener完成在线人数统计和显示人员列表

    SpringMVC中ervletContextListener的使用

    在SpringMVC中利用ServletContextListener初始化数据到内存

Global site tag (gtag.js) - Google Analytics