Java CGI与Servlets

时间:2011-12-06 14:25:51

标签: java servlets cgi

CGI和Java servlet之间的主要区别是什么?

4 个答案:

答案 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确实是最好的方法。