嘉定网站建设公司网站维护中是什么意思
文章目录
- 概述
- 1. Apache和Tomcat区别
- 2. WEB服务器、应用程序服务器、HTTP服务器区别
- 2.1 总结
- 3. servlet容器
- 3.1 Servlet容器和ServletContext的关系:
- 参考
相关文章:
spring容器和springmvc容器,以及web容器(tomcat是具体的一种实现)的关系
Apache和Tomcat区别 & WEB服务器(容器)、应用程序服务器、HTTP服务器区别
【Tomcat】Web容器是什么?Tomcat 就是一个“HTTP 服务器 + Servlet 容器”的Web容器
概述
web技术分为动态
(servlet技术)和静态html
;
不管动态还是静态,访问web都是通过http协议,你理解为都是url访问(不管动态还是静态都是url访问),因此一般web服务器==HTTP服务器
web容器(web服务器)主要有:Apache、IIS、Tomcat、Jetty、JBoss、webLogic等,而Tomcat、Jetty、JBoss、webLogic同时也是servlet容器,或者说他们还包含了servlet容器,原因是支持动态,即servlet技术。
与动态不同的是,Apache仅支持静态Hmtl
1. Apache和Tomcat区别
对比项 | 服务器种类 | 解释java程序 | 资源区别 |
---|---|---|---|
Apache | Web服务器 | 不能 | 仅支持html,img等静态资源,不支持动态请求如:CGI、Servlet/JSP、PHP、ASP |
Tomcat | Java服务器(Servlet容器) | 能 | 既支持JSP,Servlet等动态资源,也支持静态页,但效率没有Apache高 |
Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别:
-
Apache是web服务器(仅支持静态解析,如HTML)
也就是说你在服务器的目录下面丢个index.html,通过http:xxx//8080/index.html可以访问
倘若丢个index.jsp,无法解析,无法通过http:xxx//8080/index.jsp访问 -
tomcat是java应用服务器(支持动态解析,如JSP)
确切的说tomcat是轻量级应用服务器,下文会再次介绍
index.html和index.jsp均支持,但对静态文件处理的性能差,这一点不如Apache 效率高
Tomcat只是一个servlet
(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。
Apache是很最开始的页面解析服务,tomcat是后研发出来的,从本质上来说tomcat的功能完全可以替代Apache,但Apache毕竟是tomcat的前辈级人物,并且市场上也有不少人还在用Apache,所以Apache还会继续存在,不会被取代,apache不能解析java的东西,但解析html速度快
。
因此,由于各有优缺点,一般会整合使用:
- 如果请求是静态网页则由Apache处理,并将结果返回;
- 如果是动态请求,Apache会将解析工作转发给Tomcat处理,Tomcat处理后将结果通过Apache返回。
这样可以达到分工合作,实现负载均衡,提高系统的性能。
2. WEB服务器、应用程序服务器、HTTP服务器区别
Web 应用架构图:
WEB服务器、应用程序服务器、HTTP服务器有何区别?IIS、Apache、Tomcat、Weblogic、WebSphere都各属于哪种服务器,这些问题困惑了很久,今天终于梳理清楚了:
- Web服务器的基本功能就是提供Web信息浏览服务。它只需支持
HTTP协议、HTML文档格式
及URL。与客户端的网络浏览器配合。因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的
(有没有支持除HTTP之外的协议的web服务器,作者没有考证过),说的是一回事。
简单来说web服务就是处理http请求,提供入口或提供加载静态页面的功能
-
应用程序服务器(简称应用服务器),我们先看一下微软对它的定义:“我们把应用程序服务器定义为“作为服务器执行共享业务应用程序的底层的系统软件”。 就像文件服务器为很多用户提供文件一样,应用程序服务器让多个用户可以同时使用应用程序(通常是客户创建的应用程序)”
简单来说应用程序服务器就是能处理业务的,比如cpu处理运算或和数据库进行交互
通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑 (business logic)。
以Java EE为例,Web服务器主要是处理静态页面处理和作为 Servlet容器,解释和执行servlet/JSP,而应用服务器是运行业务逻辑的,主要是EJB、 JNDI和JMX API等J2EE API方面的,还包含事务处理、数据库连接等功能,所以在企业级应用中,应用服务器提供的功能比WEB服务器强大的多。
以这样的定义,IIS、Apache、Tomcat都可以属于Web服务器,Weblogic、WebSphere都属于应用服务器。
-
Apache
:在Web服务器中,Apache是纯粹的Web服务器,经常与Tomcat配对使用。它对HTML页面具有强大的解释能力,但是不能解释嵌入页面内的服务器端脚本代码(JSP/Servlet)。 -
Tomcat
:早期的Tomcat是一个嵌入Apache内的JSP/Servlet解释引擎Apache+Tomcat就相当于IIS+ASP。后来的Tomcat已不再嵌入Apache内,Tomcat进程独立于Apache进程运行。 而且,Tomcat已经是一个独立的Servlet和JSP容器,业务逻辑层代码和界面交互层代码可以分离了。因此,有人把Tomcat叫做轻量级应用服务器
。 -
IIS
:微软早期的IIS,就是一个纯粹的Web服务器。后来,它嵌入了ASP引擎,可以解释VBScript和JScript服务器端代码了,这时,它就可以兼作应用服务器。当然,它与J2EE应用服务器根本无法相比,但是,从功能上说,从原理上说,它勉强可以称之为应用服务器。确切地说,它是兼有一点应用服务器功能的Web服务器。
综上:Apache是纯粹的web服务器,而Tomcat和IIS因为具有了解释执行服务器端代码的能力,可以称作为轻量级应用服务器或带有服务器功能的Web服务器。Weblogic、WebSphere因为能提供强大的J2EE功能,毫无疑问是绝对的应用服务器。对于处于中间位置的Tomcat,它可以配合纯Web服务器Apache一起使用,也可以作为应用服务器的辅助与应用服务器一起部署
2.1 总结
一个软件有多个身份,如下图所示,因此界限有所模糊:
- Web服务器是提供WWW服务的程序;
- Web容器是提供给开发者的框架;
- Web应用程序服务器内容丰富得多,既可用各厂商通常遵循一定的工业标准并自定义扩展功能而成,也可以利用开源组件轻量级拼装打造;
- 反向代理服务器在企业级应用中表现突出,具有解决集中式安全,负载均衡等等优点。
如今这四个概念的边界越来模糊,看看这个表就知道了:
3. servlet容器
我们前面提到了动态技术,即servlet技术,因此支持动态技术的,可以称为servlet容器或servlet服务器
Servlet容器是管理servlet对象
的。
Servlet容器的作用:
负责处理客户请求,当客户请求来到时,Servlet容器获取请求,然后调用某个Servlet,并把Servlet的执行结果返回给客户。
使用Servlet容器的原因:
-
通信支持:利用容器提供的方法,你能轻松的让servlet与web服务器对话,而不用自己建立serversocket、监听某个端口、创建流等 等。容器知道自己与web服务器之间的协议,所以你的servlet不用担心web服务器(如Apache)和你自己的web代码之间的API,只需要考虑如何在servlet中实现业务逻辑(如处理一个订单)。
-
生命周期管理:servlet容器控制着servlet的生与死,它负责加载类、实例化和初始化
servlet,调用servlet方法,以及使servlet实例被垃圾回收,有了servlet容器,你不需要太多的考虑资源管理。 -
多线程支持:容器会自动为它所接收的每个servlet请求创建一个新的java线程。针对用户的请求,如果servlet已经运行完相应的http服务方法,这个线程就会结束。这并不是说你不需要考虑线程安全性,其实你还会遇到同步问题,不过这样能使你少做很多工作。
-
声明方式实现安全:利用servlet容器,可以使用xml部署描述文件来配置和修改安全性,而不必将其硬编码写到servlet类代码中。
-
JSP支持:servlet容器负责将jsp代码翻译为真正的java代码。
3.1 Servlet容器和ServletContext的关系:
Servlet容器等价于ServletContext
ServletContext
是servlet与servlet容器之间的直接通信的接口。Servlet容器在启动一个Web应用时,会为它创建一个servletContext对象。每个web应用有唯一的servletContext对象。同一个web应用的所有servlet对象共享一个serveltContext,servlet对象可以通过它来访问容器中的各种资源。
也就是说一个web应用对应一个新的ServletContext,这个应用下的多个servlet对象共享一个serveltContext。
多个web应用就有多个ServletContext
我们以tomcat为例,对应关系如下:
Tomcat更多结构参见 【Tomcat】Web容器是什么?Tomcat 就是一个“HTTP 服务器 + Servlet 容器”的Web容器
参考
《WEB服务器、应用程序服务器、HTTP服务器区别》