年后的第一篇,先上代码:
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//此为Servlet类
public class NucleonEventProcessor extends HttpServlet {
private static final long serialVersionUID=-9045451275234606838L;
int num=0;//保证线程启动一次后就不再启动
Timer timer=new Timer();
//以下两个为了从spring中获取注入的service值
ServletContext servletContext=null;
WebApplicationContext webApplicationContext=null;
//以下为某个Service
//PersonService personService=null;
/**
* Constructor of the object.
*/
public NucleonEventProcessor() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
FutureTask<String> task=new FutureTask<String>(new Callable<String>() {
@Override
public String call() throws Exception {
// TODO Auto-generated method stub
start();
return "Collection Completed";
}
});
servletContext=getServletContext();
webApplicationContext=WebApplicationContextUtils.getWebApplicationContext(servletContext);
//获取spring配置文件中的service
//personService=(PersonService)webApplicationContext.getBean("personService");
//线程启动
new Thread(task).start();
}
private void start(){
//要执行的方法
if(num=0){
timeschedule();
num++;
}
}
public void timeschedule(){
timer.schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
//要执行的方法
start();
}
}, 1000,2000);//1秒后执行,每隔2秒执行一次
}
}
上面的代码是整个类的代码,大部分是继续HttpServlet后自动生成的,重要的是
【1】init【2】timeschedule里边的内容
分享到:
相关推荐
Servlet与传统的CGI(Common Gateway Interface)相比,具有更好的性能和可维护性,因为它们在Java虚拟机(JVM)中运行,可以利用Java的多线程和内存管理机制。 二、Servlet工作原理 当一个HTTP请求到达Web服务器时...
BIO是一种传统的I/O处理方式,当一个线程处理一个连接时,如果该连接处于等待数据的状态,那么线程会被阻塞,直到数据到达。在Tomcat中,BIO模式主要用于处理HTTP请求。 在高版本的Tomcat(如9及以上)中,BIO模式...
而Tomcat8.5是Apache Tomcat服务器的一个版本,是一个轻量级的Java Servlet容器,它支持Servlet和JavaServer Pages(JSP)技术。Tomcat8.5引入了一些改进,包括更好的性能、对Java EE 7的支持以及更灵活的配置选项。...
Spring MVC会自动将异步方法的结果存储在一个`AsyncResult`对象中,当结果准备好后,再由Spring MVC将结果发送给客户端。 再者,Tomcat作为常用的Java Web容器,也支持异步I/O(Non-Blocking I/O)。在Tomcat中,...
Spring MVC提供了对Servlet 3.0异步处理的封装,通过`@Async`注解标记在方法上,表示这个方法将在后台线程中执行。`@Async`方法所在的类需要配置为`@EnableAsync`的bean,这样Spring会自动创建一个TaskExecutor来...
答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式允许其service方法,一个实例可以服务于多个请求,并且其实例一般不会被销毁,而CGI对每个请求都产生新的进程,服务完后就销毁,所以效率上...
SELECT INTO FROM INSERT INTO SELECT是一种常见的SQL语句组合,用于将查询结果插入另一个表中。这种语句在数据迁移、数据复制等场景下非常有用。使用时需要注意源表和目标表的字段类型和数量是否匹配,以及是否需要...
- `CyclicBarrier`:让一组线程等待至某个状态后再全部同时执行。 ### Dubbo面试题 1. **Dubbo是什么?它解决了什么问题?** - Dubbo是一款高性能、轻量级的开源Java RPC框架。 - 它提供了一整套微服务解决方案...
- `Thread.join()`: 等待当前线程结束后再继续执行。 - `Object.wait()`: 释放对象锁,使线程进入等待状态。 - **题目解析**: `Thread.yield()`不会使线程进入阻塞状态,因此正确答案是`D: Thread.yield()`。 ###...
在这个项目中,我们将使用Structs、Hibernate和Spring这三个核心框架构建一个完整的Web应用,以实现视频信息的抓取和处理。 首先,让我们详细了解这些关键技术: 1. **Structs**:这是一个用于构建动态Web应用的...
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...
Struts是MVC框架,通过ActionServlet接收请求,调用Action类处理,再转发至JSP显示结果。 【page, request, session, application作用域】 page作用域仅限当前JSP页面;request作用域跨请求;session作用域跨会话;...
Tomcat是一个轻量级的Web容器,虽然不完全是一个App Server,但它支持Servlet和JSP,常用于小型到中型的Java Web应用。安装Tomcat相对简单,只需下载并解压,设置JAVA_HOME和CATALINA_HOME环境变量,然后通过执行...
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks....
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念、线程的基本状态以及状态之间的关系 34 54、简述synchronized和java.util.concurrent.locks.Lock...
52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 37 53、线程的基本概念、线程的基本状态以及状态之间的关系 37 54、简述synchronized和java.util.concurrent.locks.Lock...