很多新手不明白什么是Apache、Tomcat,甚至经常搞混这两者之间的关系,今天我就详细说明下。
1、首先,Apache是web服务器,而Tomcat是应用服务器;这里什么是web服务器,应用服务器,简单说明下:web你可以简单理解为你所看到的HTML页面就是web的数据元素,处理这些数据元素的应用软件就叫WEB服务器,如apache、IIS。 web服务器与客户端打交道,它要处理的主要信息有:session、request、response、HTML等。
应用百度百科这段话:Web服务器(Web Server)可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应 (response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片, 进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者 注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。
说白了,web服务器只能解析静态页面,专门干处理http请求+响应+跳转其他鬼玩意的!!!
2、而应用服务器见名知意,举个例子,Tomcat是应用服务器,是专门做应用这块的,什么应用?比如我们的java,servlet,jsp,asp,php等这些动态语言脚本或者文件;应用服务器是一个应用执行的容器。它首先需要支持开发语言的 Runtime(对于 Tomcat 来说,就是 Java),保证应用能够在应用服务器上正常运行。其次,需要支持应用相关的规范,例如类库、安全方面的特性。对于 Tomcat 来说,就是需要提供 JSP/Sevlet 运行需要的标准类库、Interface 等。为了方便,应用服务器往往也会集成 HTTP Server (web服务器)的功能,但是不如专业的 HTTP Server(web服务器) 那么强大,所以应用服务器往往是运行在 HTTP Server(web服务器) 的背后,执行应用,将动态的内容转化为静态的内容之后,通过 HTTP Server(web服务器) 分发到客户端。
说白了,应用服务器既可以解析静态,也可以解析动态脚本或者页面,但是静态的解析当然不是他的活,他就不如web服务器。
两者之间,其实在实际开发中,是各自做好自己的事情,Apache来处理请求-->把自己干不来的事情或者不擅长的事情(比如解析什么动态的东西)交给tomcat,让这个货来干,干完了后配合Apache一起把资源响应给客户端浏览器。
实际上我们把Tomcat既可以称为web服务器,也可以称作应用服务器,但是严格干他的事情来说,应用服务器更加适合!
下面我给个介绍
常见的web服务器:Apache、Nginx、IIS
常见的既是 web应用服务器,也可以做web服务器:Tomcat、Jetty、Jboss、WebSphere、WebLogic等
总之,我们平时下载的apache-tomcat 某个版本,如apache-tomcat-8.5.39这玩意,实际上是把apache和tomcat整合一起,两个共同合作,如果下次有人问你这两个有没有区别,一定要和他们说有区别的哦,别说岔了!!!
有问题大家指出,我会及时修改!