需求: 当我们的网站启动的时候,可能会要求初始化一些数据,(比如创建临时表), 在比如:
我们的网站有一些要求定时完成的任务[ 定时写日志,定时备份数据.. 定时发送邮件..]
解决方法: 可以通过<load-on-startup> 配合 线程知识搞定.
先说明<load-on-startup>: 通过配置<load-on-startup> 我们可以指定某个Servlet 自动创建.
我们来模拟一个定时发送电子邮件的功能:
实现思路:
sendEmailTable
id content sendtime
1 “hello” 2011-11-11 20:11
2 “hello2” 2012-11-11 10:00
看看如何线程去完成任务:
这里的代码请参考项目:
SendMailThread.java
package com.hsp.model;
public class SendEmailThread extends Thread{
@Override
public void run() {
int i=0;
try {
while(true){
//每休眠一分钟,就去扫表sendmail,看看那份信件应当被发出
Thread.sleep(10*1000);
System.out.println("发出第"+(++i)+"邮件");//javamail
}
} catch (Exceptione) {
e.printStackTrace();
// TODO: handle exception
}
}
}
MyInitServlet1.java
public void init() throwsServletException {
// Putyour code here
System.out.println("MyInitServlet1的init被调用..");
//完成一些初始化任务
System.out.println("创建数据库,表,读取参数");
//创建一个线程
SendEmailThread sendEmailThread=new SendEmailThread();
sendEmailThread.start();
}
|
说明:
<!-- 1表示该servlet被 init的顺序 -->
<load-on-startup>1</load-on-startup>
删除掉url的映射:
加入标签:
程序结果图: