码迷,mamicode.com
首页 > 其他好文 > 详细

servlet的生命周期

时间:2019-07-21 15:06:45      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:text   客户端   就是   有一个   code   oge   tco   nbsp   tar   

     1.装载并实例化Servlet

    在整个的servlet的生命周期中只有一个Servlet实例。一般装载Servlet的方式有两种,一种是延迟装载(默认的方式)就是当用户第一次访问的Servlet时,容器会将Servlet装载到虚拟机中并实例化,当用户再次访问这个Servlet时容器不会在去加载实例化。另一种是预先加载,当web容器启动时,容器在装载web应用的时候会将Servlet初始化,如果要使用这种方式加载Servlet需要在web.xml中配置:

<servlet>
    <load-on-startup>
        number
   </load-on-startup>
</servlet>

其中,number<0表示延迟加载,number>=0表示采用预先加载。number越小越先加载,越大越晚被加载,springMVC的DispatcherServlet就是使用的预先加载。

    2.init 方法的调用

    当Servlet被装载时会先调用ini方法对servlet初始化,这里需要注意,在整个的Servlet周期中init方法只会被调用一次。用户可以覆盖init方法,如果覆盖有参数的init方法需要先调用super.init(config)方法,如果覆盖无参的init方法则不用,原因参考我写的java的继承。使用config对象可以获取ServletContext对象。

    3.service方法的调用

    Servlet被装载实例化后,客户端发起请求,容器会调用Servlet实例的service方法来对请求进行处理,所以service方法会根据请求的次数被调用多次。HttpServlet的service方法会根据请求的方式来调用service中对应的方法,常见的有doGet、doPost、doPut和doDelete。其中doGet和doPost默认情况下会抛异常所以需要子类去覆盖。

    4.Servlet实例的销毁

    当web容器需要销毁Servlet实例时会先调用destroy方法,在这个方法中容器会释放资源,恢复一下变量的值等。我们定义的servlet可以不覆盖destroy方法。

servlet的生命周期

标签:text   客户端   就是   有一个   code   oge   tco   nbsp   tar   

原文地址:https://www.cnblogs.com/suyang-java/p/11221167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!