web服务器、Apache 和 tomcat 的关系
以一次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运行。
共同点
- 两者都是apache组织开发的
- 两者都有HTTP服务的功能
- 两者都是免费的
- 不同点:
- Apache是专门用了提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)
- Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器
web服务器、Apache 和 tomcat 的关系相关推荐
- Apache 和 Tomcat 的 关系
两者从以下几点可以比较的: 1.两者都是apache组织开发的2.两者都有HTTP服务的功能3.两者都是开源免费的 联系: 1.Apache是普通服务器,本身只支持html即普通网页,可以通过插件支持 ...
- Linux Java Web 服务器搭建之tomcat安装
Linux Java Web 服务器搭建之tomcat安装 一 Tomcat 简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是 ...
- 25. Linux中的web服务器Apache
Lesson25 Linux中的web服务器Apache 文章目录 1. 什么是Apache服务器 2. 什么是http协议 3. Apache的基础信息 4. 实验环境配置 5. 在desktop虚 ...
- mac搭建网站服务器,Mac上搭建Web服务器--Apache
局域网搭建 Web 服务器测试环境,因为Mac OS X 自带了 Apache 和 PHP 环境,我们只需要简单的启动它就行了. 1.命令:sudo apachectl start Apache服务器 ...
- web服务器tomcat_扩展Tomcat Web服务器的功能
在你开始前 了解对本教程的期望以及如何最大程度地利用本教程. 关于本教程 如果您正在学习本教程,则可能已经安装了现有的Apache Tomcat基本独立Web服务器. 如果没有,请首先阅读上一个教程& ...
- web服务器-Apache
一.Apache介绍 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计 ...
- java day37【web相关概念回顾 、web服务器软件:Tomcat 、Servlet入门学习】
第一章 web相关概念回顾 1. 软件架构 1. C/S:客户端/服务器端 2. B/S:浏览器/服务器端 2. 资源分类 1. 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资 ...
- 【网络服务数据库教程】05 Web服务器 - Apache
1 讲在 Apache 之前 HTML语言:超文本标记语言,使用html语言编写的文本叫超文本,"超文本"就是指页面内可以包含图片.链接,甚至音乐.程序等非文字元素. 计算机语言要 ...
- Web服务器——Apache相关内容详解
1.相关名词介绍 1)什么是Web服务器? Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档, 也可以放置网站文件,让全世界浏览:可以放置数据文 ...
- Web 服务器-Apache详解
文章目录 一.讲在 Apache 之前 二.Apache 详解 2.1 概述 2.2 工作模式 修改方式: 2.3 相关文件保存位置 2.4 配置文件详解 2.5 Apache 实验 2.5.1 Ap ...
最新文章
- [Hive_add_8] Hive 常用参数配置
- Machine Vision 浅谈
- python好学-所有人都说Python 简单易学,为何你觉得难?
- pat 1034. Head of a Gang (30)
- 通过PXE启动rescue模式修复丢失的系统文件(fstab/bash/mount/grub)
- android palette组件用法,Palette颜色提取使用详解
- Gradle 任务访问文件的几种方式
- (CF#257)B. Jzzhu and Sequences
- Java基础之字符串详细比较
- 百面机器学习—6.PCA与LDA要点总结
- 前端测试框架Jest系列教程 -- 简介
- Adobe Reader X 10.1.0
- 计算机网络原理大题汇总
- 实现在线预览office文档(word,excel,ppt)的几种方法
- MIPS中addi指令被分成三条指令的问题
- yuv图片旋转180度,镜像水平翻转
- 各纬度气候分布图_【地理】气候类型的分布规律及分布图的判读 [图片]
- html酷炫电子时钟效果,纯js实现电子时钟特效
- 关于Windows的window
- ASP.NET MVC 最好的视图引擎是什么?
热门文章
- 数据结构与算法之PHP排序算法(桶排序)
- Glusterfs的安装及简单使用
- Jfinal启动原理及源码简析
- 在DataList、Repeater的HeaderTemplate和FooterTemplate模板中寻找控件FindControl
- 我为什么要理解storm的一些概念
- java线程死锁研究
- MySQL数据库企业级应用实践(主从复制)
- python入门11 元组tuple
- 使用IronPython集成Python和.NET
- java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport ...