JAVA web实现可控制定时器

看了下大部分的JAVA Web的请求方式都是使用在Web.xml中配置监听器实现!

这里自己写了个Timer能同样达到一样的要求!而且可以自己控制 启动或关闭,而且可以设置1天内在6,9,12点执行该定时器,感觉

听灵活的!

啥样呢?

后台代码如下:

/**
 * @author qiyulin
 * @date 2016 05 06
 * */
@Controller()
@Scope("prototype")
public class MapAction extends GenericAction{

	private static final long serialVersionUID = -8570260939683969514L;

	private static MyTimer mt ;

	//定时器数据同步
	private String msg;
	public String timer(){
		String on = request().getParameter("on");
		String times = request().getParameter("times");
		if(empty(times)) times = "1";
		if(!empty(on)&&"yes".equals(on)){
			//启动定时器
			mt =new MyTimer(times);
			mt.start(new MyTimerCallback(){
				public void finshed(int status) {
					switch(status){
						case 1:
							System.err.println("定时器:已触发");
							break;
						case 0:
							System.err.println("定时器:未触发");
							break;
					}
				}
			});
			msg="定时器已被启动";
		}else if(!empty(on)&&"no".equals(on)){
			//关闭定时器
			if(mt!=null){
				mt.end(new MyTimerCallback(){
					public void finshed(int status) {
						//do something
						System.out.println("定时器:已关闭");
					}
				});
			}
			msg="定时器已被关闭";
		}else{
			msg="Welcome to Timer";
		}
		return AppConstants.RETURN_TYPE_FREEMARKER;
	}

	//空判断
	private boolean empty(Object obj){
		if(null!=obj&&!"".equals(obj)){
				return false;
		}
		return true;
	}
	//内部类
	class MyTimer{
		private String hours;
		private Timer timer = new Timer(true);
		public MyTimer(String hours) {
			this.hours = hours;
		}
		public void start(final MyTimerCallback callback){
			timer.schedule(new TimerTask(){
				@SuppressWarnings("deprecation")
				@Override
				public void run() {
					 Calendar cal = Calendar.getInstance();
					 String hs[] = hours.split(",");
					 int hour= cal.getTime().getHours();
					 boolean b=Arrays.asList(hs).contains(String.valueOf(hour));
					 if(b){
						 callback.finshed(1);
					 }else{
						 callback.finshed(0);
					 }
				}
			}, 0,10*1000);
		}
		public void end(MyTimerCallback callback){
			timer.cancel();
			callback.finshed(2);
		}
	}
	//回调
	interface MyTimerCallback{
		void finshed(int status);
	}
	public String getMsg() {
		return msg;
	}

	public void setMsg(String msg) {
		this.msg = msg;
	}
}

页面代码如下:

<html>
<head>
	<meta charset="utf-8" />
	<title>系统定时器管理工具</title>
</head>
<body>
	<h1 style="color: red">Welcome to Timer</h1>
	<h2>Open Timer</h2>
	<form action="Map_timer.action" method="post">
		<input type="hidden" value="yes" name="on"/>
		<p>1天内执行定时器的小时点:<input type="text" name="times" value="1" /> 备注:1天内在6,9,12点执行该定时器,则填写: 3,6,9</p>
		<p><input type="submit" value="启动定时器"/></p>
	</form>
	<hr>
	<h2>Close Timer</h2>
	<form action="Map_timer.action" method="post">
		<input type="hidden" value="no" name="on"/>
		<p><input type="submit" value="停止定时器"/></p>
	</form>
</body>
</html>

感觉挺好用的,哈哈,下班....

原创:http://blog.csdn.net/qilin001cs

时间: 2024-11-07 23:56:04

JAVA web实现可控制定时器的相关文章

java web环境搭建

1. 根据自己电脑版本下载对应的tomcat和eclipse安装包 2. 在eclipse中找到preferences 找到 runtime environments 找到add 3. 选择tomcat的版本 next 4. 选择browse  tomcat解压的地方选择对应的版本,最后finsih 5. 数据库方面 只需要下载Mysql的安装包即可. 最后完成了java web环境的搭建.

