十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
JAVA 的列表 方式 迅雷的 是执行任务后定时排队列表
成都创新互联公司专业为企业提供炎陵网站建设、炎陵做网站、炎陵网站设计、炎陵网站制作等企业网站建设、网页设计与制作、炎陵企业网站模板建站服务,十多年炎陵做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
以下思路 ,
1)java.util.Timer.
2)ServletContextListener.
3)org.springframework.scheduling.timer.ScheduledTimerTask
1)java.util.Timer
这个方法应该是最常用的,不过这个方法需要手工启动你的任务:
Timer timer=new Timer();
timer.schedule(new ListByDayTimerTask(),10000,86400000);
这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。
2)ServletContextListener
这个方法在web容器环境比较方便,这样,在web server启动后就可以
自动运行该任务,不需要手工操作。
将ListByDayListener implements ServletContextListener接口,在
contextInitialized方法中加入启动Timer的代码,在contextDestroyed
方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:
listener
listener-classcom.sysnet.demo.util.MyTimerTask/listener-class
/listener
3)org.springframework.scheduling.timer.ScheduledTimerTask
如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer
.xml中加入下面的内容就可以了:
?xml version="1.0" encoding="UTF-8"?
!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" ""
beans
bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean"
property name="scheduledTimerTasks"
list
ref local="MyTimeTask1"/
/list
/property
/bean
bean id="MyTimeTask" class="com.qq.timer.ListByDayTimerTask"/
bean id="MyTimeTask1" class="org.springframework.scheduling.timer.ScheduledTimerTask"
property name="timerTask"
ref bean="MyTimeTask"/
/property
property name="delay"
value10000/value
/property
property name="period"
value86400000/value
/property
/bean
/beans
下面给出方法2的一个例子供大家参考:
Java代码:
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyTimerTask implements ServletContextListener{
private Timer timer = null;
@Override
public void contextDestroyed(ServletContextEvent event) {
// TODO Auto-generated method stub
timer.cancel();
event.getServletContext().log("定时器销毁");
System.out.println("停止备份程序……");
}
@Override
public void contextInitialized(ServletContextEvent event) {
//在这里初始化监听器,在tomcat启动的时候监听器启动,考试,大提示可以在这里实现定时器功能
timer = new Timer(true);
event.getServletContext().log("定时器已启动");//添加日志,可在tomcat日志中查看到
timer.schedule(new exportHistoryBean(event.getServletContext()),0,5*1000);//调用exportHistoryBean,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时;
}
}
import java.util.Calendar;
import java.util.TimerTask;
import javax.servlet.ServletContext;
public class exportHistoryBean extends TimerTask
{
private static final int C_SCHEDULE_HOUR = 0;
private static boolean isRunning = false;
private ServletContext context = null;
public exportHistoryBean(ServletContext context)
{
this.context = context;
}
@Override
public void run()
{
Calendar c = Calendar.getInstance();
if(!isRunning)
{
if(C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY))
{
isRunning = true;
context.log("开始执行指定任务");
isRunning = false;
context.log("指定任务执行结束");
}
else
{
context.log("上一次任务执行还未结束");
}
}
}
}
web.xml里加入一下代码:
listener
listener-classcom.sysnet.demo.util.MyTimerTask/listener-class
/listener
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JListDemo extends JFrame {
private JPanel topPanel;
private JList listbox;
public JListDemo(){
setTitle( "Simple ListBox Application" );
setSize( 300, 100 );
setBackground( Color.gray );
topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
getContentPane().add( topPanel );
String listData[] =
{
"Item 1",
"Item 2",
"Item 3",
"Item 4"
};
listbox = new JList( listData );
topPanel.add( listbox, BorderLayout.CENTER );
}
public static void main( String args[] ) {
JListDemo mainFrame = new JListDemo();
mainFrame.setVisible( true );
}
}
这个类叫什么名字也不知道,在jsp页面写就和你写java代码一个样只不过,你把java的system.out.println();改为页面的输出就行了
%
ListAnnouncement list =你这类的名字.findAll();
for(Announcement announcement:list){
%
%= announcement.get属性();%
%
}
%
这样应该能完成,也是最简单的。