CGI(Common Gateway Interface),通用网关接口
通用网关接口,简称CGI,是一种根据请求信息动态产生回应内容的技术。通过CGI,Web 服务器可以将根据请求不同启动不同的外部程序,并将请求内容转发给该程序,在程序执行结束后,将执行结果作为回应返回给客户端。也就是说,对于每个请求,都要产生一个新的进程进行处理。因为每个进程都会占有很多服务器的资源和时间,这就导致服务器无法同时处理很多的并发请求。另外CGI程序都是与操作系统平台相关的,虽然在互联网爆发的初期,CGI为开发互联网应用做出了很大的贡献,但是随着技术的发展,开始逐渐衰落。
Servlet
Servlet最初是在1995年由James Gosling 提出的,因为使用该技术需要复杂的Web服务器支持,所以当时并没有得到重视,也就放弃了。后来随着Web应用复杂度的提升,并要求提供更高的并发处理能力,Servlet被重新捡起,并在Java平台上得到实现,现在提起Servlet,指的都是Java Servlet。Java Servlet要求必须运行在Web服务器当中,与Web服务器之间属于分工和互补关系。确切的说,在实际运行的时候Java Servlet与Web服务器会融为一体,如同一个程序一样运行在同一个Java虚拟机(JVM)当中。与CGI不同的是,Servlet对每个请求都是单独启动一个线程,而不是进程。这种处理方式大幅度地降低了系统里的进程数量,提高了系统的并发处理能力。另外因为Java Servlet是运行在虚拟机之上的,也就解决了跨平台问题。如果没有Servlet的出现,也就没有互联网的今天。
在Servlet出现之后,随着使用范围的扩大,人们发现了它的一个很大的一个弊端。那就是为了能够输出HTML格式内容,需要编写大量重复代码,造成不必要的重复劳动。为了解决这个问题,基于Servlet技术产生了JavaServet Pages技术,也就是JSP。Servlet和JSP两者分工协作,Servlet侧重于解决运算和业务逻辑问题,JSP则侧重于解决展示问题。Servlet与JSP一起为Web应用开发带来了巨大的贡献,后来出现的众多Java Web应用开发框架都是基于这两种技术的,更确切的说,都是基于Servlet技术的。
对比
CGI(Common Gateway Interface)程序,主要用Perl、Shell Script或C编写,能够向客户端提供动态内容,即每次客户端浏览器访问某一页面时,可以看到不同的内容。CGI应用开发比较困难,因为它要求程序员有处理参数传递的知识,这不是一种通用的技能。CGI不可移植,为某一特定平台编写的CGI应用只能运行于这一环境中。每一个CGI应用存在于一个由客户端请求激活的进程中,并且在请求被服务后被卸载。这种模式将引起很高的内存、CPU开销,而且在同一进程中不能服务多个客户。
Servlet对CGI的最主要优势在于一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,Servlet进程只是在Web Server卸载时被卸载。
Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。使用Servlet Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。
Servlet对CGI的最主要优势在于一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。每个请求将生成一个新的线程,而不是一个完整的进程。多个客户能够在同一个进程中同时得到服务。一般来说,Servlet进程只是在Web Server卸载时被卸载。
Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁。
而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet 。
转自:
http://blog.csdn.net/yttcjj/article/details/6975907
分享到:
相关推荐
Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势: 性能明显更好。 Servlet 在 Web 服务器的地址空间...
- **并发处理方式**:CGI(Common Gateway Interface)程序采用多进程的方式为并发客户请求服务,而Servlet采用多线程的方式。这意味着在处理并发请求时,Servlet更加高效,因为线程共享进程的资源,启动快,且在高...
Servlet自诞生以来,逐渐取代了CGI(Common Gateway Interface),成为J2EE应用架构中的重要组成部分。在J2EE应用中,用户通常通过JSP(JavaServer Pages)与Servlet进行交互,Servlet则进一步调用EJB(Enterprise ...
Java-CGI-HOWTO-html.tar.gz 是一个包含关于如何使用Java编写CGI(Common Gateway Interface,通用网关接口)程序的手册的压缩包。CGI是一种标准,允许Web服务器与外部程序交互,从而动态生成网页内容。这个压缩包里...
这些通常是使用公共网关接口(CGI(Common Gateway Interface))应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,Javaservlet的优点在于它们的执行速度更快于CGI...
3. **Web服务器技术**:CGI(Common Gateway Interface)、PHP、ASP、JSP以及Servlet都是实现Web服务器端功能的技术。其中,Servlet是Java平台上的服务器端组件,用于处理动态内容和生成响应。 4. **JavaEE体系结构...
在 Servlet 技术出现之前,CGI(Common Gateway Interface)是服务端编程的流行选择,但 CGI 存在许多不足,例如资源消耗大、开发效率低和可伸缩性差等。Servlet API 提供了丰富的接口和类,例如 Servlet、...
1. **持久性**:与CGI(Common Gateway Interface)脚本相比,Servlet在Web服务器启动后只需加载一次,后续的多次请求可以复用同一个Servlet实例,避免了每次请求都重新加载和初始化的开销,提高了性能。 2. **平台...
与传统的CGI(Common Gateway Interface)相比,Servlet具有明显的优势。CGI每次请求都会启动新的进程,这可能导致服务器资源的浪费。而Servlet则在Servlet引擎中以多线程的方式运行,只需一个Servlet实例就可以处理...
CGI(Common Gateway Interface,通用网关接口)是网络编程中的一个重要概念,它定义了一种标准,使得Web服务器能够与各种脚本语言或应用程序进行交互,以动态生成网页内容。这个压缩包“网络编程基础篇系列(cgi)....
Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。 ———————————————— 版权声明:本文为CSDN博主「那山的狐狸」的原创文章,遵循CC ...
与传统的CGI(Common Gateway Interface)相比,Servlet有显著的优势。CGI每次请求都会启动新的进程,而Servlet则使用线程来处理请求,更加高效。由于基于Java,Servlet具有跨平台性,可以在支持Java的任何Web服务器...
Servlet的核心优势在于它的高效性和可扩展性,相较于早期的CGI(Common Gateway Interface)技术,Servlet在处理大量并发请求时表现更优,因为它可以在内存中保持一个实例,避免了对每个请求都创建新对象的开销。...
相比CGI(Common Gateway Interface),Servlet采用多线程模型,每个请求可以在单独的线程中处理,提高了效率。此外,Servlet可以利用Java的类库和API,如JDBC(Java Database Connectivity)来访问数据库,提供更...
相比于早期的Common Gateway Interface(CGI),Servlet在性能和跨平台能力上有显著优势。Servlet运行在Java虚拟机上,通过多线程模型处理并发请求,减少了系统资源的消耗。此外,由于Servlet遵循Java标准API,因此...
1. CGI(Common Gateway Interface):早期的动态网页技术,虽然功能强大但效率较低,主要用于Linux/Unix系统。 2. ASP(Active Server Pages):Windows平台上的脚本语言,结合HTML、JavaScript/VBScript和COM组件...
Servlet与传统的CGI(Common Gateway Interface)相比,具有更高的性能和更好的可移植性。 【过滤器Filter】是Servlet技术中的一个重要概念,它允许开发者在请求到达目标Servlet之前或者响应离开Servlet之后进行...