我tomcat开启以后,不想做任何触发,直接开始每秒执行一下一个类,如何在servlet中配置,然后对应的类应该怎么写?
我网上找了一个,但是出错,很抱歉啊,我是java新手,有些java的基础东西不太理解,希望大家指点一下。
<servlet>
<servlet-name>TimerTask</servlet-name>
<servlet-class>TimerTasks.RunTest</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
web.xml文件的配置
RunTest.java里面的写法
package TimerTasks;
import java.util.Timer;
import java.util.TimerTask;import javax.servlet.http.HttpServlet;public class RunTest extends HttpServlet{
public void init() {
Timer timer = new Timer();
//每十秒钟运行一次
timer.schedule(new TimerTask(),0,1000*10); 错误出现在这里TimerTask(),这个不知道为什么出错了
}
}
EveryDayTasks.java里面的写法
package TimerTasks;
import java.util.TimerTask;
public class EveryDayTasks extends TimerTask {
public void run(){
//search(); //在这里做您要做的事
System.out.println("ABC");
}
}
我网上找了一个,但是出错,很抱歉啊,我是java新手,有些java的基础东西不太理解,希望大家指点一下。
<servlet>
<servlet-name>TimerTask</servlet-name>
<servlet-class>TimerTasks.RunTest</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
web.xml文件的配置
RunTest.java里面的写法
package TimerTasks;
import java.util.Timer;
import java.util.TimerTask;import javax.servlet.http.HttpServlet;public class RunTest extends HttpServlet{
public void init() {
Timer timer = new Timer();
//每十秒钟运行一次
timer.schedule(new TimerTask(),0,1000*10); 错误出现在这里TimerTask(),这个不知道为什么出错了
}
}
EveryDayTasks.java里面的写法
package TimerTasks;
import java.util.TimerTask;
public class EveryDayTasks extends TimerTask {
public void run(){
//search(); //在这里做您要做的事
System.out.println("ABC");
}
}
解决方案 »
- 怎么看项目用什么框架呢?
- 邮件发送错误,高手帮忙看看,本人邮件菜鸟
- 如何在地址栏里输入http://localhost/就可以显示希望显示的JSP文件?
- jfreechart显示重复项的不同数据
- 大家说说用jsp,servlet开发web程序的时候,javaScript重要吗?需要好好学学吗?
- 怎么样定义一个空的Statement (在线等结)
- resin下的文件存放以及自动编译目录
- 评:《JSP编程指南》第二版 [美] Simon Brown 等著
- @@@@@@@@@@@如何实现超连接?@@@@@@@@@@@@@@
- dwz 主从表结构 struts2 后台应该怎么做才能读取从表数据
- Firefox 乱码,非一般的,大家有没遇到这种情况?
- validation 不验证。
http://download.csdn.net/source/1455326如果只是tomcat 启动的时候执行一次。可以这样做做个Servlet 然后在init中加入你要做的动作。package job;import java.io.IOException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class StartServlet extends HttpServlet {
public void init() throws ServletException {
System.out.println("执行程序test");
} public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { } public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
}}web.xml <servlet>
<servlet-name>StartupServlet</servlet-name>
<servlet-class>job.StartServlet</servlet-class>
<load-on-startup>10</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>StartupServlet</servlet-name>
<url-pattern>/StartupServlet</url-pattern>
</servlet-mapping>
Spring框架自带有。
1 书写一个可以自动定时执行的程序,app也行这个你自己考虑,呵呵
2 让这个程序实现 Runnable 接口
3 在servlet初始化的那个代码里,启动前面那个线程OVER
我这个要求不是tomcat启动运行一次,而是不停的运行,大概3秒执行一次。
不会用Spring框架啊,就会用用Struts框架,而且还是25子
<servlet-name>TestAutoRun</servlet-name>
<servlet-class>com.ee2ee.servlet.TestAutoRun</servlet-class>
<load-on-startup>1</load-on-startup> </servlet>
<servlet-mapping>
<servlet-name>TestAutoRun</servlet-name>
<url-pattern>/servlet/TestAutoRun</url-pattern>
</servlet-mapping>
-------------TestAutoRun.java------------
package com.ee2ee.servlet;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;public class TestAutoRun extends HttpServlet
{
private HttpServletRequest request;
private PrintWriter out; //当servlet类被加载时,执行本函数
//在本方法中放置代码即可完成自动加载
public void init(ServletConfig config) throws ServletException
{
super.init(config);
//此处放置需要自动执行的代码
System.out.println("I 'm ok now.");
} //Process the HTTP Get request
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
//以下是标准的GET方法处理,由http的GET方法触发(调用)
this.doPost(request, response);
} //Process the HTTP Post request
//标准的POST方法处理,由http的POST方法触发(调用)
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html; charset=GB2312");
PrintWriter out = response.getWriter(); this.request = request;
this.out = out; out.println("<html>");
out.println("<head>");
out.println("</head>");
out.println("<body>");
out.println("this is a test.<br>");
out.println("</body>");
out.println("</html>");
} //Clean up resources
public void destroy()
{ }
}
-------------------------------
用这个方法只能tomcat启动的时候运行一次,不能每秒或者每5秒运行一次
TimerTask只是个抽象类,当然要以它的字类来实例化了,你不是也定义了这么一个东西吗?
<listener>
<listener-class>TimerTasks.RunTest</listener-class>
</listener>
java class
public class RunTest extends HttpServlet implements ServletContextListener {
private static final long serialVersionUID = 1L;
private Timer timer = null; public RunTest() {
// TODO Auto-generated constructor stub
} @Override
public void contextDestroyed(ServletContextEvent arg0) {
timer.cancel();
arg0.getServletContext().log("3");
} @Override
public void contextInitialized(ServletContextEvent arg0) {
timer = new Timer(true);
MyTask task = new MyTask(arg0.getServletContext());
timer.schedule(task, 0, 1000);
}
}public class MyTask extends TimerTask {
private static boolean isrunning = false;
private ServletContext context = null;
public MyTask(){
}
public MyTask(ServletContext context){
this.context = context;
} @Override
public void run() {
if(!isrunning){
isrunning = true;
//调用你要执行的方法
isrunning = false;
}else{
context.log("no");
} }
}
你写的方法错误一堆,暂时没心情做了,先暂停,过两天在研究。平均分配分了啊