0
点赞
收藏
分享

微信扫一扫

JavaWeb_servlet(3)_ Servlet 生命周期


本系列博客汇总在这里:JavaWeb_servlet 汇总


目录

  • ​​Servlet 生命周期​​

Servlet 生命周期

  1. javax.servlet.Servlet 接口中,有三个方法说明了 Servlet 的生命周期:
    (1)void init(ServletConfig):创建后马上调用 init() 完成初始化;
    (2)void service(ServletRequest,ServletResponse):每次处理请求时调用 service() 方法;
    (3)void destroy():当 Tomcat 要销毁 Servlet 实例时,先调用 destroy() 方法。

  2. 示例(细节操作参见上一篇,本节示例只是在上一节的基础上更换了 demo1 源码)

  3. 编码(完整源码见文末)
    JavaWeb_servlet(3)_ Servlet 生命周期_生命周期
    结果图
    JavaWeb_servlet(3)_ Servlet 生命周期_java_02
    JavaWeb_servlet(3)_ Servlet 生命周期_tomcat_03

  4. 说明
    (1)Servlet 对象的实例默认情况下是在浏览器第一次调用 servlet 时候被创建的(可以修改其创建时机后续讲解)现在你应该已经清楚了,Servlet 的实例不由我们创建,Servlet 的方法不由我们来调用,这一切都是由 Tomcat 来完成!!!这就是说由 Tomcat 来管理 Servlet,而我们只需要去编写 Servlet 实现类,并将其部署到 web.xml 文件中去!
    (2)再次提醒,只有这三个方法是生命周期中的方法。也就是说,生命周期方法会被 Tomcat 在不同的时间点来调用!而其它方法就不会被调用了!!!如果你在自己写的 Servlet 中添加了其他方法,那么 Tomcat 也是不会去调用它们的!但你可以让生命周期方法去调用你自己写的方法就OK了!

  5. 以上操作源码(web.xml 同上一篇):

    package com.wyx.servlet;
    import java.io.IOException;
    import javax.servlet.Servlet;
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;

    /**
    *
    * @author renliang servlet的生命周期 ServletDemo2对象实例并不是由我们手动的创建,而是web容器给给我们创建(面试常问)
    *
    * void init(ServletConfig config) :默认情况当servlet被第一次访问的时候init会被调用,
    * 说明servlet的实例默认情况下是第一次被访问的时候创建的(可以改的),
    * 第二次往后都不会再被调用,servlet的实例是单例的 void
    *
    * service(ServletRequest req, ServletResponse res) :每次请求来的时候都会被调用 void
    * destroy() :当ServletDemo2销毁时被调用
    *
    */
    public class demo1 implements Servlet
    {

    public void destroy()
    {
    System.out.println("destroy 被调用...");
    }

    public ServletConfig getServletConfig()
    {
    return null;
    }

    public String getServletInfo()
    {
    return null;
    }

    public void init(ServletConfig arg0) throws ServletException
    {
    System.out.println("init方法被调用...");
    }

    public void service(ServletRequest request, ServletResponse response)
    throws ServletException, IOException
    {
    System.out.println("service方法被调用...");
    response.getOutputStream().write("<font color='red'>service 方法被调用...</font>".getBytes());
    }
    }

如有错误,欢迎指正!



举报

相关推荐

0 条评论