有时候希望在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被调用时才会被执行!
相关推荐
2. **Servlet类编写**:创建名为`AutoStartupServlet`的Servlet类,重写`init()`方法,在这里执行服务器启动时需要进行的初始化操作。例如: ```java import javax.servlet.ServletConfig; import javax.servlet....
在启动过程中,Tomcat会检查并解析`webapps`目录下的所有应用,读取每个应用的`WEB-INF/web.xml`,配置Servlet和过滤器的映射,设置会话超时和其他运行时参数。了解启动流程有助于优化应用性能和排查问题。 Servlet...
1. **装载与初始化**:服务器启动时,根据`web.xml`配置装载Servlet,并调用`init()`方法进行初始化。 2. **请求处理**:当接收到客户端请求时,调用`service()`方法,进一步调用`doGet()`或`doPost()`等方法处理...
标题“Tomcat启动服务运行Servlet”涉及到的是Java Web开发中的核心概念,主要涵盖Tomcat服务器的启动过程以及Servlet的执行机制。Tomcat是一款开源、免费的Web应用服务器,广泛用于部署Java Servlet和JavaServer ...
要实现在Tomcat启动时自动执行的Servlet,我们需要在Servlet的`init()`方法中添加代码来创建一个后台线程。`init()`方法是Servlet生命周期中的初始化阶段,当Servlet被加载时,Tomcat会调用这个方法。我们可以在`...
在服务器启动后,客户机首次向 Servlet 发出请求时 重新装入 Servlet 时装入 Servlet 后,服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。在初始化阶段,Servlet 初始化参数被传递给 Servlet ...
当Web服务器启动或第一次接收到对Servlet的请求时,会加载并实例化Servlet。然后调用`init()`方法进行初始化,`service()`方法处理每个请求,最后在不再需要Servlet时调用`destroy()`方法。 2. **Servlet配置**:在...
`init()`方法在Servlet首次被调用时执行,`service()`方法处理每个HTTP请求,而`destroy()`方法在Servlet不再使用时执行,用于清理资源。 5. **URL映射**:Web服务器需要解析请求URL,根据URL路径找到相应的Servlet...
在这个例子中,`<load-on-startup>`元素指定了Servlet在服务器启动时自动加载的顺序。数字越小,加载越早。此外,还可以通过`<init-param>`元素为Servlet配置初始化参数。 #### 六、示例代码分析 为了更好地理解...
这个Servlet可能在应用服务器启动时执行,用于完成一些设置工作,比如加载配置、建立数据库连接池或者初始化缓存等。让我们深入了解一下相关的知识点。 1. **初始化Servlet**: 在Java Web开发中,Servlet是一种...
1. 装载 Servlet: Server 会在启动时装载 Servlet,并调用 init() 方法对其进行初始化。 2. Server 创建 Servlet 实例:Server 创建一个 Servlet 的实例,并调用其 init() 方法对其进行初始化。 3. 客户端请求到达 ...
当服务器启动或第一次接收到对Servlet的请求时,Servlet容器(如Tomcat)会加载并实例化Servlet。接着,调用Servlet的init()方法进行初始化,我们可以在这里配置Servlet的初始化参数。在服务阶段,每次请求都会调用...
2. 另外,可以在`web.xml`配置文件中设置Servlet,使其在服务器启动时即创建,例如: ```xml <servlet> <servlet-name>Servlet06</servlet-name> <servlet-class>cn.edu.svtcc.servlet.Servlet06</servlet-class> ...
1. **加载Servlet类**:当服务器启动并接收到针对某个Servlet的第一个请求时,服务器会加载相应的Servlet类。 2. **创建Servlet实例**:接下来,服务器将为该Servlet创建一个新的实例。 3. **调用`init()`方法**:...
其中`load-on-startup`属性可用来指定Servlet在服务器启动时的加载顺序。 #### 四、如何处理一个请求 在Servlet中,主要通过`service()`方法来处理请求。对于HTTP请求,还可以通过重写`doGet()`、`doPost()`等方法...
init方法在Servlet被加载时调用,用于初始化;service方法处理HTTP请求;destroy方法在Servlet卸载前调用,进行资源释放。在这个web服务器中,可以看到如何映射请求到特定的Servlet并调用它们的服务方法。 5. **...
9. **监听器Listener**:Servlet API中的监听器(如ServletRequestListener、ServletContextListener)可以在特定事件(如请求到达、应用启动/停止)发生时执行代码,增强了应用程序的灵活性。 10. **会话管理**:...
Servlet 3.0引入了异步处理能力,使得Servlet可以在`service()`方法内启动异步任务,提高并发性能。 10. **MVC框架与Servlet的关系**: MVC(Model-View-Controller)框架如Spring MVC、Struts等,虽然提供了更高...