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

ServletContextListener,Timer,TimerTask学习笔记

    博客分类:
  • java
阅读更多

1public abstract interface javax.servlet.ServletContextListener extends java.util.EventListener 。此类继承java的事件处理类EventListener, ServletContextListener有两个抽象方法。分别是:

 Apublic abstract void contextInitialized(javax.servlet.ServletContextEvent arg0);// 当web服务器启动的时候启动此方法

Bpublic abstract void contextDestroyed(javax.servlet.ServletContextEvent arg0);//当web服务器关闭的时候调用此方法,(但我在测试的时候却看不到它的调用)。

2假如我们像在web服务启动或则关闭的时候做一些事情,那么只需要写一个类实现ServletContextListener接口就可以了。

3一般会做定时的处理之类的操作,就要用到Timer :一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行。

Timer ()
          创建一个新计时器。
Timer (boolean isDaemon)
          创建一个新计时器,可以指定其相关的线程作为守护程序运行。
Timer (String  name)
          创建一个新计时器,其相关的线程具有指定的名称。
Timer (String  name, boolean isDaemon)
          创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行

 

void cancel ()
          终止此计时器,丢弃所有当前已安排的任务。
 int purge ()
          从此计时器的任务队列中移除所有已取消的任务。
 void schedule (TimerTask  task, Date  time)
          安排在指定的时间执行指定的任务。
 void schedule (TimerTask  task, Date  firstTime, long period)
          安排指定的任务在指定的时间开始进行重复的固定延迟执行
 void schedule (TimerTask  task, long delay)
          安排在指定延迟后执行指定的任务。
 void schedule (TimerTask  task, long delay, long period)
          安排指定的任务从指定的延迟后开始进行重复的固定延迟执行
 void scheduleAtFixedRate (TimerTask  task, Date  firstTime, long period)
          安排指定的任务在指定的时间开始进行重复的固定速率执行
 void scheduleAtFixedRate (TimerTask  task, long delay, long period)
          安排指定的任务在指定的延迟后开始进行重复的固定速率执行

 

 

TimerTask类:由 Timer 安排为一次执行或重复执行的任务。

方法摘要
 boolean cancel ()
          取消此计时器任务。
abstract  void run ()
          此计时器任务要执行的操作。
 long scheduledExecutionTime ()
          返回此任务最近实际 执行的安排 执行时间。

4我的测试代码:

web.xml 写道
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>servlet</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<listener>
<listener-class>com.servlet.listener.teslistener.MytestListener</listener-class>
</listener>

</web-app>

 

MytestListener 写道
package com.servlet.listener.teslistener;

import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MytestListener implements ServletContextListener {

private Timer timer = null;


@Override
public void contextInitialized(ServletContextEvent event) {
event.getServletContext().log("服务器正在启动。。。。。。。。");
timer = new Timer(true);
timer.schedule(new DoTask(), 0, 5 * 1000);
}

/* 当我手动在eclipse里关闭服务器,缺看不到这个方法的执行,
* 当程序在服务器上运行, 而我要改它代码的时候,
* 就能看到这个方法的运行,不知道是为什么 */
@Override
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
event.getServletContext().log("服务器已经关闭。。。。。。。");

}

}

 

DoTask 写道
package com.servlet.listener.teslistener;

import java.util.Calendar;
import java.util.Date;
import java.util.TimerTask;

public class DoTask extends TimerTask {

private static final int defaul_hour=0;
private static final String default_date = "2009-04-25 17:44:00";
@Override
public void run() {
int result=compare();
System.out.println("result is =========="+result);
if(result<0){
Calendar cal=Calendar.getInstance();
// if(cal.get(Calendar.HOUR_OF_DAY)==defaul_hour){
// showConsoleMessage();
// }

showConsoleMessage();
}
else{
System.out.println("时间已经到了,定时器不能在执行。。。。。。");
}
}

public void showConsoleMessage(){
int a=1;
int b=2;
System.out.println("a and b is:"+(a+b));
System.out.println("now time is "+new Date().toString());

}

public int compare(){
String currentTime=GetCurrentTime.getCurrentTime();
int result=TimeCompare.timeCompare(currentTime,default_date);
return result;
}

}

 

GetCurrentTime 写道
package com.servlet.listener.teslistener;

import java.text.SimpleDateFormat;
import java.util.Date;

public class GetCurrentTime {
/*获得当前时间*/
public static String getCurrentTime(){
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = formatter.format(currentTime);
return dateString;
}

}

 

TimeCompare 写道
package com.servlet.listener.teslistener;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class TimeCompare {
/*时间比大小*/
public static int timeCompare(String t1,String t2){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c1=Calendar.getInstance();
Calendar c2=Calendar.getInstance();
try {
c1.setTime(formatter.parse(t1));
c2.setTime(formatter.parse(t2));
} catch (ParseException e) {
e.printStackTrace();
}
int result=c1.compareTo(c2);
return result;
}

}
1
0
分享到:
评论

