首先说说我们知道的服务器,比如 IIS, Tomcat, Jboss等.它们都与web应用有关,IIS是一种Web服务组件,包括Web服务器,FTP服务器,NNTP服务器和SMTP服务器; Tomcat属于轻量级Web服务器,中小型项目中我们经常用到; Jboss属于重量级的Web应用服务器,包括EJB容器和Web服务器,我们的ITOO项目用的就是Jboss.
我们来看看Web服务器和Web应用的关系.
Web服务器与Web应用属于不同的范畴,它们间需要借助标准的接口来协作,Servlet是主要的一个接口.
Servlet容器:
它是JavaWeb应用中最核心,最常用的组件.我们还记得在web.xml文件中配置过Servlet元素,这是因为客户请求访问特定Servlet前,Servlet容器需要创建一系列与Servlet有关的对象.我们来了解下这一过程.
客户端发出一个请求,有求就得有应啊,于是Servlet容器就站出来它说要接收,接收完请求得干活啊,于是它得解析这个请求,于是左创建一个ServletRequest对象,(包含了客户请求等信息).右创建一个ServletResponse对象.当Servlet容器调用特定Servlet的service方法的时候,ServletRequest和ServletResponse就被悄悄地送进去做参数了.特定的Servlet这下高兴了,从ServletRequest对象中取得客户请求信息,利用ServletResponse对象生成相应结果.Servlet容器一看,哇塞,结果出来了,转手就发给客户了.
Servlet容器是个神马玩意呢?好像它并没干多少活,就是要了客户的需求,造了两个小兵,让小兵背走需求去搞,它还告诉小兵在service方法调用的时候,它要把需求倒背如流,搞完了就让另一个小兵把结果给运回来.容器创造了对象并让对象协调工作,并能对外进行良好的沟通.啧啧啧,很牛.
说得好不如画的好,有图有真相.
Servlet接口:
所有的Servlet都实现了Servlet接口,接口中有五个方法.分别是:
Init();
Service();
destory();
getServletConfig();
getServletInfo();
其中,Init(),Service()和destory()是由容器调用的,在不同的Servlet生命周期阶段分别调用.容器初始化一个Servlet对象时,创建一个ServletConfig对象,包含这个Servlet的初始化参数信息.ServletConfig对象只对一个Servlet有效,不能被另一个Servlet访问到.
在Servlet相关的对象中还有一个ServletContext对象,ServletContext和ServletConfig不同的是:ServletContext对任何Servlet都有效,是全局对象.我们会在下篇博客中对这二者进行详细的了解.