CGI和Java servlet之间的主要区别是什么?
答案 0 :(得分:24)
Servlet在一个进程中运行(具有附加功能的HTTP服务器,称为Servlet容器),只要该进程存在,它们就会存在。
CGI表示每次有客户端请求时,HTTP服务器都会创建新的进程实例来提供此请求。这是性能杀手。此外,由于每个请求都有新进程,这意味着CGI无法聚合来自内存中的多个请求的数据,因为Servlet可以,并且必须求助于外部持久存储(文件或数据库)。这也是性能杀手。
答案 1 :(得分:6)
最大的不同是CGI在十年前去世了。
Servlet是标准的,Java CGI从未真正实现过。
答案 2 :(得分:2)
Java servlet在某种容器(Tomcat,JBoss,Glassfish,Jetty等)中运行,这些容器需要运行才能提供请求。
CGI通常会为每个请求生成一个新进程(考虑启动JVM有点贵)并不是Java的最佳解决方案。
答案 3 :(得分:2)
至少,在servlet容器中使用Java servlet应该可以提供更好的性能。在Java中使用任何类型的CGI很可能必须为每个请求生成新的Java进程,这不太理想。在Web服务器端使用Java时,使用Servlet确实是最好的方法。