以一次JSP请求响应为例,讲解服务器,Apache、Tomcat之间的关系。

  • 带着这样一个概念去看:Apache与Apache Tomcat(简称Tomcat)都是可以独立运行的服务器。你平时见到的apache-tomcat-7.0.72实际上只是Tomcat服务器。此处整合了Apache和Apache Tomcat。Apache用来处理静态资源,减少Tomcat的服务开销。

先来个热身

一个请求到发出到响应返回的全过程 

  • 首先,客户端发出一个请求 
    看到浏览器上的URL地址了么,那就是你的请求的主要内容。请求以一串文本的形式发送,例如http://www.baidu.com代表按照http协议获取www.baidu.com这个资源(关于资源的概念请参见URI和URL)。当然实际上你的请求不是这么写的,这么写只是为了让你有一个直观的感受,具体请参见HTTP协议

  • 第二步,服务器(硬件)收到这个请求,也就是那一串文本。 
    服务器的概念之一就是一台电脑。你提交的请求会被发送到这台电脑上。 
    显然啊,服务器就是一台电脑,没有软件的话它是无法识别请求并做出响应的

  • 第三步,服务器(硬件)将请求交付给服务器(软件,例如Apache就是一个常用的服务器软件)。 
    假设请求的是一个动态页面(动态页面就是需要动态生成的页面,例如QQ空间,每人每时每刻都不同,需要动态生成),在本例中是JSP,那么apache则会将请求继续转给下一个部分

  • 第四步,服务器(软件)将请求交给Tomcat 
    因为Apache本身不提供动态页面访问能力的,所以对jsp的支持要靠其他的东西来实现,这个东西类似于插件(但严格来说Tomcat并不是Apache的一个插件)。在本例中,这个插件就是Tomcat。要注意:Tomcat本身也是可以单独作为服务器来运行的。Tomcat 有时也被称为Apache Tomcat,这个Apache指的并不是Apache服务器,而是一个“商标”,因为Tomcat是属于Apache这个项目的 
    Tomcat是一个运行环境,或者叫容器。Tomcat负责实例化jsp并且处理请求(通俗的讲就是“运行”jsp,搞到对应的响应信息),并且返回一个响应到apache,apache则继续将响应返回到客户端。

  • 至此,一个响应完成

热身,again

以上内容说白了就是输入和输出,给定一个输入,产生一个输出。根据这个,我们来模拟下web的进化史。

  • 最初,人们的需求很低,只要求能够有静态页面就好了。 
    举个例子,例如要做一个公告网页,上面公示每天的重要通知。怎么做呢?好办啊! 
    我们用一个简化的输入输出来表示,只要你输入“公告”,我就输出“2017-3-26 XXX写下了第一篇关于几个概念的理解的博客”,不要想得太多,就是一个标准输入,标准输入。 
    用Java写很简单,写成一个控制台标准输入输出就好了。用伪代码表示如下,
if(输入=“公告”) then print “2017-3-26 XXX写下了一篇关于几个概念的理解的博客”
  • 1
  • 2

这就是满足了需求,就这么简单,然后将他改成网络IO就好了。

  • 要是公告变了怎么办?好办,将print “2017-3-26 XXX写下了第一篇关于几个概念的理解的博客”该掉就好了。也就是说,只要信息变动,你就要重写消息源,改动源代码。很蠢是吧。这还好说,要是生成的像QQ空间那样的页面怎么搞?好办!套模板啊。一个页面变动的只是少数,有很大一部分是不变的。想填空题一样,将空填起来就好了,像这样
date = "2017-3-26"
name = "一只准程序员"
about = "几个概念的理解"
if(输入=“公告”) then print date + name + “写下了一篇关于" + about + "的博客”
  • 1
  • 2
  • 3
  • 4
  • 5

这几个变量完全可以从数据库中自动获取。也就是说,只要更新数据库,然后页面就会自动更新了。虽然还是很蠢,但是动态页面就是这个原理。

(你写JSP不就是填空吗,在模板上填空。${name}这样的不就是“空”吗)

  • 总结下,Apache负责请求转发&&静态页面处理,Tomcat来处理动态页面解析

现在,进入正题

概念阐述

