Web容器_Web服务器及常见的Web容器有哪些?

更新日期: 2018-12-15阅读: 3.1k标签: 容器

一、引言

首先来理解一下简单的一个请求发送到响应的过程。

首先,客户端,通常是浏览器或者一些应用发送请求到你的服务器地址,比如访问你的Url或者其他的东西。而我们的服务器通常要分为两个部分,一部分是服务器硬件,有了硬件之后还有有硬件上对应运行的软件。即服务器软件其次,服务器的硬件部分接收到了这一段请求,将其递交给对应的进程,服务器软件。此时这个服务器软件即为Web服务器,比如说Apache。再然后,这些Web服务器服务器本身不一定提供动态页面的访问能力,所以对jsp或者一些其他的访问需要其他的东西来辅助实现,这个东西类似于插件(客观来讲Tomcat不是Apache的一个插件,在这里暂且理解为插件)。在本例中,这个插件就是Tomcat。Tomcat是一个运行环境,或者叫容器。Tomcat负责实例化jsp并且处理请求(通俗的讲就是“运行”jsp,搞到对应的响应信息),并且返回一个响应到apache,apache再调度硬件资源,则继续将响应返回到客户端。至此,一个响应完成。


二、定义

服务器

硬件角度上说就是一台高性能的Computer。我们通常指的服务器其实应该是装有能够处理具体请求事务的服务器软件的Computer。比如最常见的www服务器、mail服务器、计费服务器、ftp服务器等等。很多时候人们常把诸如Tomcat、IIS、Weblogic 也称之为web服务器,其实这些只是用于开发、集成、部署和管理Web应用、网络应用和数据库应用的应用服务器软件。


Web服务器

web服务器可以处理Http协议,当web服务器接受到一个Http请求,会返回一个Http响应,例如送回一个html页面。

web服务器可以响应针对静态页面或者图片的请求,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序,例如 CGI 脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端 JavaScript,或者一些其它的服务器端技术

web服务器仅仅提供一个可以执行服务器端程序和返回(程序产生)响应的环境,而不会超出职能范围

web服务器主要是处理需要向浏览器发送Html的请求以供浏览

Web服务器也可以叫做应用服务器。它的功能比web容器要强大的多,因为它可以部署EJB应用,可以实现容器管理的事务,一般的应用服务器有weblogic和websphere等,它们都是商业服务器,功能强大但都是收费的。

Web应用程序需要部署到Web容器或者Web服务器中才能运行,两者都必须符合J2EE规范。


Web容器

web容器就是一种服务程序,在服务器中一个端口就对应一个提供相应服务的程序(比如Apache默认的端口为80),给处于其中的应用程序组件提供环境,使其直接跟容器中的环境变量交互,不必关注其它系统问题。而这个程序就是处理服务器从客户端收到的请求,如Java中的Tomcat容器,ASP的IIS都是这样的容器。这些容器兼容了Web服务器软件的一些功能。一个服务器可以有多个容器。

如果web服务器应用得到一个指向servlet的请求(而不是其他请求,如请求一个普通的静态HTML),此时服务器不是把这个请求交给servlet本身,而是交给部署该servlet的容器,要由容器调用servlet的方法,如doPost()或doGet()。

笔者在网上搜到的这些概念,很多时候也都混淆不清。容器和服务器有时候的定义也比较模糊,容器兼有了服务器的职责和能力。

容器中,中小型的Tomcat,Nginx大型的,JBoss、Weblogic、WebSphere等

 

应用程序服务器 The Application Servlet

根据定义,作为应用程序服务器,要求可以通过各种协议包括Http协议把商业逻辑暴露给expose客户端应用程序,应用程序使用此商业逻辑就像你调用对象的一个方法或过程一样。

Servlet(Server Applet),全称 Java Servlet,未有中文译文。是用 Java 编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者。

Servlet 运行于支持 Java 的应用服务器中。从实现上讲,Servlet 可以响应任何类型的请求,但绝大多数情况下 Servlet 只用来扩展基于 HTTP 协议的 Web 服务器。


Apache 

Apache就是一个服务器(软件),提供了静态页面的访问能力。它配置上插件(模块)后可以以各种语言实现动态页面。(但是一定要注意Tomcat并不是Apache的插件)

Tomcat 

Apache Tomcat(即平时所说的Tomcat),也是一个服务器。在这个案例中,Tomcat充当了一个插件的作用,这个插件是针对于Java的,或者说是jsp/servlet的。它是一个容器。何为容器?容器么,就是容器。容的是什么,JSP、Servlet。容器管理jsp、servlet的声明周期,包括创建,运行,销毁。它是一个jsp、servlet的运行环境。通俗点说,请求发过来,Tomcat负责执行JSP、Servlet,并返回结果。关于生命周期这东西,在此不做阐述。也就是说,没有Tomcat,Apache是不认你JSP的。懂设计模式的可以想想了。。。当然,整个过程都有设计模式的影子

要注意:Tomcat本身也是可以单独作为服务器来运行的。Tomcat 有时也被称为Apache Tomcat,这个Apache指的并不是Apache服务器,而是一个“商标”,因为Tomcat是属于Apache这个项目的 

Apache与Tomcat比较联系

apache支持静态页,tomcat支持动态的,比如servlet等。

一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的。

apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apache后台支撑,将java请求由apache转发给tomcat处理。

apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。

共同点

两者都是apache组织开发的

两者都有HTTP服务的功能

两者都是免费的

不同点: 

Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)

Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器

来源:https://www.cnblogs.com/baiyunwanglai/p/10121650.html 

 

链接: https://fly63.com/article/detial/1590

css实现图片自适应容器的几种方式

css实现图片自适应容器:经常有这样一个场景,需要让图片自适应容器的大小。img标签的方式:我们马上就能想到,把width、height 设置为100%啊。来看一哈效果。

销毁servlet

web容器可能决定一个Servlet是否从servic中移除(例如,当一个容器想要回收内存资源时或者被关闭时)。在上面的场景中,容器会调用Servlet接口的destroy方法。在方法中,可以释放servlet使用的任何资源

搞懂依赖注入, 用 PHP 手写简易 IOC 容器

好的设计会提高程序的可复用性和可维护性,也间接的提高了开发人员的生产力。今天,我们就来说一下在很多框架中都使用的依赖注入。要搞清楚什么是依赖注入如何依赖注入,首先我们要明确一些概念。

如何优雅监听容器高度变化

不管是对元素的哪种操作,都会造成它的属性、子孙节点、文本节点发生了变化,如果能能监听得到这种变化,这时只需比较容器宽高变化,即可实现对容器宽高的监听,而无需关系它外部行为。DOM3 Events 规范为我们提供了 MutationObserver 接口监视对 DOM 树所做更改的能力

css怎么使容器放不下自动换行?

css可以通过word-break与white-space这两个属性来设置自动换行。word-wrap属性允许长单词或URL地址换行到下一行。white-space属性可以设置文本换行方式。

Node.js/Deno 之父关于JavaScript成为新一代容器的思考

服务端绝大部分程序都是 Linux 程序。这些程序一般由文件系统、一些可执行文件,一些共享的库文件(这些库文件与一些系统库例如 systemd 或者 nsswitch 做交互)。Docker 让使用 Linux 容器变得更容易

CSS容器查询

CSS容器查询终于来了! 它们目前在谷歌浏览器(105)中得到了支持,很快就会在Safari 16中得到支持。这对前端来说容器查询与媒体查询一样重要。在这节课中,我们介绍一下容器查询是如何工作的,如何使用它们

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!