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监听定时器”中,可能包含的是一个实现定时任务的监听器。定时任务在Web应用中通常用于定期执行某些操作,例如数据同步、统计分析等。可以使用`java.util.Timer`或`java.util.concurrent....
监听器之定时器,写一个定时器的监听器,这个监听器每十秒向控制台输出一次时间信息 博客地址:https://blog.csdn.net/qq_36631076/article/details/80401609
3. **事件循环**:定时器管理类通常与事件循环结合使用,事件循环负责监听定时器的到期并触发相应的回调函数。 4. **线程安全**:在多线程环境下,定时器管理类需要考虑线程安全问题,确保在并发访问时数据的一致性...
6. **监听定时器事件**: - 使用`@Observer`注解监听`TimerService.TIMER_EXPIRED`事件,可以在定时器触发时执行相应操作。 7. **取消定时器**: - 通过`TimerService.cancelTimer()`方法可以取消已创建的定时器...
- 监听定时器中断并作出相应 7. **应用示例** - **延时函数**:通过配置定时器为周期定时模式,可以实现不同时间长度的软件延时。 - **PWM生成**:通过比较/捕获模式,定时器可以生成脉宽调制信号,用于电机控制...
它可能使用了epoll的`EPOLLIN`事件来监听定时器文件描述符的变化,当有定时器到期时,会收到一个事件通知。 `timer_queue_test.py`是测试脚本,运行这个脚本可以验证`timer_queue.py`的功能是否正常。测试通常会...
例如,监听键盘事件来控制飞机移动,监听鼠标事件来发射子弹,以及监听定时器事件来更新游戏状态。 7. 数据结构与算法:游戏中可能用到数组、对象等数据结构来存储飞机、子弹和敌机的状态。同时,可能会用到搜索...
5. **程序设计模式**:为了将这个小程序扩展为一个更完善的关机助手软件,你可以考虑采用设计模式,如观察者模式(Observer Pattern)来监听定时器事件,或者工厂模式(Factory Pattern)来创建不同类型的定时任务。...
4. **无限循环**:为了让程序持续运行并监听定时器,程序主体通常包含一个无限循环。在每次循环中,检查是否有信号到达,如果有,则执行相应的处理。 5. **提醒逻辑**:根据实际需求,编写提醒的逻辑代码。这可能...
在Web开发中,JavaScript可以监听定时器事件,通过Ajax异步请求获取服务器上的新消息,然后在前端动态更新页面。 实现这样的功能需要注意性能优化,避免频繁的数据库查询对系统资源造成过多消耗。此外,还要考虑...
在这里,我们可能需要监听定时器事件,当定时器触发时更新曲线数据并调用`update()`或`repaint()`方法来触发重绘。 具体实现步骤大致如下: 1. 创建`DynamicCurveWidget`类,继承自`QWidget`。 2. 在`...
4. **多线程**:在某些实现中,可能需要创建一个新的线程来监听定时器,以免阻塞主程序。C++11引入了`<thread>`库,提供了创建和管理线程的功能。 5. **事件处理**:为了在定时器到达时执行关机操作,程序需要监听...
8. **KVO(Key-Value Observing)**:为了实时监听定时器的状态并相应地控制轮播,可以使用KVO来观察定时器的valid属性。 9. **内存管理**:在处理大量图片时,需要考虑内存优化,比如使用惰性加载、缓存策略以及...
对于时钟,我们需要创建一个`ActionListener`来监听定时器的事件,当事件触发时,更新时钟显示的时间。 以下是一个简化的代码示例: ```java import javax.swing.JFrame; import javax.swing.JLabel; import javax...
在这里,我们需要监听定时器的Tick事件,并在每次触发时更新倒计时。 6. **错误处理**:良好的编程实践要求我们对可能出现的错误进行处理,例如用户输入无效时间或者在倒计时期间取消关机等。 7. **程序结构**:VB...
在动画中,可能需要监听定时器的事件,执行相应的动画逻辑。 6. **JCreator**: 这是给定标签中的一个关键词,JCreator是一款流行的Java集成开发环境(IDE),它为编写、调试和运行Java程序提供了便利的工具。初学者...
在我们的例子中,可能需要监听定时器事件和用户交互事件。 6. **错误处理**:在编程过程中,应考虑到可能出现的错误情况,如API调用失败、资源分配错误等,合理地添加错误处理代码,保证程序的稳定性和用户体验。 ...
可能会使用KVO来监听定时器的状态,以便在合适的时间更新UI或者执行其他操作。 9. **协议与代理(Protocol & Delegate)**: 为了实现广告视图与父控制器之间的通信,可以定义一个协议,让父控制器作为代理来处理...
5. **开启定时器**:最后,启动定时器,使CH1通道处于监听状态,等待外部脉冲的到来。 在提供的"TIMER.C"文件中,你应该能找到具体实现这些配置的代码片段。文件可能包括定时器的初始化函数、中断服务例程以及可能...
- **`ActionListener`**:监听定时器事件,每当定时器触发时,就会调用`actionPerformed`方法。 - 在方法中更新圆形的位置,并调用`repaint()`方法来重新绘制图形。 - **`g.fillOval(x, y, 20, 20);`**:根据变量`x...