Servlet的生命周期

来源:互联网 发布:淘宝爆款运营计划表 编辑:程序博客网 时间:2024/05/29 05:07

Servlet执行的步骤如下:

1, 客户机将请求发送给服务器。

2, 服务器从浏览器的地址栏获得请求的信息。并根据Web.xml配置文件找到响应的Servet执行。如果找不到,会报404错误。

3, 如果是第一次请求,那么会实例化该Servlet,调用init()方法进行初始化,该方法在Servlet 的生命周期里只执行一次。然后分配线程进行响应。如果不是第一次访问,那么会直接分配个线程进行客户的响应。

4, 在Servlet响应之前,服务器会产生request,response对象,并且把客户请求的信息封装到request对象中,然后把这两个对象传递给Servletservice()方法执行。

5, service()根据请求的方式来调用不同的方法执行。比如get请求,service()方法会request,response对象传递给doGet()方法执行,把执行后的结果保存到response对象里面。返回给客户。

6, 服务器关闭后,会调用Servletdestroy()方法进行销毁。

下面是Servetl执行的线程执行图:

letCGI程序的区别:

CGICommon Gateway Interface)公共网关接口程序也是用来创建响应请求的动态Web内容的。但与CGI相比,Servlet还有自己的优势。Servlet能够提供一个基于组件的,独立于平台的方法来创建Web应用,也没有一般CGI程序的性能限制。Servlet具有以下几个特点:

◆ 可跨平台,跨不同Web服务器进行移植。Servlet使你能够不用编写指定平台的API就能进行服务器端编程。Java Servlet API是标准Java的延伸。

◆ 具有持久性(Persistent)。一个Servlet在装入内存之后,就一直驻留内存,这意味着它能够在请求之间维持系统资源—如数据库连接。

◆ 高效的(Efficient)。当一个客户对某个Servlet发出多个请求时,服务器只创建并装入该Servlet一次。每一次重复请求只不过完成商业逻辑处理。CGI过程则对每个请求都装入一个过程,这会大大降低性能。而且,JVM使用lightweight java thread来处理对Servlet的请求,而不是像CGI那样使用一个weighty操作系统进程。

◆ 能够将表示(presentation)与商业逻辑(business logic)分离。这样一来,将一个项目划分为各个独立部分来进行开发和维护变得容易得多了。

◆ 能够获取给定的HTTP的各种调用并且从Java语言本身的继续开发中获益。



原创粉丝点击