zoukankan      html  css  js  c++  java
  • Servlet的生命周期

      Servlet的生命周期共有四个阶段:

      

      1.实例化

        实例化实例化阶段是Servlet生命周期中的第一步,由Servlet容器调用Servlet的构造器创建一个具体的Servlet对象的过程。而这个创建的时机可以是在容器收到针对这个组件的请求之后,即用了才创建;也可以在容器启动之后立刻创建实例,而不管此时Servlet是否使用的上;

     

      2.初始化

        Servlet在被加载实例化之后,必须要初始化它。在初始化阶段,init()方法会被调用。这个方法在javax.servlet.Servlet接口中定义;其中,方法以一个ServletConfig类型的对象作为参数。ServletConfig对象由Servlet引擎负责创建,从中可以读取到事先在web.xml文件中通过<init-param>节点配置的多个name-value名值对;ServletConfig对象还可以让Servlet接受一个ServletContext对象;一般情况下,init方法不需要编写,因GenericServlet类已经提供了init()方法的实现,并且提供了getServletConfig()法来获ServletConfig对象;

        注:init方法只被执行一次

      3.提供服务

        Servlet被初始化以后就处于能够响应请求的就绪状态每个对Servlet的请求由一个ServletRequest对象代表Servlet给客户端的响应由一个ServletResponse对象代表;当客户端有一个请求时,容器就会将请求与响应对象转给Servlet,以参数的形式传给service()方法service()方法由javax.servlet.Servlet定义,由具体的Servlet实现;

      4.销毁

        Servlet容器在销毁Servlet对象时会调用destroy()方法来释放资源。通常情况下Servlet容器停止或者重新启动都会引起销毁Servlet对象的动作,但除此之外,Servlet容器也有自身管理Servlet对象的准则,整个生命周期并不需要人为进行干预;

      

      例程如下:

    @WebServlet("/LifeServlet")
    public class LifeServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
    
        public LifeServlet() {
            super();
            System.out.println("1、完成了实例化");
        }
    
        @Override
        public void init() throws ServletException {
            super.init();
            System.out.println("2、完成了初始化");
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            System.out.println("3、就绪中");
            response.getWriter().append("Served at: ").append(request.getContextPath());
        }
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws
                ServletException, IOException {
            doGet(request, response);
        }
    
        @Override
        public void destroy() {
            super.destroy();
            System.out.println("4、销毁了");
        }
    }
    

      

      当访问/LifeServlet这个接口时,打印如下:

    1、完成了实例化
    2、完成了初始化
    3、就绪中
    

     

     当关闭服务器,打印:

    4、销毁了
    

      

      

  • 相关阅读:
    【一句日历】2020年4月
    【2020-03-31】思维永远只有一种
    【2020-03-30】事情就怕太容易而看不起
    【2020-03-29】人生有趣的地方在于不断升级自己
    【2020-03-27】球场还在,换了地方而已
    【2020-03-26】人其实是一个系统
    【2020-03-25】没工作是个伪命题
    day 74 vue 2 axios数据请求 以及组件的学习
    day 73 初学vue (1)
    day 72 crm(9) 客户关系系统,整体实现,以及自定制路由内容,客户关系梳理
  • 原文地址:https://www.cnblogs.com/coder-zyc/p/10617819.html
Copyright © 2011-2022 走看看