CGI和Servlet之间的区别

CGI与Servlet

CGI(通用网关接口)是向用户提供动态内容的第一次尝试。它允许用户执行驻留在服务器中的程序来处理数据甚至访问数据库以生成相关内容。由于这些是程序,因此它们在本机操作系统中编写,然后存储在特定目录中。 servlet是Java的一种实现,旨在提供与CGI相同的服务,但它不是在本机操作系统中编译的程序,而是编译成Java字节码,然后在Java虚拟机中运行。虽然Java程序可以编译成本机代码,但它们仍然喜欢在Java字节码中编译。

servlet优于CGI的第一个优势在于其平台独立性。只要安装了JVM,Servlet就可以在任何操作系统上运行,这意味着即使您选择切换操作系统也不会有任何问题。使用CGI,切换操作系统是一个困难且费力的过程,因为您需要在新操作系统中重新编译程序。

由于您在CGI中运行独立程序,因此它们在执行时会创建自己的进程,这是servlet不会发生的事情,因为它们只是共享JVM的内存空间。这可能导致与开销相关的问题,尤其是当您以指数方式增加用户数时。它还会产生漏洞问题,因为一旦在服务器上运行程序,就不会以任何方式对其进行控制。

稍后,使用CGI时更常用的方法是通过脚本。这减少了创建程序所需的时间,并且通常更安全。使用CGI,您可以立即运行脚本,而servlet则需要将脚本转换为Java并将其编译为一个servlet,这会增加一点加载时间。

摘要: 1.CGI通常是服务器操作系统本机的可执行文件,虽然servlet也可以编译为本机操作系统,可以编译为Java字节码,然后在JVM上运行 2.CGI程序依赖于平台,而servlet与平台无关 3.CGI程序在计算机上作为单独的进程运行,而servlet在JVM上运行 4.CGI比servlet更容易受到攻击 5.CGI可以在需要翻译和编译脚本之前直接处理脚本,然后才能作为servlet运行