← 返回首页
Servlet基础教程(八)
发表时间:2020-04-06 01:32:27
讲解Servlet的生命周期

servlet 声明周期可以分四个阶段:

  1. 类装载过程(执行构造方法)
  2. init() 初始化过程
  3. service() 服务过程,选择doGet 或者 doPost
  4. destroy() 销毁过程

如下图所示:

实例:

接着上节的案例,我们重写init、service、destroy方法,观察servlet的生命周期如何演变。

package com.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(value="/hello")
public class HelloServlet extends HttpServlet {

    public HelloServlet(){
        System.out.println("执行了构造方法...");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行了service()...");
        super.service(req, resp);
    }

    @Override
    public void destroy() {
        System.out.println("执行了destroy()...");
        super.destroy();
    }

    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("执行了init(config)方法...");
        super.init(config);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行了doGet...");
    }


    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行了doPost...");
    }
}

当点击超链接,发送get请求后,控制台输出:

执行了构造方法...
执行了init(config)方法...
执行了service()...
执行了doGet...

当点击提交按钮,发送post请求后,控制台输出:

执行了service()...
执行了doPost...

当关闭tomcat服务器后,控制台输出:

执行了destroy()...

小结

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: