今天偶然看到常见web服务器的介绍有Apache HTTP server、Nginx、Microsoft IIS、GWS,心中不禁产生了疑问,这些都是什么呢?一直认为tomcat就是web服务器,以下是百度对web服务器的介绍。

看到这可能有些同学不明白,通俗点来说web服务器的作用就是用户通过浏览器向web服务器发送http请求,web服务器解析http请求将请求路径的文件返回给浏览器,浏览器再将文件渲染显示给我们看,因此web服务器的作用就是返回服务端的静态文件。

  那么tomcat又是什么呢?在了解Tomcat之前我们先要知道Servlet是什么,百度上说Servlet是用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容,看到这可能又迷糊了,说半天还是不知道Servlet是什么,其实Servlet就是一种用来处理网络请求的一套规范。

  在用Eclipse搭建SSM项目的时候,不知道大家有没有导入过Servlet-api的jar包呢?这个实际上就是servlet以及它的实现。可以看到javax.servlet下的Servlet接口里面有Servlet的生命周期方法。

而javax.servlet.http下的就是基于http通信实现的servlet。而在tomcat的根目录的lib文件夹下也有servlet-api这个jar包,因此在tomcat运行应用程序时我们就不需要额外导入这个jar包了。

可以看到HttpServlet接口就定义了我们熟悉的一些http请求方法。

  了解了什么是servlet后,那么tomcat自然就很好理解了,tomcat是servlet容器,同时它也包括了web服务器的功能,因此tomcat是web服务器的扩展,也可以理解为tomcat就是web服务器。那么为什么说tomcat是servlet容器呢?字面意思容器就是可以容纳很多东西,众所周知,在tomcat上部署应用程序的时候,我们是把应用程序放在tomcat根路径下的webapps文件夹下,而这个文件夹下可以放置多个应用程序,我们可以通过请求来决定具体访问那个应用,由此我们可以知道tomcat的整个运行流程

  (1)用户通过浏览器向服务器发送请求

  (2)tomcat接收请求后解析请求具体访问哪个应用

  (3)tomcat创建一个HttpServletRequest对象,将用户发送的请求封装到这个对象里

  (4)tomcat创建一个HttpServletResponse对象

  (5)Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet对象

  (6)HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息

(7)HttpServlet调用HttpResponse对象的有关方法,生成响应数据

    (8)Servlet容器把HttpServlet的响应数据结果传给浏览器,浏览器再根据返回的response进行相应的渲染

 综上我们还可以猜测到servlet的出现就是弥补以前web服务器只能访问静态资源的问题,有了servlet我们就可以通过浏览器与服务端进行动态交互了。

以上是我学习后根据个人理解及查阅相关资料进行的总结,如有错误欢迎指正。

web服务器、tomcat、servlet是什么?它们之间的关系又是什么?的更多相关文章

  1. Servlet学习之web服务器Tomcat 详解

    Web服务器是什么 Web服务器是指驻留于因特网上某种类型计算机的程序.当Web浏览器(客户端)连到服务器上并请求文件时,服务器将处理该请求并将文件发送到该浏览器上,附带的信息会告诉浏览器如何查看该文 ...

  2. Java使用Jetty实现嵌入式Web服务器及Servlet容器

     Jetty是一个Java实现的开源的servlet容器,它既可以像Tomcat一样作为一个完整的Web服务器和Servlet容器,同时也可以嵌入在Java应用程序中,在Java程序中调用Jetty. ...

  3. Web服务器与Servlet容器

    今日要闻: Oracle启动了JRE7到JRE8的自动更新, JRE8发布于2014.3,于2014.10成为java.com默认版本, JRE7发布于2011.7, Oracle指定的Java生命政 ...

  4. java web服务器tomcat介绍【转载】

    机器矩阵2016-08-10 22:14 java程序员亲切地称他为tom猫,看到这只猫可以说明1 服务器部署成功了 ,2 网络是联通的. 到底这只猫是什么来头呢? tomcat是Apache基金会下 ...

  5. GenericServlet 、Servlet和httpServler他们之间的关系

    1.GenericServlet类是所有Servlet类的祖先类. 2.HttpServlet类继承了GenericServlet类. 3.Servlet有两个非常重要的的对象,可以说是java we ...

  6. Web服务器Tomcat集群与负载均衡技术

    我们曾经介绍过三种Tomcat集群方式的优缺点分析.本文将介绍Tomcat集群与负载均衡技术具体实施过程. 在进入集群系统架构探讨之前,先定义一些专门术语: 1. 集群(Cluster):是一组独立的 ...

  7. Java 之 web服务器—Tomcat

    一.服务器 1.服务器 服务器:安装了服务器软件的计算机 2.服务器软件 服务器软件:接收用户的请求,处理请求,做出响应 3.Web 服务器软件 web 服务器软件:接收用户的请求,处理请求,做出响应 ...

  8. 一个简单的Web服务器-支持Servlet请求

    上接 一个简单的Web服务器-支持静态资源请求,这个服务器可以处理静态资源的请求,那么如何处理Servlet请求的呢? 判断是否是Servlet请求 首先Web服务器需要判断当前请求是否是Servle ...

  9. web服务器调用Servlet的过程

    Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后: Web服务器首先检查是否已经装载并创建了该Servlet的实例对象.如果是,则直接执行第④步,否则,执行第② ...

