首先来理解一下简单的一个请求发送到响应的过程。
首先,客户端,通常是浏览器或者一些应用发送请求到你的服务器地址,比如访问你的Url或者其他的东西。而我们的服务器通常要分为两个部分,一部分是服务器硬件,有了硬件之后还有有硬件上对应运行的软件。即服务器软件其次,服务器的硬件部分接收到了这一段请求,将其递交给对应的进程,服务器软件。此时这个服务器软件即为Web服务器,比如说Apache。再然后,这些Web服务器服务器本身不一定提供动态页面的访问能力,所以对jsp或者一些其他的访问需要其他的东西来辅助实现,这个东西类似于插件(客观来讲Tomcat不是Apache的一个插件,在这里暂且理解为插件)。在本例中,这个插件就是Tomcat。Tomcat是一个运行环境,或者叫容器。Tomcat负责实例化jsp并且处理请求(通俗的讲就是“运行”jsp,搞到对应的响应信息),并且返回一个响应到apache,apache再调度硬件资源,则继续将响应返回到客户端。至此,一个响应完成。
二、定义 服务器硬件角度上说就是一台高性能的Computer。我们通常指的服务器其实应该是装有能够处理具体请求事务的服务器软件的Computer。比如最常见的www服务器、mail服务器、计费服务器、ftp服务器等等。很多时候人们常把诸如Tomcat、IIS、Weblogic 也称之为web服务器,其实这些只是用于开发、集成、部署和管理Web应用、网络应用和数据库应用的应用服务器软件。
资源网站大全 https://55wd.com 我的007办公资源网站 https://www.wode007.com
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 服务器。
ApacheApache就是一个服务器(软件),提供了静态页面的访问能力。它配置上插件(模块)后可以以各种语言实现动态页面。(但是一定要注意Tomcat并不是Apache的插件)
Tomcat