Web服务器(Apache)与Servlet容器(Tomcat)
之前一直比较迷惑Apache与Tomcat的关系,通过查询资料,有所了解,现记录于此。
Apache与Tomcat
两者定位:Apache是HTTP Web服务器,Tomcat是Web容器。
有一个非常形象的比喻:Apache是一辆车,可以装载静态的物件(HTML静态网页等);但不能装动态的水(JSP、CGI等),要装水就需要桶(容器),当然桶也可以不放在车上而单独存放,则该容器即为Tomcat。
两者的主要区别:
- Apache是世界上最流行的Web服务器(其次是微软的IIS),可以处理浏览器的HTTP请求,默认端口为80;Tomcat是运行在Apache之上的应用服务器,为客户端提供可以调用的方法。Tomcat是一个Servlet容器(可以认为Apache的扩展),可独立运行。
- Apache只支持HTML等静态普通网页,可以单向连通Tomcat(Apache可以访问Tomcat的资源,反之不然);Tomcat是Servlet容器,可以支持JSP、PHP和CGI等,其中CGI是公共网关接口,可以用Perl编写CGI脚本。
- Apache侧重于HTTP Server;Tomcat侧重于Servlet引擎。
两者可以整合:当客户端需要请求静态资源,只需要Apache服务器响应请求;当客户端需要动态资源,如JSP,需要Tomcat服务容器(Tomcat可以将JSP解析为Servlet)。由于JSP需要JDK的数据库驱动接口,所以一般组合是Apache+Tomcat+JDK。
两篇介绍Apache服务网器比较好的博客:Apache与Tomcat的区别于联系,http://www.admin10000.com/document/974.html;web服务器apache架构与原理。
Servlet容器(Tomcat)
由于Servlet没有main方法,Servlet生命周期方法的调用受控于容器,即容器管理Servlet的生命周期,包括初始化(init)、服务调用(service)和销毁(destroy),Tomcat就是一个Servlet容器。
servlet容器基本概念:
1,Tomcat是Servlet的运行环境,即一个Servlet容器(同样的有Jetty)。
2,Servlet容器的作用是负责处理客户请求,当客户请求来到时,Servlet容器获取请求,然后调用某个Servlet,并把Servlet的执行结果返回给客户。
3,Servlet容器的工作过程是:
当客户请求某个资源时,Servlet容器使用ServletRequest对象把客户的请求信息封装起来,然后调用java Servlet API中定义的Servlet的一些生命周期方法,完成Servlet的执行,接着把Servlet执行的要返回给客户的结果封装到 ServletResponse对象中,最后Servlet容器把客户的请求发送给客户,完成为客户的一次服务过程。每一个Servlet的类都执行 init()、service()、destory()三个函数的自动调用,在启动时调用一次init()函数用以进行参数的初始化,在服务期间每当接收到对该Servlet的请求时都会调用Service()函数执行该Servlet的服务操作,当容器销毁时调用一次destory()函数。