概括来讲,Servlet可以完成和CGI相同的功能。
1.CGI程序来实现数据在Web上的传输,使用的是如Perl这样的语言编写的,
它对于客户端作出的每个请求,必须创建CGI程序的一个新实例,
这样占用大量的内存资源。由此才引入了Servlet技术。
2.Servlet是一个用java编写的应用程序,在服务器上运行,
处理请求信息并将其发送到客户端。对于客户端的请求,
只需要创建Servlet的实例一次,因此节省了大量的内存资源。
Servlet在初始化后就保留在内存中,因此每次作出请求时无需加载。
3.CGI应用开发比较困难,因为它要求程序员有处理参数传递的知识,
这不是一种通用的技能。CGI不可移植,为某一特定平台编写的CGI应用只能运行于这一环境中。
每一个CGI应用存在于一个由客户端请求激活的进程中,并且在请求被服务后被卸载。
这种模式将引起很高的内存、CPU开销,而且在同一进程中不能服务多个客户。
4.Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。
使用Servlet Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。
5.Servlet对CGI的最主要优势在于一个Servlet被客户端发送的第一个请求激活,
然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,
而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,
Servlet进程只是在Web Server卸载时被卸载。 |