`

ServletContextListener作用

阅读更多

http://blog.csdn.net/taijianyu/archive/2008/09/08/2898468.aspx

      ServletContext 被 Servlet 程序用来与 Web 容器通信。例如写日志,转发请求。每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享。因为Context可以用来保存资源并且共享,所以我所知道的 ServletContext 的最大应用是Web缓存----把不经常更改的内容读入内存,所以服务器响应请求的时候就不需要进行慢速的磁盘I/O了。

    

   ServletContextListener 是 ServletContext 的监听者,如果 ServletContext 发生变化,如服务器启动时 ServletContext 被创建,服务器关闭时 ServletContext 将要被销毁。

 

       在JSP文件中,application 是 ServletContext 的实例,由JSP容器默认创建。Servlet 中调用 getServletContext()方法得到 ServletContext 的实例。

我们使用缓存的思路大概是:

       1. 服务器启动时,ServletContextListener 的 contextInitialized()方法被调用,所以在里面创建好缓存。可以从文件中或者从数据库中读取取缓存内容生成类,用 ervletContext.setAttribute()方法将缓存类保存在 ServletContext 的实例中。

       2. 程序使用 ServletContext.getAttribute()读取缓存。如果是 JSP,使用a pplication.getAttribute()。如果是 Servlet,使用 getServletContext().getAttribute()。如果缓存发生变化(如访问计数),你可以同时更改缓存和文件/数据库。或者你等 变化积累到一定程序再保存,也可以在下一步保存。

       3. 服务器将要关闭时,ServletContextListener 的 contextDestroyed()方法被调用,所以在里面保存缓存的更改。将更改后的缓存保存回文件或者数据库,更新原来的内容。

 

import User; //my own 
classimport DatabaseManager; // my own class
import javax.servlet.ServletContext;
import javax.servlet.ServletContextListener;
public class MyContextListener  implements ServletContextListener {    
      private ServletContext context = null;	
      public void contextInitialized(ServletContextEvent event) {	
                context = event.getServletContext();		
                User user = DatabaseManager.getUserById(1);		
                context.setAttribute("user1", user);	
      }	
      public void contextDestroyed(ServletContextEvent event) {	
                 User user = (User)context.getAttribute("user1");		
                 DatabaseManager.updateUserData(user);		
                 this.context = null;	
      }
}

 

布署 ServletContextListener

      你实现(implements)了 ServletContextListener 编译后,把它放在正确的WEB-INF/classes目录下,更改WEB-INF目录下的 web.xml文件,在web-app节点里添加

<listener>
	<listener-class>MyServletContextListener</listener-class>
</listener>
分享到:
评论

相关推荐

    ServletContextListener,Timer,TimerTask学习笔记

    在Java Web开发中,`ServletContextListener`、`Timer`和`...了解并熟练掌握这些概念,对于提升应用的稳定性和效率有着重要的作用。在实际开发中,可以根据具体需求灵活运用这些技术,构建出高效、可靠的系统。

    ServletContextListener的应用

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

    Spring的监听器ContextLoaderListener的作用

    它实现了 ServletContextListener 接口,在 web.xml 文件中配置这个监听器,启动容器时,就会默认执行它实现的方法。 ContextLoaderListener 的作用可以分为三个方面: 首先,ContextLoaderListener 会关联 ...

    listener的实例代码

    本篇将深入讲解`Listener`的概念、作用以及如何通过实例代码进行实现,特别关注在Web应用程序中的三种主要域对象:`request`、`session`和`servletContext`。 一、`Listener`的基本概念 `Listener`是Java中的接口,...

    Servlet中的八大Listener

    接下来,我们将详细介绍Servlet中的八大Listener,包括它们的作用、触发条件以及如何在实际项目中使用它们。 1. **ServletContextListener** - **事件方法**: - `contextInitialized()`:在Web应用启动时调用。...

    23-Listener-源代码.rar

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

    精品专题(2021-2022年收藏)spring项目中监听器作用.doc

    本文将深入探讨Spring框架中的监听器,特别是`ContextLoaderListener`的作用及其配置。 `ContextLoaderListener`是Spring框架提供的一个核心监听器,主要用于初始化和销毁Spring的WebApplicationContext。它是...

    将properties文件的配置设置为整个Web应用的全局变量实现方法

    通过实现ServletContextListener接口和操作application作用域,可以有效地将properties文件的配置设置为整个Web应用的全局变量。这样配置的好处是,无论用户访问应用的任何页面,都能通过EL表达式等方式方便地读取到...

    servlet监视器

    #### 一、Servlet Listener的概念与作用 Servlet Listener是一种特殊的Servlet组件,它主要用来监听和响应应用中的某些生命周期事件。这些事件包括但不限于应用程序的初始化和销毁、HTTP会话的创建和销毁、以及HTTP...

    Java监听器的作用及用法代码示例

    首先,我们来看一下Java监听器的作用。在Java Web应用中,监听器的种类主要有以下几种: 1. ServletContextListener:这个监听器能够监听到Servlet上下文(application)的创建和销毁。它有两个重要的方法,context...

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

    该类的主要作用是: 1. 在Servlet上下文启动时,创建一个List对象用于存放在线用户名。 2. 在用户登录成功时,将用户名添加到List对象中。 3. 在用户注销会话时,从List对象中删除用户名。 以下是OnlineListener类...

    JAVA Servlet监听器listener学习资料

    1. **监听器的概念与作用** - 监听器是Java Servlet API的一部分,它们是实现了特定监听接口的类,用于监听服务器、Servlet上下文(ServletContext)、HttpSession以及请求对象等发生的事件。 - 监听器可以自动...

    tomcat监听器

    这些监听器通过实现特定的接口,如javax.servlet.ServletContextListener,来响应这些事件。 1. **监听器的作用** 监听器的主要作用在于提供预处理和后处理功能。它们可以在Web应用程序启动时执行初始化任务,例如...

    10.Listener.doc

    监听器在实际应用中的作用: - **配置管理**:可以在应用程序启动时加载配置文件,或者在关闭时保存配置。 - **资源初始化**:如数据库连接池的初始化和关闭。 - **日志记录**:跟踪应用程序的生命周期事件。 - **...

    web监听器代码--监听servlet

    下面我们将深入探讨Web监听器的概念、作用、实现方式以及与Servlet的关系。 **Web监听器的作用** 1. **上下文监听器**: 当Web应用启动和关闭时,可以执行一些初始化和清理工作,例如加载配置信息、数据库连接池的...

    listener我的listener listener我的listener

    在IT行业中,Listener是一个非常关键的概念,特别是在Java和Web开发领域。Listener是一种接口或类,它们用于监听特定事件的发生,并在...理解并熟练运用Listener,对于提升软件的用户体验和系统性能有着显著的作用。

    scwcd-2 英文原版考试题

    为了实现这一目标,你需要创建一个事件监听器,该监听器会在Web应用程序启动时构造偏好工厂,并将其存储在应用程序作用域中供后续使用。同时,这个工厂需要从部署描述符中获取数据库URL,如下所示: ```xml ...

    servlet监听器

    监听器的主要作用是对对象状态的改变进行跟踪,并在特定事件发生时执行相应的操作。Servlet监听器则专注于Web应用中的特定事件,如Web应用启动、会话创建、请求开始等。它们可以帮助开发者实现数据统计、资源初始化...

    Java Web程序设计教程源码3-9章

    8. JSTL和EL:JSTL提供了一组标签库,简化了JSP页面的编写,而EL则是一种轻量级的表达式语言,用于访问和操作页面作用域、请求作用域、会话作用域和应用作用域的对象。源码中可能包含使用这些技术的例子。 通过这个...

    浅谈java监听器的作用

    ServletContextListener接口用于监听Web应用的启动和销毁事件,可以在此基础上加载应用启动时的初始化信息。 一个基本的监听器实现包括创建监听器类并实现相应的接口,如HttpSessionListener。然后需要在web.xml...

Global site tag (gtag.js) - Google Analytics