您的位置:首页 > 其它

Servlet生命周期

2016-10-17 07:36 232 查看
Servlets生命周期教程,实例代码 - 可以定义一个servlet的生命周期,从创建,直到毁灭的全过程

可以定义一个servlet的生命周期,从创建,直到毁灭的全过程。以下是通过servlet遵循的过程:

servlet通过调用init () 方法进行初始化。

servlet调用service()方法来处理客户端的请求。

该servlet通过调用destroy()方法终止(结束)。

最后,servlet是由垃圾收集器的JVM的垃圾收集。

现在让我们讨论生命周期方法的细节。


init() 方法:

init方法被设计成只被调用一次。这是第一次被创建时调用这个servlet,而不是再次调用每个用户请求。因此,它是用于一次性初始化,一样的Applet的init方法。
当用户创建该servlet通常首先调用相应的servlet的URL,但您也可以指定这个servlet的服务器第一次启动时被加载。
当用户调用一个servlet,每个servlet的单个实例被创建,每一个用户请求产生一个新的线程,被移交给doGet,doPost方法。简单的init()方法创建或加载一些数据将被用于整个生命周期的servlet。
init方法定义看起来像这样:
public void init() throws ServletException {
// Initialization code...
}


service() 方法:

service()方法是主要的方法来执行实际的任务。 servlet容器(如Web服务器)调用service()方法来处理来自客户端(浏览器)的请求,并写格式化响应返回给客户端。
每次服务器接收到一个servlet请求时,服务器产生一个新的线程并调用服务。 service()方法检查HTTP请求类型(GET,POST,PUT,DELETE等),并调用doGet,doPost方法,doPut,doDelete,等适当的方法。
下面是这种方法的签名:
public void service(ServletRequest request,
ServletResponse response)
throws ServletException, IOException{
}

由容器和服务方法service()方法被调用时调用doGet,doPost方法,doPut,doDelete等适当的方法。所以,service()方法什么都不用做,但你只需要重写doGet()或doPost()方法,但取决于你是什么类型的请求从客户端接收。
doGet()和doPost()方法是最常用的方法,在每一个服务请求。下面是这两种方式中的签名。


doGet() 方法

从一个正常的请求的URL或HTML的形式,有没有指定的方法,它应该被处理的doGet()方法的GET请求的结果。
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}


doPost() 方法

从一个HTML表单,具体列出POST的方法和doPost()方法,应当由POST请求的结果。
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
// Servlet code
}


destroy() 方法:

一个servlet的生命周期结束时,destroy()方法只会被调用一次。这种方法可以让你的servlet关闭数据库连接,停止后台线程,写入Cookie列表,或打计数到磁盘,并执行其他类似的清理活动的机会。
Servlet对象的destroy()方法被调用后,被标记为垃圾回收。 destroy方法定义看起来像这样:
public void destroy() {
// Finalization code...
}


架构图:

下图显示了一个典型的servlet的生命周期的情况。

第一个到服务器的HTTP请求被委派到servlet容器。

servlet容器装载,然后再调用这个servlet的service()方法。

然后servlet容器产生多个线程,每个线程执行一个单一的servlet实例的service()方法的处理多个请求。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet