servlet的生命周期

  所谓生命周期,指的是servlet容器如何创建servlet实例,分配其资源,调用其方法,并销毁其实例的整个过程。

阶段一:实例化(创建servlet对象,调用构造器)。在如下两种情况下会进行对象实例化:

  第一种情况:当请求到达容器时,容器查找该servlet对象是否存在。如果不存在才会创建实例。

  第二种情况:容器在启动时,或者新部署了某个应用时,会检查web.xml当中,servlet是否有load-on-starup配置,如果有,则会创建servlet实例。load-on-starup参数值越小,优先级越高(最小值为0,优先级最高)

阶段二:初始化。  

  为servlet分配资源,调用init(ServletConfig config)方法,config对象可以用来访问servlet的初始化参数,初始化参数是使用init-param配置的参数。init()方法可以被重写。

阶段三:就绪/调用

  有请求到达容器,容器调用servlet对象的service()方法。HttpServlet的service()方法会依据请求方式来调用doGet()或者doPost()方法。但是这两个do方法默认情况下会抛出异常,需要子类去重写。

阶段四:销毁。

  容器依据自身的算法,将不再需要的servlet对象删除。在删除之前,会调用servlet对象的destory()方法。destory()方法用于释放资源。

在servlet的整个生命周期中,init(),destory()方法只会执行一次,而service()方法可以被执行多次。

  

posted @ 2013-01-29 22:33  greywardens  阅读(901)  评论(0编辑  收藏  举报