CGI和servlet的区别与联系

前提是你 提交于 2020-03-06 04:43:16

1、CGI(Common GateWay Interface)通用网关接口

通用网关接口,简称CGI,是一种根据请求信息动态产生回应内容的技术。通过CGI,Web 服务器可以将根据请求不同启动不同的外部程序,并将请求内容转发给该程序,在程序执行结束后,将执行结果作为回应返回给客户端。也就是说,对于每个请求,都要产生一个新的进程进行处理。
CGI弊端:
因为每个进程都会占有很多服务器的资源和时间,这就导致服务器无法同时处理很多的并发请求。

CGI衰落:
另外CGI程序都是与操作系统平台相关的,虽然在互联网爆发的初期,CGI为开发互联网应用做出了很大的贡献,但是随着技术的发展,开始逐渐衰落。 但是servlet的功能远比CGI强大的多,现在以CGI方式运行的服务器应该已经没有了

2、servlet

一种服务器端的Java应用程序,现在提起Servlet,指的都是Java Servlet。Java Servlet要求必须运行在Web服务器当中,与Web服务器之间属于分工和互补关系。确切的说,在实际运行的时候Java Servlet与Web服务器会融为一体,如同一个程序一样运行在同一个Java虚拟机(JVM)当中。

Servlet与CGI区别:
与CGI不同的是,Servlet对每个请求都是单独启动一个线程,而不是进程。这种处理方式大幅度地降低了系统里的进程数量,提高了系统的并发处理能力。另外因为Java Servlet是运行在虚拟机之上的,也就解决了跨平台问题。如果没有Servlet的出现,也就没有互联网的今天。
Servlet弊端:
在Servlet出现之后,随着使用范围的扩大,人们发现了它的一个很大的一个弊端。那就是为了能够输出HTML格式内容,需要编写大量重复代码,造成不必要的重复劳动。为了解决这个问题,基于Servlet技术产生了JavaServet Pages技术,也就是JSP。Servlet和JSP两者分工协作,Servlet侧重于解决运算和业务逻辑问题,JSP则侧重于解决展示问题。Servlet与JSP一起为Web应用开发带来了巨大的贡献,后来出现的众多Java Web应用开发框架都是基于这两种技术的,更确切的说,都是基于Servlet技术的

Servlet工作模式:
客户端发送请求至服务器;服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器;服务器将响应返回客户端。
servlet运行环境叫做web容器或servlet容器

3、相同

CGI是一种与servlet相似的工作在服务器端的web技术,两者都可以响应客户端的请求,还可以收集用户表单的信息并给予动态的反馈;

4、servlet优势

⑴servlet占用的系统资源少
每当服务器调用CGI程序的时候,服务器端就要启动一个新的线程,使用完毕再将其销毁,当同时有多个客户访问服务器的时候,服务器端就会启动很多个线程,这样的话服务器端就会变得无比臃肿,系统资源变得越来越少;

但是servlet不同,每当调用servlet时并不是启动一个新的线程,而是在服务器的进程中共享和分离线程,这样的好处是可以共享一个数据源,使系统资源被有效利用。

⑵servlet拥有CGI所没有的的可移植性
servlet的平台无关性,servlet在多种平台都可以实现它的功能继承了java的平台独立和可移植性,而CGI一旦更换系统环境程序就会瘫痪。

⑶servlet拥有数据库连接池,CGI没有
在传统技术中,一般都为“web服务器”+“数据库系统”两层结构,CGI中也是如此,这种结构在大量用户访问web应用时,与数据库建立连接的过程会变得非常缓慢,更会导致死机,数据库死锁等现象;在servlet中引入了连接池的概念,它利用多线程的优点,与数据库提前建立好若干连接,在需要建立连接时只要从连接池中取出即可使用,能够有效的缓解这种情况。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!