`

servletContextListener 使用简介

阅读更多

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 class
import 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>
分享到:
评论

相关推荐

    Java_Web定时器使用

    #### 一、Java定时器简介 Java定时器(`java.util.Timer`)是Java标准库中的一个实用工具类,它主要用于执行周期性的或一次性计划任务。通过设置定时器的间隔时间,可以在指定的时间间隔后执行预先定义的任务,即`...

    java comet服务器推送使用步骤

    #### 二、Comet4J简介 Comet4J是一个基于Java的轻量级Comet框架,它能够帮助开发者轻松地实现实时数据推送功能。Comet4J支持多种服务器环境,并且提供了丰富的API接口供开发者调用。通过使用Comet4J,开发者可以专注...

    java定时器

    在Web应用中也可以使用定时器,可以通过监听 `ServletContextListener` 来启动和停止定时器。 ```java package org.lzstone.action; import javax.servlet.ServletContextEvent; import javax.servlet....

    Spring与Web环境集成.pdf

    为了解决这些弊端,我们可以使用ServletContextListener监听Web应用的启动,在Web应用启动时加载Spring的配置文件,创建应用上下文对象ApplicationContext,并将其存储到ServletContext域中。这样,我们就可以在任意...

    java编码规范

    **1.2 规范简介** 此规范旨在为所有基本Java编程提供一套统一的标准,包括但不限于JavaBeans、Applet、Application、Servlet、JSP以及EJB中的Class和Interface等。其目的不仅在于提升开发效率,更重要的是提高代码...

    springmvc完整教学案例代码

    - 配置 ServletContextListener:用于初始化 Spring MVC 的应用上下文。 3. **控制器(Controller)** - 使用 `@Controller` 注解标记类为控制器,通过 `@RequestMapping` 注解定义请求映射。 - `@GetMapping` ...

    resteasy guide

    ### 一、RESTEasy简介 RESTEasy是JAX-RS规范的一个开源实现,它为Java开发者提供了一种简单而强大的方式来创建RESTful Web服务。RESTEasy不仅仅是一个框架,它还包含了一系列的工具和特性,帮助开发者在不同的环境...

    《JavaWeb程序设计案例教程》考试题

    - 常见的监听器包括ServletContextListener、HttpSessionListener等。 ### 进阶技术与框架 1. **Spring框架**: - Spring是一个开源框架,用于简化Java应用程序的开发。 - 包括Spring Core、Spring MVC、Spring...

    web环境下Quartz作业调度入门源代码(Jboss)

    1. **Quartz简介** - Quartz是一个轻量级的作业调度框架,支持Cron表达式和复杂的作业触发器。 - 它提供了API来定义作业(Job)和触发器(Trigger),可以灵活地安排作业的执行时间。 2. **Web环境下的Quartz** ...

    JavaWeb学习笔记

    - `ServletContextListener`:监听`ServletContext`的初始化和销毁。 - `HttpSessionListener`:监听`HttpSession`的创建和销毁。 - `ServletRequestListener`:监听`ServletRequest`的初始化和销毁。 ### ...

    中文版JSP&SERVLET教程

    1. **JSP简介** JSP是一种基于Java的服务器端脚本语言,它允许开发者在HTML或XML文档中嵌入Java代码,从而简化了动态网页的开发。JSP文件会被Web容器(如Tomcat)转换成Servlet,然后由Servlet处理请求并生成响应。...

    创建简单springboot框架

    #### 一、课程简介与目标 本教程旨在帮助读者了解如何构建简单的Spring Boot框架。Spring Boot是一种流行的Java框架,它简化了基于Spring的应用程序的开发过程。通过本教程,读者将学会如何整合Servlet、Filter、...

    MVC和分页1

    MVC模式简介 MVC模式不是Java Web项目独有的,MVC是一种软件工程中的软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),即为MVC。它是一种软件设计的典范,最早为...

    Java listener简介_动力节点Java学院整理

    Java Listener 简介 Java Listener 是一种特殊的类,用于监听 ServletContext、HttpSession、ServletRequest 等域对象的创建、销毁、以及属性的变化等。监听器可以在事件发生前、发生后进行一些处理,例如统计用户...

    Java实训教程 Java软件开发实战 web开发技术 第6章 listener 共21页.pptx

    监听器简介 监听器是一种特殊的技术,用于监测服务器端对象(如`ServletContext`、`HttpSession`、`ServletRequest`)的创建和销毁等事件,并在此基础上执行相应的业务逻辑。这种机制使得开发者能够在系统层面做...

    quartz servletcontext配置资料

    ### Quartz简介 Quartz 提供了一个完全线程化的事件调度器,支持复杂的时间表和触发器,可以实现精确的任务调度。它支持Cron表达式,可以方便地设置任务执行的时间规则。同时,Quartz还提供了持久化能力,即使应用...

    网络应用开发 之 监听对象的属性变更

    ### 监听器简介 监听器是Java Servlet API提供的一种机制,它允许我们注册到特定事件源,当该事件源发生特定事件时,监听器会接收到通知并执行相应的操作。在Web应用中,监听器可以用来跟踪用户的会话、监控上下文...

Global site tag (gtag.js) - Google Analytics