Servlet 生命周期 :
- 调用当前 Servlet 类构造函数进行实例化
- Servlet 通过调用 init () 方法进行初始化
- Servlet 调用 service() 方法来处理客户端的请求
- Servlet 通过调用 destroy() 方法终止(结束)
- 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的
Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类。Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.http.HttpServlet,并实现 Servlet 接口的抽象类专门用来处理 HTTP 请求。( javax.servlet.Servlet 接口、java.servlet.GenericSerlvet 抽象类、java.servlet.Http.HttpServlet 抽象类)
package javax.servlet; import java.io.IOException; public interface Servlet {
//Servlet 实例初始化完成后 (Servlet 为单实例,仅包含一个实例),将进入 init 函数,并且只执行一次 void init(ServletConfig var1) throws ServletException;
// 获取 ServletConfig 对象,该对象包括当前 Servlet 实例相关信息 ServletConfig getServletConfig();
//任何一次请求,都将进入 service 方法 void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException; String getServletInfo();
// 当 tomacat 关闭时,将执行该方法 void destroy(); }
ServletDemo 类实现 java.servlet.Servlet 接口:
import javax.servlet.*; import java.io.IOException; public class ServletDemo implements Servlet { private transient ServletConfig servletConfig; public ServletDemo() { System.out.println("constructor"); System.out.println(this.hashCode()); } @Override public void init(ServletConfig servletConfig) throws ServletException { this.servletConfig = servletConfig; System.out.println("init"); } @Override public ServletConfig getServletConfig() { return this.servletConfig; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println(this.hashCode()); } @Override public String getServletInfo() { return null; } @Override public void destroy() { System.out.println("destroy"); } }