JSP/Servlet的生命周期
JSP的本质就是Servlet,JSP页面将由Web容器编译成对应的Servlet,当Servlet的容器中运行时,其实例的创建及销毁等都不是由程序员决定的而是由Web容器进行控制的。
创建Servlet实例有两个时机
1、客户端第一次请求某个Servlet时,系统创建该Servlet的实例,大部分都是这样创建的
2、Web应用启动时立即创建Servlet实例,即load-on-startup Servlet
Web容器中的Servlet主要经历4个阶段,这4个阶段就是Servlet的生命周期
1、在Web容器启动或客户端第一次请求服务时,容器将加载Servlet类并将其放入到Servlet实例池——创建Servlet的实例
2、Servlet实例化后,Web容器将调用Servlet对象的init()方法,完成Servlet的初始化操作,主要是为了让Servlet在处理请求之前做一些初始化工作
3、Servlet初始化之后,将一直存在于容器中,用于响应客户请求,Servlet实例根据不同的http请求类型作出不同处理,并在处理之后作出相应的响应。如果客户端发送GET请求,容器调用Servlet的doGet方法出力并响应请求,如果客户端发送POST请求,容器调用Servlet的doPost方法处理并响应请求,或者统一使用service()方法处理响应客户端请求
4、Web容器决定销毁Servlet时,先调用Servlet的destroy方法对资源进行释放,在调用此方法之后,Servlet对象将被垃圾回收器回收,通常在关闭Web应用之时销毁Servlet。
——>创建实例成功——>init()——>完成初始化——>响应客户请求——>destroy()——>资源回收完成——>实例被销毁——>