Servlet 与 CGI 的比较 和CGI程序一样,Servlet可以响应用户的指令(提交一个FORM等等),也可以象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有连接池的概念,它可以利用多线程的优点, 在系统缓存中事先建立好若干与数据库的连接,到时候若想和数据库打交道可以随时跟系统"要"一个连接即可, 反应速度可想而知。