servlet之出现的背景

1. web运行模式

     所谓的出现背景,其实就是“为什么会想到创造servlet”。在解释这个问题需要了解的前提的是Web的运行模式,Web是以客户端/服务器端的模式,通过HTTP协议来交互的。奠定了这个基础之后,再来看无论我们通过本地机即客户端上网做什么,比如搜索一个查询,打开一个邮件,请求所得到的页面还有各种各样的数据都是从服务器端得到的。服务器是一个设备,它可以根据网络上的不同的客户所提交的请求而提供不同的信息。所以总结一句话就是:客户端请求,服务器端提供信息


2.CGI和servlet实现数据交互


       下面就很自然的想到一个问题,如何实现客户端和服务端在Web上的数据交互。这个问题的引出了servlet出现的背景。

最开始的时候是通过编写CGI(CommonGateway Interface)通用网关接口程序来实现的。那么CGI这个东西到底是怎么实现,其实我也不是很懂,但是这个不是我现在需要最需要了解的,我需要了解的是CGI能够完成什么。很明显,前面提到了CGI实现的是在Web上客户端和服务端的数据交互。但是一开始我也提到了这个是最开始的时候使用的东西,后面servlet就将CGI代替了。写到这里就了解到了一个很重要的信息,servlet能够完成的东西就是CGI完成的东西,即在客户端和服务器端进行数据交互。


3.CGI和servlet的区别


那么下一个问题是为什么servlet会将CGI代替。现在就需要了解一下这两个东西一些实现原理的东西。

CGI是根据浏览器的HTTP请求激活响应进程,每一个请求对应一个进程,当同时有很多请求时,程序挤占系统资源,造成效率低下。

       servlet是引入了采用多线程来代替进程的技术。

       所以可以看到两个技术其实就是进程和线程的区别,那么进程和线程到底有什么区别呢?

1、程序:程序是为完成特定任务、用某种语言编写的一组指令的集合。指一段静态的代码。

下图就是一段c++代码:


2、进程:从程序代码的加载、执行到执行完毕的动态过程。

      每个进程所占用的系统资源相对独立,并有它自己的专用的内存区域(PCB进程控制块)。同一个应用程序可以被多次加载到系统的不同内存区域,分别执行,形成不同的进程。是系统进行调度和资源分配的一个独立单位。


进程和程序的联系:进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。

3、线程:线程是比进程更小一级的执行单元,是对CPU单元的独立占有的最小单位。

      线程和进程的联系:线程不能独立存在,必须存在于进程中,各线程间共享进程空间的数据。一个进程在其执行过程中,可以产生多个线程,从而实现程序的并发执行。每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念。

线程创建、销毁和线程间切换的代价远小于进程,又称为轻量级进程(lightweight process)

使用线程的好处:

系统负担小,主要是CPU的分配。

使同一个程序能有几个并行执行的路径,提高了执行速度,线程需要的系统开销比进程要小。

有效的利用系统资源、提高程序的数据吞吐量、更好的发挥硬件的性能


4.总结


         总结下来,那么就能够很清楚的知道当我们用CGI通用网关接口来实现数据在WEB上的传递时,对于客户端的每一个请求必须开启一个新实例的进程,可想而知它的速度和效率。为了避免这种损耗,解决这个问题,我们就引入了采用多线程来代替进程的技术—JAVA方向的Servlet技术,能够很清楚的看到Servlet的生命周期,只需要初始化一次Servlet,以后就可以反复的使用。

      如果有10个人在线,那么CGI就得开10个进程。而类似于JSP,ASP 都是一个进程处理多个请求的,无论多少人在线,都只有一个进程。并且Servlet使用标准的API,可以被许多WEB服务支持,与平台无关。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值