借助以上过程和概念,来谈一谈服务器、Apache、Tomcat之间的关系

  • 服务器 
    经过以上过程,这个概念很熟了吧,有两个主要概念

    • 硬件:一台电脑。这台电脑上运行着至少一个服务器软件,能够处理请求
    • 软件:一个提供网页的服务器程序。处理请求并返回响应
  • Apache 
    Apache就是一个服务器(软件),提供了静态页面的访问能力。它配置上插件(模块)后可以以各种语言实现动态页面。(但是一定要注意Tomcat并不是Apache的插件)
  • Tomcat 
    Apache Tomcat(即平时所说的Tomcat),也是一个服务器。在这个案例中,Tomcat充当了一个插件的作用,这个插件是针对于Java的,或者说是jsp/servlet的。它是一个容器。何为容器?容器么,就是容器。容的是什么,JSP、Servlet。容器管理jsp、servlet的声明周期,包括创建,运行,销毁。它是一个jsp、servlet的运行环境。通俗点说,请求发过来,Tomcat负责执行JSP、Servlet,并返回结果。关于生命周期这东西,在此不做阐述。也就是说,没有Tomcat,Apache是不认你JSP的。懂设计模式的可以想想了。。。当然,整个过程都有设计模式的影子

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运行。

  • 共同点

    1. 两者都是apache组织开发的
    2. 两者都有HTTP服务的功能
    3. 两者都是免费的
  • 不同点: 
    1. Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)
    2. Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器

web服务器、Apache 和 tomcat 的关系相关推荐

  1. Apache 和 Tomcat 的 关系

    两者从以下几点可以比较的: 1.两者都是apache组织开发的2.两者都有HTTP服务的功能3.两者都是开源免费的 联系: 1.Apache是普通服务器,本身只支持html即普通网页,可以通过插件支持 ...

  2. Linux Java Web 服务器搭建之tomcat安装

    Linux Java Web 服务器搭建之tomcat安装 一 Tomcat 简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是 ...

  3. 25. Linux中的web服务器Apache

    Lesson25 Linux中的web服务器Apache 文章目录 1. 什么是Apache服务器 2. 什么是http协议 3. Apache的基础信息 4. 实验环境配置 5. 在desktop虚 ...

  4. mac搭建网站服务器,Mac上搭建Web服务器--Apache

    局域网搭建 Web 服务器测试环境,因为Mac OS X 自带了 Apache 和 PHP 环境,我们只需要简单的启动它就行了. 1.命令:sudo apachectl start Apache服务器 ...

  5. web服务器tomcat_扩展Tomcat Web服务器的功能

    在你开始前 了解对本教程的期望以及如何最大程度地利用本教程. 关于本教程 如果您正在学习本教程,则可能已经安装了现有的Apache Tomcat基本独立Web服务器. 如果没有,请首先阅读上一个教程& ...

  6. web服务器-Apache

    一.Apache介绍 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计 ...

  7. java day37【web相关概念回顾 、web服务器软件:Tomcat 、Servlet入门学习】

    第一章  web相关概念回顾 1. 软件架构 1. C/S:客户端/服务器端 2. B/S:浏览器/服务器端 2. 资源分类 1. 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资 ...

  8. 【网络服务数据库教程】05 Web服务器 - Apache

    1 讲在 Apache 之前 HTML语言:超文本标记语言,使用html语言编写的文本叫超文本,"超文本"就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 计算机语言要 ...

  9. Web服务器——Apache相关内容详解

    1.相关名词介绍 1)什么是Web服务器? Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档, 也可以放置网站文件,让全世界浏览:可以放置数据文 ...

  10. Web 服务器-Apache详解

    文章目录 一.讲在 Apache 之前 二.Apache 详解 2.1 概述 2.2 工作模式 修改方式: 2.3 相关文件保存位置 2.4 配置文件详解 2.5 Apache 实验 2.5.1 Ap ...

最新文章

  1. [Hive_add_8] Hive 常用参数配置
  2. Machine Vision 浅谈
  3. python好学-所有人都说Python 简单易学,为何你觉得难?
  4. pat 1034. Head of a Gang (30)
  5. 通过PXE启动rescue模式修复丢失的系统文件(fstab/bash/mount/grub)
  6. android palette组件用法,Palette颜色提取使用详解
  7. Gradle 任务访问文件的几种方式
  8. (CF#257)B. Jzzhu and Sequences
  9. Java基础之字符串详细比较
  10. 百面机器学习—6.PCA与LDA要点总结
  11. 前端测试框架Jest系列教程 -- 简介
  12. Adobe Reader X 10.1.0
  13. 计算机网络原理大题汇总
  14. 实现在线预览office文档(word,excel,ppt)的几种方法
  15. MIPS中addi指令被分成三条指令的问题
  16. yuv图片旋转180度,镜像水平翻转
  17. 各纬度气候分布图_【地理】气候类型的分布规律及分布图的判读 [图片]
  18. html酷炫电子时钟效果,纯js实现电子时钟特效
  19. 关于Windows的window
  20. ASP.NET MVC 最好的视图引擎是什么?

热门文章

  1. 数据结构与算法之PHP排序算法(桶排序)
  2. Glusterfs的安装及简单使用
  3. Jfinal启动原理及源码简析
  4. 在DataList、Repeater的HeaderTemplate和FooterTemplate模板中寻找控件FindControl
  5. 我为什么要理解storm的一些概念
  6. java线程死锁研究
  7. MySQL数据库企业级应用实践(主从复制)
  8. python入门11 元组tuple
  9. 使用IronPython集成Python和.NET
  10. java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport ...