写一个listener 继承 ServletContextListener 在web.xml中配置。
listener的contextInitialized方法内创建一个定时执行的线程就好了。
我解决的问题是最近做的微信小程序项目中,定时删除用户上传文件的问题,,
我每个24小时检查一次,删除上传时间超过一天的图片,
/*
监听上下文,加载配置
实现ServletContextListener,实现相应方法
*/
public class ListenerLoadConfig implements ServletContextListener{
public static final long TOKEN_CHECKED_TIME=24*60*60*1000;
@Override
public void contextDestroyed(ServletContextEvent sce){
}
@Override
public void contextInitialized(ServletContextEvent event){
//加载数据库配置文件
String path=event.getServletContext().getRealPath("/WEB-INF/config/dbconfig.properties");
LoadDBconfig.load(path);
System.out.println(DBUtill.getConn());
Timer t=new Timer();
t.schedule(new MyTimer(),0,TOKEN_CHECKED_TIME);
}
}
监听上下文,加载配置
实现ServletContextListener,实现相应方法
*/
public class ListenerLoadConfig implements ServletContextListener{
public static final long TOKEN_CHECKED_TIME=24*60*60*1000;
@Override
public void contextDestroyed(ServletContextEvent sce){
}
@Override
public void contextInitialized(ServletContextEvent event){
//加载数据库配置文件
String path=event.getServletContext().getRealPath("/WEB-INF/config/dbconfig.properties");
LoadDBconfig.load(path);
System.out.println(DBUtill.getConn());
Timer t=new Timer();
t.schedule(new MyTimer(),0,TOKEN_CHECKED_TIME);
}
}
public class MyTimer extends TimerTask {
public void deleteFolder(File file){
File[] files=file.listFiles();
for(File f:files){
System.out.println(new Date().getTime());
//24*60*60*1000
if(new Date().getTime()-f.lastModified()>=24*60*60*1000*10){
System.out.println("删除文件"+f.getName());
f.delete();
}
}
}
public void run(){
File file=new File("/root/apache-tomcat-8.0.52/webapps/upload");
deleteFolder(file);
}
/*public static void main(String[] args){
Timer t=new Timer();
t.schedule(new MyTimer(),0,24*60*60*1000);
}*/
public void deleteFolder(File file){
File[] files=file.listFiles();
for(File f:files){
System.out.println(new Date().getTime());
//24*60*60*1000
if(new Date().getTime()-f.lastModified()>=24*60*60*1000*10){
System.out.println("删除文件"+f.getName());
f.delete();
}
}
}
public void run(){
File file=new File("/root/apache-tomcat-8.0.52/webapps/upload");
deleteFolder(file);
}
/*public static void main(String[] args){
Timer t=new Timer();
t.schedule(new MyTimer(),0,24*60*60*1000);
}*/
}