1.建一个web工程。
2.建立一个Servlet类,并配置web.xml。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>wslyjk</display-name>
<!-- 从接口获取网上留言 -->
<servlet>
<servlet-name>servletgetwsly</servlet-name>
<servlet-class>com.zrar.servlet.ServletGetWsly</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>servletgetwsly</servlet-name>
<url-pattern>/servletgetwsly</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zrar.wslyjk.service.GetWslyService;
/**
* 外网留言数据导入
*/
public class ServletGetWsly extends HttpServlet{
private static final long serialVersionUID = 1L;
private static final String CONTENT_TYPE = "text/html; charset=GBK";
@Override
public void init() throws ServletException {
int iInterval = 10;
try {
iInterval = Integer.valueOf(PropertyManager.getProperty("intervalTime")).
intValue();
}
catch (Exception e) {
System.out.println("参数[interval]设置错误,必须为整数");
iInterval = 10;
}
GetWslyService getWsly = new GetWslyService(iInterval); //间隔 10 秒执行
getWsly.start();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>ServletLuceneGateWay</title></head>");
out.println("<body bgcolor=\"#ffffff\">");
out.println("<p>The servlet has received a GET. This is the reply.</p>");
out.println("</body></html>");
}
@Override
public void destroy() {
}
}
4.GetWslyService类
import java.util.Timer;
import java.util.TimerTask;
import com.zrar.system.Log;
/**
*
* @author hanjun
* 功能:根据webservice地址获得外网留言数据,并存入12333数据库中
*
*/
public class GetWslyService {
private final Timer timer = new Timer(); //定时器
private final int minutes; //间隔时间,单位为分钟
/**
* 构造函数
* @param minutes int
*/
public GetWslyService(int minutes) {
this.minutes = minutes;
}
/**
* 数据操作程序的入口
* 定时器开始执行
*
*/
public void start() {
timer.schedule(new TimerTask() {
java.text.SimpleDateFormat formatter
= new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public void run() {
Log.print(formatter.format(new java.util.Date()) +
":Timer Start.................................");
startGetWslyService();
Log.print(formatter.format(new java.util.Date()) +
":Timer Stop.................................");
}
}
, 0, minutes * 1000);
}
/**
* 开始lucene导库网关
*/
public void startGetWslyService() {
Log.print("开始从远程Webservice导入数据...........................");
try
{
//开始处理业务
}catch(Exception e)
{
Log.print("导入数据异常...........................");
}
Log.print("结束导入数据...........................");
}
}
总结:web项目的servlet可以在web工程被发布时就自启动,然后再调用其他类,主要通过java.util.timer类来定时执行程序。
增加可以控制什么时候启动的:
package com.zrar.test;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
private static int P_HOUR = 23; //执行任务开始时间(时)
private static int P_MINUTE = 0; //执行任务开始时间(分)
private static int P_SECOND = 0; //执行任务开始时间(秒)
private static long delay; //延时时间值(当前系统时间到下载时间之间的时间差毫秒数)
public static void main(String[] args) {
init();
}
/**
* 初始化参数
*
* @return
*/
public static void init(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//声明一个Calendar对象
Calendar cal = Calendar.getInstance();
//设置时间
cal.set(Calendar.HOUR_OF_DAY, P_HOUR);
cal.set(Calendar.MINUTE, P_MINUTE);
cal.set(Calendar.SECOND, P_SECOND);
Date date = new Date();
//获取设定的时间
date = cal.getTime();
//声明当前时间
Date now = new Date();
//获取设定的时间和当前的时间差(毫秒数)
long interval = date.getTime() - now.getTime();
//如果当前时间大于下载时间,则将下载时间设置为下一个下载时间
if (interval < 0) {
cal.add(Calendar.DAY_OF_MONTH, 1);//将天数加1
date = cal.getTime();
//获取设定的时间和当前的时间差(毫秒数)
interval = date.getTime() - now.getTime();
}
//初始化开始下载时间
delay = interval;//初始化当前时间到下载时间之间的时间差
}
}