1. 新建一个LoadOnStartup的Web项目
2. 在WebContent下新建一个index.html
3. 编写index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Life Cycle</title>
</head>
<body>
<h1>Life Cycle</h1>
</body>
</html>
4. 新建一个LoadOnStartup.java类
5. 编写LoadOnStartup.java
package com.lywgames.myservlet;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class LoadOnStartup implements Servlet {
public LoadOnStartup(){
System.out.println("LoadOnStartup");
}
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("LoadOnStartup init");
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("LoadOnStartup service");
}
@Override
public void destroy() {
System.out.println("LoadOnStartup destroy");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public String getServletInfo() {
return null;
}
}
6. 在web.xml里配置servlet, 注意配置
<load-on-startup>10</load-on-startup>
7. 运行项目, 在Tomcat7启动之前就打印了我们的构造方法和init方法
8. 使用load-on-startup元素可以在把init方法提早到加载项目的时候调用
8.1. 默认情况下, 只有在初次访问servlet的时候, 才会执行init方法。 有的时候, 我们可能需要在这个方法里面执行一些初始化工作, 甚至是做一些比较耗时的逻辑。
8.2. 那么这个时候, 初次访问, 可能会在init方法中逗留太久的时间。 那么有没有方法可以让这个初始化的时机提前一点。
8.3. 在配置的时候, 使用load-on-startup元素来指定, 给定的数字越小, 启动的时机就越早。其中1、3、4和5已经被Tomact占用, 我们可以选择从10开始。