随机推荐

  1. 【ASP.NET Core快速入门】(八)Middleware管道介绍、自己动手构建RequestDelegate管道

    中间件是汇集到以处理请求和响应的一个应用程序管道的软件. 每个组件: 可以选择是否要将请求传递到管道中的下一个组件. 之前和之后调用管道中的下一个组件,可以执行工作. 使用请求委托来生成请求管道. 请 ...

  2. Spring拓展接口之FactoryBean,我们来看看其源码实现

    前言 开心一刻 那年去相亲,地点在饭店里,威特先上了两杯水,男方绅士的喝了一口,咧嘴咋舌轻放桌面,手抚额头闭眼一脸陶醉,白水硬是喝出了82年拉菲的感觉.如此有生活情调的幽默男人,果断拿下,相处后却发现 ...

  3. 认识RabbitMQ交换机模型

    前言 RabbitMQ是消息队列中间件(Message Queue Middleware)中一种,工作虽然有用到,但是却没有形成很好的整体包括,主要是一些基础概念的认识,这里通过阅读<Rabbi ...

  4. Redux进阶(像VUEX一样使用Redux)

    更好的阅度体验 前言 redux的问题 方案目标 如何实现 思考 前言 Redux是一个非常实用的状态管理库,对于大多数使用React库的开发者来说,Redux都是会接触到的.在使用Redux享受其带 ...

  5. .net core EFCore CodeFirst 迁移出现错误【No project was found. Change the current working directory or use the --project option. 】

    PM> dotnet ef Migrations add Init No project was found. Change the current working directory or u ...

  6. zookeeper配置记录

    1. 准备三台机器,系统CentOS6 2. 将JDK和zookeeper安装包解压到目录 tar -zxvf jdk1.8.0_181-linux-x64.tar.gz -C /javatools ...

  7. 2019前端面试题汇总(主要为Vue)

    摘要: 经典面试题. 原文:2019前端面试题汇总(主要为Vue) 作者:前端小酱 Fundebug经授权转载,版权归原作者所有. 毕业之后就在一直合肥小公司工作,没有老司机.没有技术氛围,在技术的道 ...

  8. 经典面试题:从 URL 输入到页面展现到底发生什么?

    前言 打开浏览器从输入网址到网页呈现在大家面前,背后到底发生了什么?经历怎么样的一个过程?先给大家来张总体流程图,具体步骤请看下文分解! 本文首发地址为GitHub 博客,写文章不易,请多多支持与关注 ...

  9. npm --save 、-D 、--save -dev

    npm install 和 npm i 是一样 --save 和 -S 是一样 --save-dev 和 -D 是一样的 区别: -S, --save 安装包信息将加入到dependencies(生产 ...

  10. Net中获取程序集路径

      从内存中加载的程序集,无路径   IIS中路径 protected void Page_Load(object sender, EventArgs e) { Response.Write(&quo ...