相关推荐

    java定时任务Timer和TimerTask使用详解

    在Java中,`java.util.Timer` 和 `java.util.TimerTask` 类提供了这样的功能,它们是JDK自带的,不需要引入额外的库。 1. **Timer类**: `Timer` 类是一个线程类,它可以安排在将来的某个时间点执行一个或多个任务...

    timer随tomcat启动案例

    在Java的Web应用开发中,有时我们需要在服务器启动时执行某些任务,比如数据初始化、定时任务等。...通过分析这些文件,可以更深入地理解和学习如何在Tomcat服务器启动时使用`Timer`进行任务调度。

    Timer定时器代码.zip

    在Java编程语言中,`Timer`和`TimerTask`是两个关键类,它们共同用于实现定时任务和计划程序。在大型企业级应用如Spring、Struts2和Mybatis的组合框架下,`Timer`和`TimerTask`可以发挥重要作用,比如进行后台数据...

    jsp/servlet个人学习笔记

    常见的监听器接口有 `HttpSessionListener`、`ServletRequestListener` 和 `ServletContextListener`。 7. **基础语法与内置对象** JSP 提供了多个内置对象,如 `request`(HttpServletRequest)、`response`...

    Servlet&JSP;学习笔记源代码

    这份"Servlet&JSP学习笔记源代码"是由林信良编著,提供了丰富的实例代码,旨在帮助学习者深入理解这两种技术。 Servlet是Java编程语言的一个接口,允许Java代码与HTTP服务器进行交互。它扩展了服务器的功能,使得...

    java定时任务,每天定时执行任务

    通过这个例子,我们可以了解 Java 定时任务的实现机制,并学习如何使用 Timer 和 TimerTask 来实现定时执行任务的功能。此外,我们还可以学习如何使用 Calendar 和 ServletContextListener 来实现每天定时执行任务的...

    ServletContextListener使用详解

    ServletContextListener 使用详解 ServletContextListener 是 Servlet API 中的一个接口,它能够监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。当 Servlet 容器启动或终止 Web 应用时,...

    javaWeb学习笔记+狂神说

    本学习笔记结合了“狂神说”的教学资源,旨在帮助初学者和有经验的开发者深入理解JavaWeb开发技术。 一、Servlet Servlet是Java Web应用程序的核心组件,用于扩展服务器的功能。它是一个Java类,遵循Java Servlet ...

    ServletContextListener socket实现数据接收

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

    Servlet&JSP学习笔记源代码

    在"Servlet&JSP学习笔记源代码"中,林信良教授通过实例讲解了这两项技术的基础和进阶知识。这些源代码是在Eclipse集成开发环境中创建的,Eclipse是Java开发的主流工具,支持丰富的插件,使得开发、调试和部署Servlet...

    java_Timer定时器实例_Spring实例

    在提供的代码片段中,`TimerListen`类实现了`ServletContextListener`接口,这意味着它会在Web应用启动和关闭时被调用。具体来说: - `contextInitialized()`方法在应用启动时初始化一个`Timer`对象,并安排了一个...

    ServletContextListener的应用

    根据提供的文件名`day28_table`,可能是与第28天学习或讨论关于数据库表的主题有关。这个文件可能包含了创建或删除表的SQL脚本,或者是一些关于如何在`ServletContextListener`中操作数据库表的示例代码或教学材料。...

    Java-Web定时器使用.doc

    Java Web定时器是一种在Web应用程序中定期执行特定任务的机制,它主要依赖于Java的`java.util.Timer`类和`java.util.TimerTask`类。在Java Web开发中,定时任务通常用于后台数据处理、定时备份、日志清理等场景。...

    Servlet学习笔记5

    ### Servlet学习笔记5 #### 一、Servlet与Filter的基本概念及使用 在Web开发中,Servlet作为Java EE标准的一部分,在处理HTTP请求时扮演着至关重要的角色。而在Servlet的应用过程中,Filter是一个非常重要的组件,...

    web学习笔记 —— 监听器

    本学习笔记主要聚焦于理解监听器的概念、作用以及如何在实际应用中使用它们。 一、监听器概述 监听器是实现了特定接口的Java类,这些接口定义了对特定事件的处理方法。例如,`HttpSessionListener`用于监听会话的...

    head_first_servlet&jsp学习笔记

    【Servlet&JSP基础知识】 ...以上是`head_first_servlet&jsp`学习笔记的主要知识点,涵盖了Servlet和JSP的基础、Web应用架构、MVC模式、会话管理和JSP编程等多个方面,为深入理解和实践Servlet与JSP开发奠定了基础。

    监听器的练习和学习笔记,代码

    本资料包"监听器的练习和学习笔记,代码"显然是为了帮助开发者理解和实践监听器的用法。下面将详细阐述监听器的相关知识点。 首先,我们了解什么是监听器。在Java中,监听器是一种接口,它定义了一组方法来处理特定...

    jsp定时执行的三种方法

    本文将详细介绍在JSP环境下实现定时执行任务的三种方法:利用`java.util.Timer`类、通过`ServletContextListener`接口以及采用Spring框架中的`ScheduledTimerTask`。 ### 1. 使用`java.util.Timer` `java.util....

    Java定时器

    本文将深入探讨Java定时器的原理与应用,通过实例演示如何使用`java.util.Timer`和`java.util.TimerTask`类来创建和管理定时任务。 #### 二、Java定时器基础 ##### 1. `java.util.Timer`类 `Timer`类位于`java....

Global site tag (gtag.js) - Google Analytics