和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有连接池的概念,它可以利用多线程的优点,在系统缓存中事先建立好若干与数据库的连接,到时候若想和数据库打交道可以随时跟系统"要"一个连接即可,反应速度可想而知。

转载于:https://www.cnblogs.com/zedosu/p/6514103.html

Servlet 与 CGI 的比较相关推荐

  1. Servlet的生命周期,及Servlet和CGI的区别

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销 ...

  2. CGI与Servlet的区别和联系

    定义: CGI(Common Gateway Interface 公共网关接口)是HTTP服务器与你的或其它机器上的程序进行"交谈"的一种工具,其程序须运行在网络服务器上. 功能: ...

  3. Servlet的生命周期 与CGI的区别

    2019独角兽企业重金招聘Python工程师标准>>> 对于Servlet,服务器只创建每个servlet的单一实例,每个用户请求都会引发新的线程-----将用户请求将会给相应的do ...

  4. java servlet applet,详解Java Servlet与Applet比较

    Java Servlet与Applet相似之处: ◆它们不是独立的应用程序,没有main()方法. ◆它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用. ◆它们都有一个生存周期,包含in ...

  5. Servlet 编程基础

    可参考博文 超文本传输协议HTTP. Servlet 概述 Servlet(Server Applet)是Java Servlet 的简称,称为小服务程序或服务连接器,用Java 编写的服务器端程序, ...

  6. C、Shell、Perl基于Tomcat开发CGI程序环境配置

    基于Tomcat7.0版本号配置CGI开发环境,步聚例如以下: 以我的Tomcat7安装文件夹为例:TOMCA_HOME = /Users/yangxin/Documents/devToos/java ...

  7. Java Servlet API中文说明文档

    Java Servlet API中文说明文档 目 录 1.... Servet资料 1.1      绪言 1.2      谁需要读这份文档 1.3      Java Servlet API的组成 ...

  8. servlet面试常问问题_50个Servlet面试问答

    servlet面试常问问题 Servlet是Java EE的一个非常重要的主题,所有Web应用程序框架(例如Spring和Struts)都建立在它之上. 这使servlet成为Java访谈中的热门话题 ...

  9. 50个Servlet面试问答

    Servlet是Java EE的一个非常重要的主题,所有Web应用程序框架(例如Spring和Struts)都建立在它之上. 这使servlet成为Java访谈中的热门话题. 在这里,我提供了50个s ...

最新文章

  1. windows下 composer常见问题及处理
  2. gorm软删除_gorm踩坑:软删除与某个字段的唯一性
  3. 【每周论文推荐】 初入深度学习CV领域必读的几篇文章
  4. 统一沟通-技巧-13-Lync-Polycom RMX 1500-配置
  5. list 排序_十个必知的排序算法|Python实例系列
  6. MySQL read-c_技术分享 | MySQL C API 参数 MYSQL_OPT_READ_TIMEOUT 的一些行为分析
  7. cf449D. Jzzhu and Numbers(容斥原理 高维前缀和)
  8. 博文视点大讲堂第24期“PPT演示之道”专题讲座成功落幕
  9. php tp框架文档,Thinkphp 框架基础之入口文件功能、定义与用法分析
  10. pb生成pbtxt时出错
  11. 硬盘IDE和AHCI模式的区别
  12. CCCC选拔赛赛后总结
  13. Vue实现在线编辑excel
  14. 账号被罚了,申诉的结果出来了,果然
  15. 【观察】首款7nm芯片服务器亮相,联想驱动数据中心再创新
  16. 2021江苏省南通市高考成绩查询时间,2021年江苏南通高考时间:6月7日至9日
  17. No qualifying bean of type ‘com.itheima.dao.BookDao1‘ available: expected single matching bean 问题解决
  18. 无法打开chm格式文件解决方法
  19. mysql match_mysql全文检索 match() against
  20. AD10问题[拖动元器件时,无法移动至与之相邻元器件][3D报错Action not avaliable in 3D view][任意角度模式下拉不了任意角度的线]

热门文章

  1. mysql 数据库属性_mysql 查看数据库属性
  2. idea 注解报错_SpringBoot 遗忘后的简单快速回忆之环境搭建与常见注解
  3. webgl babylonjs 优化
  4. KubeEdge 1.3.0 部署
  5. Qt实践录:常见控件操作示例2
  6. 我的k8s随笔:Kubernetes部署的一些输出信息
  7. Redis--Windos下的安装和使用
  8. 【mac】mac 安装 RibbitMQ 报错 Error when reading /Users/lcc/.erlang.cookie: eacces
  9. 【SpringCloud】Spring Cloud Config 配置中心
  10. 【lucene】lucene 分词 以及自定义分词器