文档详情

Web监听技术.doc

发布:2017-08-18约6.07千字共7页下载文档
文本预览下载声明
Web监听技术 1、概述 在Web应用中,可以部署一些特殊的Servlet类,从而实现监听Web应用中的上下文信息、Servlet会话信息、Servlet请求信息等。 通过对这些信息的监听,从而可以在服务器的后台自动启动某些程序,完成一些特殊的应用。 2、Web应用的生命周期事件 Servlet API 2.3第二个意义重大的改变是增加了Web应用程序生命周期事件,即当Servlet Contexts和Sessions被初始化或释放时,以及当向Servlet Contexts或Session上添加或删除属性的时候,都将通知listener对象。Servlet生命周期事件与Swing的事件机制类似。 如果你想让你的类监听应用的启动和停止事件,你就得实现ServletContextListener接口;如果你想让你的类去监听Session的创建和失效事件,那你就得实现HttpSessionListener接口。 (1)对ServletContext生命周期进行观察的监听器必须实现 ServletContextListener接口 这个接口有两个方法: void contextInitialized(ServletContextEvent e) 该方法在Web应用程序第一次准备处理Requests请求的时候(例如:Web Server启动并且ServletContext被加载和重新加载时)被执行。本方法返回之前不开始处理Requests请求。 void contextDestroyed(ServletContextEvent e) 该方法在Web应用程序要被关闭的时候(例如:当Web Server关闭或当一个ServletContext被移去或重新加载的时候) 被执行。本方法调用时Request请求处理已经停止。 传入这些方法的ServletContextEvent类只有一个返回被初始化或被移去的获得ServletContext的getServletContext()方法。 (2)Session Listener Model与Context Listener Model类似。在Session事件模型中, 有一个拥有两个方法的HttpSessionListener接口: void sessionCreated(HttpSessionEvent e):当Session创建时被调用 void sessionDestroyed(HttpSessionEvent e):当Session被释放时或无效时被调用 这些方法接受一个拥有返回被创建或被释放的Session的getSession()方法的HttpSessionEvent类实例。可以使用这些方法实现一个对Web 应用程序中所有的活动用户进行跟踪的管理者接口。 3、生命周期事件的应用编程 (1)编程实现的步骤 编程对应的生命周期事件类程序 并根据应用的需要实现某一生命周期事件的监听器接口,并在该类中重写相应的生命周期事件处理的方法 在web.xml中部署该事件类程序(注意:由于监听是针对整个Web应用程序而言的,因此不需要象FilterServlet那样设置filter-mapping) 启动本Web应用,当应用的状态满足某一事件的触发条件时,容器将自动地触发对生命周期事件处理的方法调用 (2)应用的示例 生命周期事件的一个实际应用是由ServletContext中监听器管理共享数据库连接。每当web服务器启动后将自动创建出数据库的连接(也可以实现其它只需要初始化一次的任务)。 实现该应用目的的监听器的程序代码例子如下: import java.sql.*; import javax.servlet.*; import javax.servlet.http.*; public class MyConnectionManager implements ServletContextListener { Connection con=null; String url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DataBase; String DBDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver; public void contextInitialized(ServletContextEvent e) { try { Class.forName(DBDriver); con= DriverManager.getConnection(url,sa,); //创建出数据库的连接代码 }
显示全部
相似文档