Servlet 与 CGI 的比较

Servlet 与 CGI 的比较
和CGI程序一样,Servlet可以响应用户的指令(提交一个FORM等等),也可以象CGI程序一样,收集用户表单的信息并给予动态反馈(简单的注册信息录入和检查错误)。
然而,Servlet的机制并不仅仅是这样简单的与用户表单进行交互。传统技术中,动态的网页建立和显示都是通过CGI来实现的,但是,有了Servlet,您可以大胆的放弃所有CGI(perl?php?甚至asp!),利用Servlet代替CGI,进行程序编写。
对比一:当用户浏览器发出一个Http/CGI的请求,或者说 调用一个CGI程序的时候,服务器端就要新启用一个进程 (而且是每次都要调用),调用CGI程序越多(特别是访问量高的时候),就要消耗系统越多的处理时间,只剩下越来越少的系统资源,对于用户来说,只能是漫长的等待服务器端的返回页面了,这对于电子商务激烈发展的今天来说,不能不说是一种技术上的遗憾。
而Servlet充分发挥了服务器端的资源并高效的利用。每次调用Servlet时并不是新启用一个进程 ,而是在一个Web服务器的进程敏感词享和分离线程,而线程最大的好处在于可以共享一个数据源,使系统资源被有效利用。
对比二:传统的CGI程序,不具备平台无关性特征,系统环境发生变化,CGI程序就要瘫痪,而Servlet具备Java的平台无关性,在系统开发过程中保持了系统的可扩展性、高效性。
对比三:传统技术中,一般大都为二层的系统架构,即Web服务器+数据库服务器,导致网站访问量大的时候,无法克服CGI程序与数据库建立连接时速度慢的瓶颈,从而死机、数据库死锁现象频繁发生。而我们的Servlet有连接池的概念,它可以利用多线程的优点,在系统缓存中事先建立好若干与数据库的连接,到时候若想和数据库打交道可以随时跟系统"要"一个连接即可,反应速度可想而知。

CGI和servlet 的总结与对比:

  1. CGI: 主要用Perl、Shell Script或C编写
    Servlet:用java语言编写
  2. CGI:每个请求都会启动一个新的进程,每个进程只为一个客户所服务,导致服务器内存和cpu开销大。
    Servlet:每个请求会产生新的线程,而不是进程,减少系统中进程数量,并发处理能力强。多个客户能在同一个进程中的同时得到服务。
  3. CGI进程在服务完成后就被销毁,所以效率上低于servlet。
    Servlet进程(实例)处于服务器进程中,只有在服务器被卸载时才会被卸载。
  4. CGI是不可移植的,是运行于特定平台上的。
    Servlet是可移植的,运行于JVM上的。

HashMap继承于map,使用键值对方式存储数据,能够进行快速的存取操作,不会按照插入顺序进行排序。

Servlet 与 CGI 的比较_第1张图片

你可能感兴趣的:(java)