简单完整讲述Servlet生命周期

Servlet生命周期过程

详解:

1.加载web.xml文件——当前只去解析xml文件,知道servlet的存在,此时还没有去创建servlet。

<!-- 声明servlet -->
    <servlet>
    <!-- servlet的别名 -->
        <servlet-name>first</servlet-name>
        <servlet-class>com.etime.servlet.FirstServlet</servlet-class>
    </servlet>
    
    <!-- 将servlet与URL绑定 -->
    
    <!-- servlet映射部分 -->
    <servlet-mapping>
        <servlet-name>first</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

2.创建构造函数——通过构造函数创建servlet对象
在第一次访问servlet对应的URL时,执行FirstServlet构造函数,对servlet对象进行创建。

    public FirstServlet() {
        System.out.println("正在创建servlet对象");
    }

3.调用init方法——通过init方法初始化servlet

    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("正在初始化servlet对象");
    }

4.访问URL需要servlet提供服务,执行servlet方法——通过service或者doGet、doPost提供服务

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //请求发来的参数
        String name = request.getParameter("name");
        //从前台发来的参数放在这个字符串里
        String html = "<h1 style = 'color:orange'>hello!"+name+"!</h1><hr>";
        System.out.println("返回浏览器的响应数据为:"+html);//这一步是为了更明了的显示运行步骤
        //服务器向浏览器返回的输出流
        PrintWriter out = response.getWriter();
        //通过out对象将html发送回浏览器
        out.println(html);

5.销毁方法——在重启或关闭时自动对servlet进行销毁

    @Override
    public void destroy() { 
        System.out.println("正在销毁servlet对象");
    }

总结:

完整的servlet生命周期流程:
1.加载web.xml文件。
2.通过构造函数创建servlet对象。
3.通过init方法初始化servlet。
4.通过service,或者doGet、doPost提供服务。
5.在重启或关闭时自动对servlet进行销毁。

注意:通过这个例子我们可以知道tomcat全局中有且只有一个servlet对象,当一个servlet被访问时,之后的所有请求都被这一个servlet进行处理。