java Action里面每隔5秒去调用一个dao数据库查询类,当返回值满足条件或者时间到2分钟就停止调用

怎么写?RT

第1个回答  推荐于2016-08-23
package com.lvjj.entity;
import java.util.Date;
import java.util.TimerTask;
public class WrongTimerTask extends TimerTask {
private Date start; //开始时间
public Date getStart() {
return start;
}
public void setStart(Date start) {
this.start = start;
}
public void run() {
//调用Dao层

if (true) {//DAO层满足条件
this.cancel();
}
Date d = new Date();//当前时间
try {
long t = d.getTime()- start.getTime(); //当前时间减去开始时间
if(t==120000)//2分钟
this.cancel();//退出
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
------------------------上面是定时器类

package com.lvjj.main;
import java.util.Date;
import java.util.Timer;
import com.lvjj.entity.WrongTimerTask;
public class Time {
/**
* @param args
*/
public static void main(String[] args) {
try {
WrongTimerTask task = new WrongTimerTask();
Timer timer = new Timer("TestTimer");
task.setStart(new Date());
timer.scheduleAtFixedRate(task, 0, 1000);

} catch (Exception e) {
e.printStackTrace();
}
}
}

-----------------------上面是测试执行类
你只要把定时器类的调用DAO层方法和Dao层满足的条件改一下就可以了本回答被提问者采纳
第2个回答  2013-10-14
为什么是action里面呢?
如果非要在action里面的话可以考虑用ajax去调用action然后在js里面判断
如果非阻塞执行可以考虑用线程或者定时器本回答被网友采纳
第3个回答  2016-01-11
1.service为null的情况一般有几种情况:spring的配置文件没有配置;依赖注入由于写的不仔细而没有实现注入等原因。首先检查是否在spring的配置文件中注入了想要的service如果有,检查是否因为大小写的小错误而不能实现注入。
2.可以在action的这样处理:
让action继承一个自己编写的BaseAction 在让BaseAction去继承DispatchAction 在BaseAction中实现service的获取
public class BaseAction extends DispatchAction{
protected Object getBean(String id){
WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(this.servlet.getServletContext());
return context.getBean(id);
}
}
然后在action中就可以直接通过方法得到你想要的service。
IService service = (IService) getBean("想要的service");
就可以用service调用你的CRUD方法执行了。
这里主要用到的是spring的DI(依赖注入)spring的核心之一。