世界已进入移动优先时代,但即使在今天,任何应用程序都无法像基于 Web 的应用程序那样有效。最重要的是渐进式网络应用程序的流行,这些应用程序执行与移动应用程序相同的功能。在本文中,我们将了解基于 Web 的应用程序中的两个功能之间的区别,即 servlet 和 CGI。

Servlet 是一个 Java 类,用于扩展托管通过请求-响应模型访问的应用程序的服务器的功能。Servlet 主要用于扩展 Web 服务器托管的应用程序,但是它们也可以响应其他类型的请求。对于此类应用程序,特定于 HTTP 的 servlet 类由 Java Servlet 技术定义。Servlet 的所有程序都是用 JAVA 编写的,它们可以在 JAVA 虚拟机上运行。下图描述了如何在线程的帮助下处理来自客户端的请求:

Java Servlet 和 CGI 的区别

通用网关接口(CGI): 通用网关接口(CGI)提供WWW服务器与外部数据库和信息源之间的中间件。万维网联盟 (W3C) 定义了通用网关接口 (CGI),还定义了程序如何与超文本传输协议 (HTTP) 服务器交互。Web 服务器通常将表单信息传递给处理数据并可能发回确认消息的小型应用程序。这种在服务器和应用程序之间来回传递数据的过程或约定称为通用网关接口 (CGI)。下图描述了 Web 服务器如何充当 CGI 程序和客户端浏览器之间的中介。

下表解释了 servlet 和 CGI 之间的区别:

基础 Servlet CGI
方法 Servlet是基于线程的,即为每个新请求创建新线程。 CGI是基于进程的,即为每个新请求创建新进程。
使用的语言 Servlet代码是用 JAVA 编程语言编写的。 CGI代码是用任何编程语言编写的。
面向对象 由于代码是用 Java 编写的,因此Servlet是面向对象的,用户将获得 OOP 的好处 由于代码是用任何语言编写的,因此所有语言都不是基于线程的面向对象的。因此,用户不会获得 OOP 的好处
移植性 Servlet是移植性的。 CGI不是移植性的。
持久性 Servlet一直保留在内存中,直到它被显式销毁。 CGI在基于进程的请求完成后从内存中删除。
服务器独立 Servlet可以使用任何网络服务器。 CGI可以使用支持它的网络服务器。
数据共享 Servlet数据共享是可能的。 CGI数据共享是不可能的。
链接 Servlet直接链接到服务器。 CGI不会将 Web 服务器直接链接到服务器。
HTTP服务器 Servlet可以读取和设置 HTTP 服务器。 CGI既不能读取也不能设置 HTTP 服务器。
成本 新线程的构建和销毁并不昂贵。 新进程的构建和销毁成本很高。
速度 Servlet的速度较慢。 CGI可以速度更快。
平台依赖 可以依赖平台 CGI可以不依赖平台。