黑马程序员技术交流社区

标题: 问个关于servlet的生命周期问题 [打印本页]

作者: 元亨利贞    时间: 2014-4-22 23:04
标题: 问个关于servlet的生命周期问题
Servlet的生命周期是怎样的?它和CGI的区别有哪些?
作者: 别小乐    时间: 2014-4-22 23:10
朋友你好!
生命周期 :
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

区别是:cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
作者: ☆枫の云    时间: 2014-4-22 23:37
Servlet的生命周期分为5个阶段:
实例化:Servlet容器创建Servlet类的实例。
初始化:该容器调用init()方法,通常会申请资源。
服务:由容器调用service()方法,(也就是doGet()和doPost())。
破坏:在释放Servlet实例之前调用destroy()方法,通常会释放资源。
不可用:释放内存的实例。

CGI(Common Gateway Interface通用网关接口)程序来实现数据在Web上的传输,使用的是如Perl这样的语言编写的,它对于客户端作出的每个请求,必须创建CGI程序的一个新实例,这样占用大量的内存资源。由此才引入了Servlet技术。

Servlet是一个用java编写的应用程序,在服务器上运行,处理请求信息并将其发送到客户端。对于客户端的请求,只需要创建Servlet的实例一次,因此节省了大量的内存资源。Servlet在初始化后就保留在内存中,因此每次作出请求时无需加载。
作者: 郭珍    时间: 2014-4-24 00:58
Servlet的生命周期可以分为加载、实例化、初始化、处理客户请求和卸载五个阶段,体现在方法上主要是init()、service()和 destroy()三个方法。
(1) Servlet容器完成加载Servlet类和实例化一个Servlet对象
(2) init()方法完成初始化工作,该方法由Servlet容器调用完成
(3) service()方法处理客户端请求,并返回响应结果
(4) destroy()方法在Servlet容器卸载Servlet之前被调用,释放一些资源

Servlet与CGI的区别:
servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
作者: 酱油炒饭    时间: 2014-4-29 16:32
长知识 长知识啊~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2