`
woshixushigang
  • 浏览: 576091 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

JAVA配置时钟监听

阅读更多
package org.stephencat.listener;
import java.io.IOException;
import java.io.*;
import java.util.*;
import javax.servlet.*;
/**
 * 自动监听任务
 * @author stephen
 *
 */
public class PropertiesTask extends TimerTask {
    private ServletContext context = null;
    /**
     * 配置文件的最后更新时间
     */
    private long lastModified = 0;
    /**
     * 构造一个自动更新任务
     * @param context
     */
    public PropertiesTask(ServletContext context){
        this.context = context;
        System.out.println("A task instance is created now."); // 任务在整个 application 周期内只创建一次。
    }
    /**
     * 每次执行任务时显示一个随机数。
     */
    public void todoTestRandom(){
        System.out.println("Task running");
        context.setAttribute("random", String.valueOf(Math.random()));
        System.out.println((String)context.getAttribute("random"));
    }
    /**
     * 监听配置文件是否被更新。
     */
    public void todoTestFileStatus(){
        System.out.println("Getting file status");
        System.out.println(this.isFileUpdated("WEB-INF/platforms/test.properties"));
    }
    /**
     * 监听配置文件是否被更新,自动更新文件中的配置项存储到 application 变量中。
     */
    public void todo(){
        String filename = "WEB-INF/platforms/test.properties";
        if(this.isFileUpdated(filename)){
            System.out.println("Getting properties");
            try{
                this.loadProperties("test", filename);
            }catch(IOException ioe){
                System.err.println(ioe.getMessage());
            }
        }
        System.out.println("Test value is: " + this.getTestProperty("name"));
    }
    public void run() {
        todoTestRandom();
        todo();
        //todo();
    }
    /**
     * 判断物理文件是否已被更新
     * @param filename 物理文件名
     * @return 是 true 否 false
     */
    private boolean isFileUpdated(String filename){
        File file = new File(context.getRealPath(filename));
        if(file.isFile()){
            long lastUpdateTime = file.lastModified();
            if(lastUpdateTime > this.lastModified){
                System.out.println("The properties file was modified.");
                this.lastModified = lastUpdateTime;
                return true;
            }else{
                System.out.println("The properties file was not modified.");
                return false;
            }
        }else{
            System.out.println("The path does not point to a file.");
            return false;
        }
    }
    /**
     * 获取配置文件
     * @param key
     * @param filename
     * @return
     */
    public void loadProperties(String key, String filename) throws IOException{
        Properties prop = new Properties();
        InputStream stream = context.getResourceAsStream(filename);
        prop.load(stream);
        if(stream!=null){
            stream.close();
        }
        context.setAttribute(key, prop);
    }
    /**
     * 从 application 取配置项的值
     * @param key 配置项的键名
     * @return 配置项的值
     */
    public String getTestProperty(String key){
        Properties prop = (Properties)context.getAttribute("test");
        if(prop==null){
            return null;
        }else{
            return (String)prop.get(key);
        }
    }
}  



 

 

分享到:
评论

相关推荐

    Java数字时钟

    Java数字时钟是一种基于Java编程语言实现的时钟应用程序,它可以显示当前时间并通常具有一定的可视化效果。在Java中创建数字时钟涉及到多个关键知识点,包括图形用户界面(GUI)、事件处理、线程管理和时间日期处理...

    JAVA 模拟时钟实验报告

    【JAVA 模拟时钟实验报告】 在Java编程中,模拟时钟的实现是一个典型的图形用户界面(GUI)和多线程应用。本实验报告主要介绍了如何使用Java的AWT和Swing库来构建一个模拟时钟程序。下面将详细讨论相关知识点。 1....

    使用JAVA编制时钟程序

    6. **面向对象编程**:Java是面向对象的语言,时钟程序可能包含多个类,如`Clock`类表示时钟,`TimeDisplay`类负责显示时间,以及可能的`Config`类用于保存和读取用户配置。每个类都有其特定的功能,体现了面向对象...

    java真图时钟.zip_JAVA时钟_java 时钟_时钟 java_时钟 java

    4. **事件监听器**:如果时钟有额外的功能,如设置时间,可能会使用到事件监听器,如ActionListener或MouseListener。这使得用户可以与时钟交互,响应用户的操作。 5. **时间处理**:`java.util.Date`和`java.time`...

    java动态时钟案例

    在主函数中,实例化`JFrame`和时钟面板,将时钟面板添加到窗口,然后设置可见。最后,启动定时器。 8. **代码结构**: 通常,你会有一个主类(可能是`ClockApp`),负责初始化和运行程序,一个`ClockPanel`类,...

    Java时钟程序源代码

    Java时钟程序是一种基于Java编程语言实现的模拟时钟应用,它可以实时显示当前时间,并通常在GUI(图形用户界面)上以数字或指针形式展示。这个程序利用了Java的多线程特性,特别是`Thread`类或者`...

    java做的时钟

    6. 定时器和事件监听:为了使时钟动态更新,我们需要使用javax.swing.Timer类。创建一个定时器,每隔一秒触发一个事件,事件处理函数会更新JLabel的时间。 ```java Timer timer = new Timer(1000, new ...

    java模拟时钟及上级报告

    【Java模拟时钟课程设计详解】 一、设计目标与意义 Java模拟时钟课程设计的主要目的是将理论知识转化为实践操作,以检验和增强学生的编程能力。通过设计一个包含指针和数字显示的多功能时钟,学生可以巩固Java基础...

    java实现时钟

    5. **事件监听**:为了让时钟在用户界面中动态更新,需要设置事件监听器。例如,使用javax.swing.Timer类,可以设置一个定时触发的事件,每当时间改变时,就会调用指定的方法更新时钟显示。 6. **布局管理**:为了...

    java实验 时钟代码

    创建一个`javax.swing.Timer`对象,设置间隔为1000毫秒(1秒),并将其动作监听器设置为更新时间的函数。 以下是一个简单的Swing时钟应用示例: ```java import javax.swing.*; import java.awt.*; import java....

    Java显示时钟

    这可以通过在`JFrame`上设置一个窗口监听器来实现。 ```java frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); ``` 此外,如果你的程序包含多个源文件,那么你需要正确地组织它们并创建一个`main`方法作为...

    一个简易的JAVA数字时钟支持24时12时转换

    4. **事件监听器**: 为了实现时钟的实时更新,程序需要监听系统时间的变化。这可以通过添加`Timer`类或者注册一个`PropertyChangeListener`到`LocalTime`实例来实现。 5. **多线程**: 由于用户界面需要实时更新,...

    java图形时钟[源码][附图]

    在Java编程语言中,创建一个图形时钟是一个常见的学习任务,它可以帮助开发者了解图形用户界面(GUI)设计、事件处理以及时间管理等概念。在这个项目中,“java图形时钟[源码][附图]”提供了实现一个动态显示当前...

    Java GUI时钟程序

    Java GUI时钟程序是利用Java Swing或JavaFX库来创建一个图形用户界面,展示实时时钟的应用。在Java中,我们可以构建这样的程序来提供可视化的时间显示,这在教学、小型项目或者作为桌面小工具时非常实用。下面我们将...

    java编写的模拟时钟

    在Java编程领域,创建一个模拟时钟是一项常见的练习,它能帮助开发者理解图形用户界面(GUI)编程和事件处理的概念。本项目是一个基于Java实现的模拟小时钟,它利用图片来展示表盘和指针,增加了视觉效果的真实感。...

    java模拟时钟(新)

    在Java编程中,创建一个模拟时钟涉及到图形用户界面(GUI)的设计和事件处理,以及时间管理。这个项目的目标是构建一个窗口程序,其中包括一个模拟钟表和一个数字钟表,用户可以方便地通过菜单在两者之间切换。下面...

    java时钟_表盘数字

    项目的源代码可能包含几个类,如`ClockPanel`(负责绘制时钟的类)、`Main`(启动程序的类)和可能的配置或设置类。 9. **打包与发布**: 项目最终会被打包成一个`.jar`文件,用户可以直接运行。这可能通过Maven...

    Java模拟时钟

    这将涉及更多Java日期时间API的使用,以及事件监听和处理机制。 总之,通过这个"Java模拟时钟"项目,初学者可以学习到Java基础、线程管理、时间处理、GUI编程以及良好的编程习惯。实践这些知识将为后续更复杂的Java...

    java简易时钟

    通过设置间隔时间和事件监听器,我们可以确保时钟每秒钟正确地前进。 4. **ActionListener接口**: 要使`Timer` 在指定时间间隔执行任务,我们需要实现`ActionListener` 接口,并重写`actionPerformed(ActionEvent...

Global site tag (gtag.js) - Google Analytics