1 Servlet生命周期的概念说明:
Servlet生命周期指一个Servlet创建到销毁的过程,我们将这个过程称之为"Servlet生命周期"。
生命周期有其固定的一些生命动作,也就是方法,即俗称的钩子函数。到哪个点儿,就执行哪个方法。
比如初始化时,执行init()方法,运行时执行service()方法,销毁时执行destroy()方法等。
注意,servlet在开发时,我们写的是类。
而在运行时,我们用的是servlet的对象,也就是组件。
2 每一个Servlet都拥有以下处理过程
Servlet初始化后调用init()方法
Servlet调用service()方法来处理客户端的请求
Servlet销毁前调用destroy() 方法
最后Servlet是由JVM的垃圾回收器进行垃圾回收的
3 init()方法
见名估计,就是初始化方法。事先执行,只执行一次。
init()方法在第一次创建Servlet时被调用后续用户调用此Servlet时,无需再次运行init()方法。
当用户第一次调用Servlet对应URL时,Servlet被创建,我们也可以指定Servlet在服务器中第一次启动时加载
当用户调用一个Servlet时,就会创建一个Servlet实例,容器创建实例的过程,即new一个对象的过程,可以使用servlet的构造器去检验!!!
而servlet的服务是多线程的:每一个用户请求都会产生一个新的线程,适当的时候移交给 doGet 或 doPost 方法
init() 方法简单地创建或加载一些数据,这些数据将被用于 Servlet 的整个生命周期
例:init 方法
public void init() throws ServletException {
// 初始化代码…
}
4 service()方法
service() 方法是执行实际任务的主要方法
Servlet容器(即Web 服务器)调用service()方法来处理来自客户端(浏览器)的请求
将格式化数据返回给客户端
当服务器收到Servlet请求时,
服务器会产生一个新的线程并调用服务
service() 方法中会检查http的请求类型(GET、POST、PUT、DELETE等),
并调用相应的doGet、doPost、doPut,doDelete 等方法
例:
service方法定义
public void service(ServletRequest request,
ServletResponse response)
throws ServletException, IOException{
}
service()方法由web容器调用
service 方法然后调用doGet,doPost,doPut,doDelete等方法
所以我们只需将相应的代码放入doGet()及doPost()方法中
doGet()方法
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
建议阅读HttpServlet类的源码,就可以发现
service方法有两个,一个是保护的,一个公共的
公共的对外服务方法
实现服务的过程中,它会调用保护的方法
在保护的方法中,会识别请求的参数,按请求方式,调用不同的服务的具体方法,如doGet,doPost等。
doPost()方法
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet 代码
}
5 destroy()方法
destroy() 方法只会被调用一次
在Servlet生命周期结束时被调用
destroy() 方法可以让您的Servlet 关闭数据库连接
停止后台线程
把 Cookie 列表或点击计数器写入到磁盘
并执行其他类似的清理活动
servlet对象被标记为垃圾回收
destroy方法定义如下所示:
public void destroy() {
// 终止化代码…
}