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

与CGI相比,Servlet的第一个优势在于其平台独立性。只要安装了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才能运行;
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:CGI和Servlet
本文链接:https://www.vsdiffer.com/vs/cgi-vs-servlet.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。