Java Web -- Servlet(1) 必备知识

学习Java WEB开发必备的基本概念: 1.WEB 本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思.现广泛译作网络.互联网等技术领域.表现为三种形式,即超文本(hypertext).超媒体(hypermedia).超文本传输协议(HTTP)等. 2.静态网页(可简单理解为html) 是指网页的内容是固定的,不会根据浏览器者的不同需求而改变.(实实在在保存在服务器上的文件) 3.动态网页 是指在接到用户访问要求后动态生成的页面,页面内容会随着访问时间和访问者发生变化(并不是独立存在于服务

[Java Web]2\Web开发中的一些架构

1.企业开发架构: 企业平台开发大量采用B/S开发模式,不管采用何种动态Web实现手段,其操作形式都是一样的,其核心操作的大部分都是围绕着数据库进行的.但是如果使用编程语言进行数据库开发,要涉及很多诸如事务.安全等操作问题,所以现在开发往往要通过中间件进行过渡,即,程序运行在中间件上,并通过中间件进行操作系统的操作,而具体一些相关的处理,如事务.安全等完全由中间件来负责,这样程序员只要完成具体的功能开发即可. 2.Java EE架构: Java EE 是在 Java SE 的基础上构建的,.NE

在java web项目中集成webservice

公司要求在项目中加入webservice服务,因为项目中使用了spring框架,所以在这里使用与spring兼容性较好的cxf来实现 cxf所需jar包 spring的jar包就不贴了 一:创建webservice服务器 1)创建一个服务接口 package com.service; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface IHelloWorld { public S

Java Web项目中缺少Java EE 6 Libraries怎么添加

具体步骤如下: 1.项目名称上点击鼠标右键,选择"Build Path-->Configure Build Path-->Java Build Path" 2.单击"Add Library..." 3.选择"User Library",单击"Next" 4.单击"User Libraries...",选择需要的Java EE 6 Libraries Java Web项目中缺少Java EE 6

java web 程序---购物车选商品,购买,付款

虚函数使用的时机 为什么虚函数不总是适用? 1. 虚函数有事会带来很大的消耗: 2. 虚函数不总是提供所需的行为: 3. 当我们不考虑继承当前类时,不必使用虚函数. 必须使用虚函数的情况: 1. 当你想删除一个表面上指向基类对象,实际却是指向派生类对象的指针,就需要虚析构函数. java web 程序---购物车选商品,购买,付款,布布扣,bubuko.com

使用Struts框架的Java Web项目中的两个Session的区别和常见的Session取值为空的错误

我的百度知道回答,感觉这个知识很有意义,专门贴出来. 不过还有待验证的地方,就是 ActionContext.getContext().getSession("name", "Tom"); //如果在JSP中通过 EL 或者 Struts2 标签怎么显示? 以下是回答正文. 很多初学Java Web的同学因为使用 Strut2框架而分不清两个 Session的区别. 1.   JSP/Servlety有个原生的 session 对象,这是9大内置对象中的一个,书上写

java Web(2)

Servlet与web容器的配合: 1)客户端向Web服务器发起一个HTTP请求. 2)HTTP请求被Web服务器接受,如果请求的是静态页面,则由Web服务器负责处理.如果请求的是Java Web组件(Servlet或者JSP),则移交给Web容器.Web容器可以在主               机的同一个进程.不同的进程或其他的Web服务主机的进程中启动. 3)Web容器根据Servlet的配置文件确定调用的具体Servlet类,并把request对象.response对象传给它. 4)Ser

java web 数据库开发1

一个完整的数据库部署架构通常由客户端和服务器端两部分组成.客户端封装数据库请求将其发送给服务器端,服务器端执行完毕将其及结果返回给服务器端. 以mysql为例 介绍java应用程序对数据库的访问 JDBC意义:应用程序通过调用统一接口实现对任意数据库的访问,为我们屏蔽了客户端与服务器端交互协议的实现细节. 对java而言,JDBC是一个类库,对数据库而言,JDBC是接口规范. 有了JDBC,应用程序变得更加简单,提高了程序开发的效率,使java web面向不同的数据库时,具有跨平台性,基于JDB