`

Servlet的init方法在服务器启动时执行

阅读更多

        有时候希望在servlet首次载入时,执行复杂的初始化任务,但并不想每个请求都重复这些任务。用init()方法能实现在servlet初次创建时被调用,之后处理每个用户的请求时,则不再调用这个方法。因此,它主要用于一次性地初始化,和applet的init方法相同。

        比如,我启动Tomcat后,每当我本地的一张表里有条数据符合我设置的要求,我就想把它取出来进行处理。处理完成后,一直等待直到下一条符合我设置要求的数据出现:

public class Lostvoice extends HttpServlet{

	@Override
	public void init() throws ServletException {
		missphone();
	}
	
	private void missphone () {
		
		Runnable run = new Runnable() {
			public void run() {
				while (true) {
					SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
					String date = sdf.format(new Date());
					String sql = "select sid, enterID ,caller,called,to_char(opertime,'yyyymmddhh24miss') from db_lost_msg_" + date
								+ " where state = 0 or state is null";
					try {
						Connection conn = ConnUtils.getConn();
						Statement stat = conn.createStatement();
						ResultSet rs = stat.executeQuery(sql);
						while(rs.next()) {
							String update = "update db_lost_msg_" + date + " set state = 1 where sid = '"+ rs.getString(1)	+ "'";
							System.out.println("开始更新sid为" + rs.getString(1) + "的数据状态为1");
							stat.executeUpdate(update);
							System.out.println("更新结束");
						}
						ConnUtils.close(conn, stat, rs);
					} catch (SQLException e) {
						e.printStackTrace();
					}
					try {
						Thread.sleep(3000);
					} catch (InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		};
		
		Thread thread = new Thread(run);
		thread.start();
	}
}

如果要想让servlet的init()方法在服务器启动时就被执行,还需要在web.xml中相应的servlet下配置:

<servlet>
  	<servlet-name>lostvoice</servlet-name>
  	<servlet-class>com.servlet.Lostvoice</servlet-class>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>lostvoice</servlet-name>
  	<url-pattern>/lostvoice</url-pattern>
  </servlet-mapping>

即将:<load-on-startup>1</load-on-startup>设置为正整数(包括0)

这样此servlet就会在服务器启动时执行了。(注意:如果设置为负整数,则不会在启动服务器时执行!)

如果不配置,启动服务器时也不会执行,而要等此servlet被调用时才会被执行

分享到:
评论

相关推荐

    JAVA项目服务器启动时自启动指定的Servlet,并定时执行任务

    2. **Servlet类编写**:创建名为`AutoStartupServlet`的Servlet类,重写`init()`方法,在这里执行服务器启动时需要进行的初始化操作。例如: ```java import javax.servlet.ServletConfig; import javax.servlet....

    Tomcat服务器配置、启动分析、Servlet文件配置

    在启动过程中,Tomcat会检查并解析`webapps`目录下的所有应用,读取每个应用的`WEB-INF/web.xml`,配置Servlet和过滤器的映射,设置会话超时和其他运行时参数。了解启动流程有助于优化应用性能和排查问题。 Servlet...

    servlet执行过程与生命周期

    1. **装载与初始化**:服务器启动时,根据`web.xml`配置装载Servlet,并调用`init()`方法进行初始化。 2. **请求处理**:当接收到客户端请求时,调用`service()`方法,进一步调用`doGet()`或`doPost()`等方法处理...

    tomcat启动服务运行servlet

    标题“Tomcat启动服务运行Servlet”涉及到的是Java Web开发中的核心概念,主要涵盖Tomcat服务器的启动过程以及Servlet的执行机制。Tomcat是一款开源、免费的Web应用服务器,广泛用于部署Java Servlet和JavaServer ...

    tomcat启动时,在后台自动执行一线程

    要实现在Tomcat启动时自动执行的Servlet,我们需要在Servlet的`init()`方法中添加代码来创建一个后台线程。`init()`方法是Servlet生命周期中的初始化阶段,当Servlet被加载时,Tomcat会调用这个方法。我们可以在`...

    servlet temple

     在服务器启动后,客户机首次向 Servlet 发出请求时  重新装入 Servlet 时装入 Servlet 后,服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。在初始化阶段,Servlet 初始化参数被传递给 Servlet ...

    com.oreilly.servlet

    当Web服务器启动或第一次接收到对Servlet的请求时,会加载并实例化Servlet。然后调用`init()`方法进行初始化,`service()`方法处理每个请求,最后在不再需要Servlet时调用`destroy()`方法。 2. **Servlet配置**:在...

    java源码:一个支持servlet的web服务器.rar

    `init()`方法在Servlet首次被调用时执行,`service()`方法处理每个HTTP请求,而`destroy()`方法在Servlet不再使用时执行,用于清理资源。 5. **URL映射**:Web服务器需要解析请求URL,根据URL路径找到相应的Servlet...

    Servlet-Servlet生命周期

    在这个例子中,`&lt;load-on-startup&gt;`元素指定了Servlet在服务器启动时自动加载的顺序。数字越小,加载越早。此外,还可以通过`&lt;init-param&gt;`元素为Servlet配置初始化参数。 #### 六、示例代码分析 为了更好地理解...

    InitTask

    这个Servlet可能在应用服务器启动时执行,用于完成一些设置工作,比如加载配置、建立数据库连接池或者初始化缓存等。让我们深入了解一下相关的知识点。 1. **初始化Servlet**: 在Java Web开发中,Servlet是一种...

    servlet配置与使用

    1. 装载 Servlet: Server 会在启动时装载 Servlet,并调用 init() 方法对其进行初始化。 2. Server 创建 Servlet 实例:Server 创建一个 Servlet 的实例,并调用其 init() 方法对其进行初始化。 3. 客户端请求到达 ...

    servlet反编译源码

    当服务器启动或第一次接收到对Servlet的请求时,Servlet容器(如Tomcat)会加载并实例化Servlet。接着,调用Servlet的init()方法进行初始化,我们可以在这里配置Servlet的初始化参数。在服务阶段,每次请求都会调用...

    13-Servlet访问流程以及doGet和doPost.pdf

    2. 另外,可以在`web.xml`配置文件中设置Servlet,使其在服务器启动时即创建,例如: ```xml &lt;servlet&gt; &lt;servlet-name&gt;Servlet06&lt;/servlet-name&gt; &lt;servlet-class&gt;cn.edu.svtcc.servlet.Servlet06&lt;/servlet-class&gt; ...

    Servlet

    1. **加载Servlet类**:当服务器启动并接收到针对某个Servlet的第一个请求时,服务器会加载相应的Servlet类。 2. **创建Servlet实例**:接下来,服务器将为该Servlet创建一个新的实例。 3. **调用`init()`方法**:...

    Servlet基础知识总结

    其中`load-on-startup`属性可用来指定Servlet在服务器启动时的加载顺序。 #### 四、如何处理一个请求 在Servlet中,主要通过`service()`方法来处理请求。对于HTTP请求,还可以通过重写`doGet()`、`doPost()`等方法...

    基于Java的实例源码-一个支持servlet的web服务器.zip

    init方法在Servlet被加载时调用,用于初始化;service方法处理HTTP请求;destroy方法在Servlet卸载前调用,进行资源释放。在这个web服务器中,可以看到如何映射请求到特定的Servlet并调用它们的服务方法。 5. **...

    Servlet中文API文档 servlet

    9. **监听器Listener**:Servlet API中的监听器(如ServletRequestListener、ServletContextListener)可以在特定事件(如请求到达、应用启动/停止)发生时执行代码,增强了应用程序的灵活性。 10. **会话管理**:...

    servlet api servlet api

    Servlet 3.0引入了异步处理能力,使得Servlet可以在`service()`方法内启动异步任务,提高并发性能。 10. **MVC框架与Servlet的关系**: MVC(Model-View-Controller)框架如Spring MVC、Struts等,虽然提供了更高...

Global site tag (gtag.js) - Google Analytics