servlet的生命周期

416 阅读1分钟

1. 什么是生命周期?

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

2.四个阶段

  • 实例化

    默认情况下,当请求到达容器时,容器会先检查容器当中是否有该对象,如果没有,则创建该servlet组件对象,如果有,则不创建。通过<load-on-startup>1</load-on-startup>配置可以提前实例化servlet对象,参数值>=0整数,数值越小,优先级越高。

  • 初始化

    容器为servlet分配资源,调用init(ServletConfig config)方法,init方法只会被调用一次,GenericServlet重写了init方法,该方法会将容器创建好的ServletConfig对象赋值给当前类的成员变量,便于子类获取ServletConfig对象,通过该对象的getInitParameter(String name)方法可以获取初始化参数值。

    配置初始化参数: <init-param> <param-name>version</param-name> <param-value>1.0</param-value> </init-param>

    注意:可以覆盖父类的init方法,

    一:init(ServletConfig config)

    二:init()(建议)

  • 就绪

    容器收到了客户端的请求,开始调用service(ServletRequest req,ServletResponse res)方法,service方法会被调用多次,可以覆盖。

    方式一:覆盖service(HttpServletRequest req,HttpServletResponse res)(建议)

    方式二:根据请求方式覆盖doGet()或者doPost()方法

  • 销毁

    容器会根据自身的算法,将不再使用的servlet组件对象销毁,销毁之前,调用destroy方法

3.总结

在servlet生命周期整个过程中,init与destory方法只会被调一次,而service方法会被调用多次