`
bj_liuhuibin
  • 浏览: 21399 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

监听定时器

 
阅读更多
web.xml配置监听定时器代码======================================================
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<display-name>Name</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
   
   
   
    <!-- Spring ApplicationContext配置文件的路径可使用*通配符,多个路径用*,号分隔此参数用于后面的Spring-Context loader -->

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/spring/applicationContext.xml</param-value>
</context-param>

<!-- 全局变量-->
<context-param>
<param-name>appValue</param-name>
<param-value>false</param-value>
</context-param>

    <!--配置过滤器-->
    <filter>
        <filter-name>ActionFilter</filter-name>
<!--过滤类文件路径-->
        <filter-class>com.xx.ActionFilter</filter-class>       
        <init-param>
            <param-name>xx</param-name>
            <param-value>true</param-value>           
        </init-param>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>           
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>ActionFilter</filter-name>
        <url-pattern>/*</url-pattern>       
    </filter-mapping>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>   

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
       
    </filter-mapping>
    <!--加载spring配置文件applicationContext.xml-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>   
    <!--项目启动 开启监听对应的类文件-->
     <listener>
        <listener-class>taskListener</listener-class>
    </listener>
</web-app>

JSP文件代码====================================================================

//ajax操作
$(function() {
$("#toSynchronize").click(function(){
//var activity_no = $("#activity_no").val();
$.post("${path}/xx/xx_messageMethod.do",
//{ "activity_no":"activity_no"},
function(data){
  if(data=="ex"){
     alert("可以进行操作!");
  }else{
    alert(今天已经操作过一次,请明天再警醒操作!);
  }
}
)
});

});

<input type="button" name="toSynchronize" id="toSynchronize" value="一天只可操作一次"/>


ACTION接收AJAX信息============================================================
//返回提示信息,是否可进行操作
public String messageMethod(){
     request=ServletActionContext.getRequest();
     //当天是否还可以进行操作状态false:可以操作true:不可以操作
     //全局是否存在变量toSynchronizeType
     String toSynchronizeType=(String) ServletActionContext.getServletContext().getAttribute("toSynchronizeType");
     //从配置文件web.xml中取得初始全局变量toSynchronizeType
     String initToSynchronizeType=ServletActionContext.getServletContext().getInitParameter("toSynchronizeType");
     boolean blean=false;
try{
  if(toSynchronizeType!=null && !"".equals(toSynchronizeType)){
    //如果全局中存在toSynchronizeType全局变量,并且值为false是 返回可操作提示信息
    //同时设定变量值为true
    if(toSynchronizeType.equals("false")){
ServletActionContext.getServletContext().setAttribute("toSynchronizeType", "true");
//要进行的操作编码省略
ServletActionContext.getResponse().getWriter().print("ex");
    //如果为true,返回不可操作信息
    }else{
ServletActionContext.getResponse().getWriter().print("notEx");
    }
    //如果全局中不存在toSynchronizeType变量,则判断初始全局变量,如果为falae,则返回可操作提示信息
    //同时给定全局变量为true
  }else{
    if(initToSynchronizeType.equals("false")){
ServletActionContext.getServletContext().setAttribute("toSynchronizeType", "true");
//要进行的操作编码省略
ServletActionContext.getResponse().getWriter().print("ex");
     }
   }
}catch(Exception e){
      blean=false;
      e.printStackTrace();
  }
    request.setAttribute("blean", Boolean.toString(blean));
    return null;
}



监听定时器类=========================================================================
import java.util.Timer;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
* 监听定时器
      
* 实现ServletContextListener
*
*/
public class taskListener implements ServletContextListener{

public void contextDestroyed(ServletContextEvent event) {
}

public void contextInitialized(ServletContextEvent contextEvent) {
          //获得ServletContext
  ServletContext servletContext = contextEvent.getServletContext();
  //取得web.xml文件中的初始变量值
  String toSynchronizeType=servletContext.getInitParameter("toSynchronizeType");
  //声明定时器
  Timer timer = new Timer();
  //每小时执行一次任务
          timer.schedule(new task(servletContext),0,3600*1000);
}

}



定时任务类===========================================================================
import java.util.Calendar;
import java.util.TimerTask;
import javax.servlet.ServletContext;
/**
* 定时器任务类
*
*
*/
public class task extends TimerTask {

ServletContext servletContext=null;

private static final int C_SCHEDULE_HOUR = 0;

//构造函数
public task(ServletContext servletContext){

   this.servletContext=servletContext;
}

    public void run() {
        Calendar cal = Calendar.getInstance();
        //每天零点执行更新
        if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY))
        {
            try
            {
            System.err.println("定时任务开始==========================");
            //取得全局变量
            String toSynchronize=(String) servletContext.getAttribute("toSynchronizeType");
           
            System.out.println("现是否已經作状态="+toSynchronize);
           
            if(toSynchronize!=null && !toSynchronize.equals("")){
           
                System.out.println("正在重置状态=====================");
           
                if(toSynchronize.equals("true")){
           
            servletContext.setAttribute("toSynchronizeType", "false");

                    System.err.println("状态已经重置,可以进行操作了.........");
    }
           

            }
              
            } catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    }
}
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    web监听器代码--监听servlet

    在给定的文件名称“web监听定时器”中,可能包含的是一个实现定时任务的监听器。定时任务在Web应用中通常用于定期执行某些操作,例如数据同步、统计分析等。可以使用`java.util.Timer`或`java.util.concurrent....

    java监听器之定时器

    监听器之定时器,写一个定时器的监听器,这个监听器每十秒向控制台输出一次时间信息 博客地址:https://blog.csdn.net/qq_36631076/article/details/80401609

    定时器管理类

    3. **事件循环**:定时器管理类通常与事件循环结合使用,事件循环负责监听定时器的到期并触发相应的回调函数。 4. **线程安全**:在多线程环境下,定时器管理类需要考虑线程安全问题,确保在并发访问时数据的一致性...

    jboss-seam定时器

    6. **监听定时器事件**: - 使用`@Observer`注解监听`TimerService.TIMER_EXPIRED`事件,可以在定时器触发时执行相应操作。 7. **取消定时器**: - 通过`TimerService.cancelTimer()`方法可以取消已创建的定时器...

    MSP 定时器,供学习参考

    - 监听定时器中断并作出相应 7. **应用示例** - **延时函数**:通过配置定时器为周期定时模式,可以实现不同时间长度的软件延时。 - **PWM生成**:通过比较/捕获模式,定时器可以生成脉宽调制信号,用于电机控制...

    python_epoll_timer.rar

    它可能使用了epoll的`EPOLLIN`事件来监听定时器文件描述符的变化,当有定时器到期时,会收到一个事件通知。 `timer_queue_test.py`是测试脚本,运行这个脚本可以验证`timer_queue.py`的功能是否正常。测试通常会...

    js飞机大战网页版小游戏

    例如,监听键盘事件来控制飞机移动,监听鼠标事件来发射子弹,以及监听定时器事件来更新游戏状态。 7. 数据结构与算法:游戏中可能用到数组、对象等数据结构来存储飞机、子弹和敌机的状态。同时,可能会用到搜索...

    VC 定时重启、关机或注销程序.rar

    5. **程序设计模式**:为了将这个小程序扩展为一个更完善的关机助手软件,你可以考虑采用设计模式,如观察者模式(Observer Pattern)来监听定时器事件,或者工厂模式(Factory Pattern)来创建不同类型的定时任务。...

    后台定时提醒 C程序

    4. **无限循环**:为了让程序持续运行并监听定时器,程序主体通常包含一个无限循环。在每次循环中,检查是否有信号到达,如果有,则执行相应的处理。 5. **提醒逻辑**:根据实际需求,编写提醒的逻辑代码。这可能...

    弹出消息提示 源代码 PopupWin.dll第三方控件

    在Web开发中,JavaScript可以监听定时器事件,通过Ajax异步请求获取服务器上的新消息,然后在前端动态更新页面。 实现这样的功能需要注意性能优化,避免频繁的数据库查询对系统资源造成过多消耗。此外,还要考虑...

    QT中动态曲线绘制(已经实现在主窗口中显示)

    在这里,我们可能需要监听定时器事件,当定时器触发时更新曲线数据并调用`update()`或`repaint()`方法来触发重绘。 具体实现步骤大致如下: 1. 创建`DynamicCurveWidget`类,继承自`QWidget`。 2. 在`...

    定时关机程序

    4. **多线程**:在某些实现中,可能需要创建一个新的线程来监听定时器,以免阻塞主程序。C++11引入了`&lt;thread&gt;`库,提供了创建和管理线程的功能。 5. **事件处理**:为了在定时器到达时执行关机操作,程序需要监听...

    ios-轮播图封装.zip

    8. **KVO(Key-Value Observing)**:为了实时监听定时器的状态并相应地控制轮播,可以使用KVO来观察定时器的valid属性。 9. **内存管理**:在处理大量图片时,需要考虑内存优化,比如使用惰性加载、缓存策略以及...

    Clock_java_

    对于时钟,我们需要创建一个`ActionListener`来监听定时器的事件,当事件触发时,更新时钟显示的时间。 以下是一个简化的代码示例: ```java import javax.swing.JFrame; import javax.swing.JLabel; import javax...

    vb实现定时关机~~~

    在这里,我们需要监听定时器的Tick事件,并在每次触发时更新倒计时。 6. **错误处理**:良好的编程实践要求我们对可能出现的错误进行处理,例如用户输入无效时间或者在倒计时期间取消关机等。 7. **程序结构**:VB...

    Java 实现简单的动画

    在动画中,可能需要监听定时器的事件,执行相应的动画逻辑。 6. **JCreator**: 这是给定标签中的一个关键词,JCreator是一款流行的Java集成开发环境(IDE),它为编写、调试和运行Java程序提供了便利的工具。初学者...

    易语言趣味编程之任务管理器画正弦曲线

    在我们的例子中,可能需要监听定时器事件和用户交互事件。 6. **错误处理**:在编程过程中,应考虑到可能出现的错误情况,如API调用失败、资源分配错误等,合理地添加错误处理代码,保证程序的稳定性和用户体验。 ...

    ios-WJAdvertCircle.zip

    可能会使用KVO来监听定时器的状态,以便在合适的时间更新UI或者执行其他操作。 9. **协议与代理(Protocol & Delegate)**: 为了实现广告视图与父控制器之间的通信,可以定义一个协议,让父控制器作为代理来处理...

    TIMER_定时器外部触发配置_

    5. **开启定时器**:最后,启动定时器,使CH1通道处于监听状态,等待外部脉冲的到来。 在提供的"TIMER.C"文件中,你应该能找到具体实现这些配置的代码片段。文件可能包括定时器的初始化函数、中断服务例程以及可能...

    Java游戏编程从入门到精通

    - **`ActionListener`**:监听定时器事件,每当定时器触发时,就会调用`actionPerformed`方法。 - 在方法中更新圆形的位置,并调用`repaint()`方法来重新绘制图形。 - **`g.fillOval(x, y, 20, 20);`**:根据变量`x...

Global site tag (gtag.js) - Google Analytics