美文网首页
servlet学习(二):servlet的生命周期

servlet学习(二):servlet的生命周期

作者: 程序员三千_ | 来源:发表于2019-02-25 09:28 被阅读3次

        Servlet 生命周期指的是,Servlet 对象的创建、Servlet 对象的初始化、Servlet 对象服

    务的执行,及最终 Servlet 对象被销毁的整个过程。

    servlet生命周期图:

        Servlet 的整个生命周期过程的执行,均由 Web 服务器(我们这里的是tomcat)负责管理,程序员无法控制其

    执行流程。但程序员可以获取到 Servlet 的生命周期时间点,并可以指定让 Servlet 做一些业务相关的事情。

    示例代码:

    package com.wdy;

    import javax.servlet.*;

    import java.io.IOException;

    public class LifeServletimplements Servlet {

    public LifeServlet(){

    System.out.println("无参构造方法执行");

        }

    @Override

        public void init(ServletConfig servletConfig)throws ServletException {

    System.out.println("init");

        }

    @Override

        public ServletConfiggetServletConfig() {

    return null;

        }

    @Override

        public void service(ServletRequest servletRequest, ServletResponse servletResponse)throws ServletException, IOException {

    System.out.println("service");

        }

    @Override

        public StringgetServletInfo() {

    return null;

        }

    @Override

        public void destroy() {

    System.out.println("destroy");

        }

    }

    并在web.xml里配置这个servlet:

    1.我们启动tomcat服务 :没有打印任何日志

     2.我们执行life这个url请求:

    3.手动关闭tomcat:

    4.刷新一下浏览器:

    servlet的特征

    1、Servlet是单实例(不管是刷新浏览器多少次,只调用一次init方法)、多线程(每刷新一次浏览器就执行一次service方法)的,只创建一个servlet对象,但是每次请求都会起一个线程并在自己线程栈内存中执行service方法。

    2、一个 Servlet 实例只会执行一次无参构造器与 init()方法,并且是在第一次访问时执行。

    3、用户每提交一次对当前 Servlet 的请求,就会执行一次 service()方法。

    4、一个 Servlet 实例只会执行一次 destroy()方法,在应用停止时执行。

    5、由于 Servlet 是单例多线程的,所以为了保证其线程安全性,一般情况下是不建议在 Servlet类中定义可修改的成员变量,因为每个线程均可修改这个成员变量,会出现线程安全问题。

    6、默认情况下,Servlet 在 Web 容器(tomcat)时是不会被实例化的。

    相关文章

      网友评论

          本文标题:servlet学习(二):servlet的生命周期

          本文链接:https://www.haomeiwen.com/subject/wbhwyqtx.html