使用场景:
在平常web开发过程中,有时操作员要做一个后台会运行很长时间的任务(如上传一个大文件到后台处理),而此时前台页面仍需要给用户及时的进度信息反馈,同时还要避免前台页面超时。
框架介绍:
本架构采用Struts+Spring+AJAX(jquery)方式实现,前台提交任务到后台,然后通过AJAX方式周期性获取任务进度,展示给用户看。
本框架支持提交任务、查看任务进展、停止任务、删除任务。
使用java线程池的技术来执行任务,避免不停的生成新的线程;
代码下载(内含使用样例):
https://github.com/jerrymousecn/daemo_tasks
下载包说明:
1)demo/daemonTasks.war为tomcat发布包(zip格式),可以直接放到tomcat的webapps目录;
2)demo/demo_source目录是eclipse样例项目代码
3)source目录是本框架源代码
主要代码:
1.DaemonTask.java
后台任务基础类
package cn.jerry.tools.tasks;
import java.util.Date;
public abstract class DaemonTask implements Runnable {
private String taskID;
private String taskName;
private String taskDesc;
private boolean isStartedFlag = false;;
private boolean isTerminated = false;;
private int progress;
private Date startTime;
private Date terminatedTime;
protected boolean toStopFlag = false;
protected abstract void execute();
protected void setProgress(int progress) {
this.progress = progress;
}
public void run() {
this.isStartedFlag = true;
this.execute();
this.isTerminated = true;
this.terminatedTime = new Date();
}
public String getTaskID() {
return taskID;
}
public void setTaskID(String taskID) {
this.taskID = taskID;
}
public boolean isSt