Tomcat原理浅谈

1、Tomcat Server的组成原理

(1)- Server

一个服务器代表整个Catalina servlet容器。

(2)-Service

Service是这样一个集合:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获取到的客户请求。

(3)-Connector

一个Connector将在某个指定端口上侦听客户请求,并将获得的请求交给Engine来处理,从Engine处获得回应并返回给客户。

Tomcat有两个典型的Connector,一个直接侦听来自browser的http请求,一个侦听来自其它WebServer的请求。

(4)-Engine

Engine有一个默认虚拟主机,当请求无法匹配到任何一个Host上的时候,将交给默认Host来处理。

(5)-Host

代表一个Virtual Host,虚拟主机,每个虚拟主机和某个网络域名Domain Name相匹配。每个虚拟主机下可以部署一个或多个Web App,每个Web APP对应于一个Context,有一个Context path。当Host获得一个请求时,将把该请求匹配到某个Context上,然后把该请求交给该Context来处理。

(6)Context

一个Context对应于一个Web Application,一个Web Application有一个或者多个Servlet组成。Context在创建的时候将根据配置文件$CATALINA_HOME/con/web.xml和$WebApp_HOME/WEB-INF/web.xml载入Servlet类。当Context获得请求时,将在自己的映射表中寻找相匹配的Servlet类。如果找到,则执行该类,获得请求的回应,并返回。

Tomcat server处理一个http请求的过程

假设来自客户的请求

http://localhost:8080/wsota_index.jsp

1请求被发送到本机端口8080,被在那里侦听的Connector获得

2Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应

3Engine获得请求localhost/wsota_index.jsp,匹配它所拥有的所有虚拟主机host

4Engine陪陪到名为localhost的Host

5localhost host获得请求/wsota_index.jsp,匹配它所拥有的所有Context

6Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的context去处理)

7path=“/wsota”的context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的Servlet

8Context匹配到URL PATTERN为*.jsp的Servlet,对应于JSPServlet类

9构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JSPServlet的doGet或doPost方法

10Context把执行完了之后的HttpServletResponse对象返回给Host。

11Host把HttpServletResponse对象返回给Engine

12Engine把HttpServletResponse对象返回给Connector

13Connector把HttpServletResponse对象返回给客户browser。

时间: 2024-12-25 01:19:05

Tomcat原理浅谈的相关文章

SSL和TLS的技术原理浅谈

背景 程序员小明想给隔壁红写信表白,但是又不想让信件内容被其他人看见,希望只有小红才能看见信件内容,迫不及待的小明的大脑飞快运转起来. 预备基础知识 对称密钥加密(Symmetric Key Cryptography):加密与解密使用相同密钥.对称加密算法的特点是算法公开.计算量小.加密速度快.加密效率高.缺点是交易双方都使用同样钥匙,安全性得不到保证. 非对称密钥加密(Asymmetric Key Cryptography):加密与解密使用不同密钥.非对称加密使用一对秘钥,一个用来加密,一个用

沙盘工作原理浅谈

最近在研究游戏多开原理时,发现多种实现多开的方法,其中一种方法:使用沙盘,引起我的注意,而且这种方法应用于实现多开可谓是小牛试刀. 沙盘实际上是一种安全软件,它可以让进程之间被逻辑隔离,在沙盘中执行的程序不实际修改或防止被修改系统的数据内容,如注册表.硬盘数据等. 以下是转载内容,是对沙盘的简单介绍: 因为有人问沙盘是什么,可能有些新人对沙盘还搞不清是什么东西,所以草草写了这篇小文,仅向新人简单介绍一下沙盘. 沙盘英文名sandbox,也叫沙箱,顾名思义可以看做是一种容器,里面所做的一切都可以推

CAS+SSO原理浅谈

http://www.cnblogs.com/yonsin/archive/2009/08/29/1556423.htmlSSO 是一个非常大的主题,我对这个主题有着深深的感受,自从广州 UserGroup 的论坛成立以来,无数网友都在尝试使用开源的 CAS , Kerberos 也提供另外一种方式的 SSO ,即基于 Windows 域的 SSO ,还有就是从 2005 年开始一直兴旺不衰的 SAML . 如果将这些免费的 SSO 解决方案与商业的 Tivoli 或 Siteminder 或 

php模板原理PHP模板引擎smarty模板原理浅谈

mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有php代码来操作数据库之类的来获取数据的,我们一般都会在控制器层controller,就已经把视图层要展示的数据准备好,方便视图层直接用来展示. smarty模板技术,可以让数据和视图进行分离,让视图中不能直接出现php代码.这样的话,让前段页面的开发和后台数据的开发,可以双管齐下,同时进行了. sma

java中的异常处理原理浅谈

什么是异常呢: 在现实生活中,总会有一些问题,聚焦在生活上,我们会有工作问题,比如工作不满意,工作薪水低,工作没有发展前景,那么我们会成为这是一个“问题”. 在java的世界中,那么我们相对应的是程序,那么程序也有这样或者那样的问题,那么我们成为“异常”.异常就是程序在运行时出现的不正常现象. java把异常封装成对象的描述,来高度的概括. java中Error我们无能为力.我们还是聊聊Exception Exception的分类: 1.编译时异常 必须进行捕获 2.运行时异常(也就是Runti

jvm 原理浅谈

jvm 包含了堆栈区.方法区等存储区域.类装载子系统以及执行引擎. jvm执行流程:编译(字节码)-->类装载(加入内存)-->类执行(分配内存执行) jvm 内存机制:堆内存(new出来的所有对象)    栈内存(基础数据类型.形参.new对象的引用) 静态方法区(方法代码.final常量.静态变量) 本地方法栈 类被装载后执行前,会进行链接即初始化,初始化一些方法,先初始化默认值,然后静态初始化函数和静态域的初始化构造方法的执行!

springboot学习总结(九)Spring security原理浅谈

认证是由 AuthenticationManager 来管理的,但是真正进行认证的是 AuthenticationManager 中定义的 AuthenticationProvider.AuthenticationManager 中可以定义有多个 AuthenticationProvider.当我们使用 authentication-provider 元素来定义一个 AuthenticationProvider 时,如果没有指定对应关联的 AuthenticationProvider 对象,Sp

路由器工作原理浅谈

路由器是构建整个网络最核心的设备.比较著名的品牌为cisco.锐捷.华为.TP-LINK.H3C等等.之前工作中接触的较多的是思科和银河风云,思科的主要是7609,性能十分稳定,基本上全年每天24小时工作不会出问题.银河风云一般,十分笨重,板卡容易坏,2M接口不稳定(进行自环不是loopback状态),软件有bug(一次作业中发现其以太口如果正常工作中,当将网线从以太口中拔出再插上,和对端的路由器之间路由协议的邻居就建立不起来,必须将整个路由器进行重启才正常工作). 路由器其实和我们普通使用的计

Spring缓存框架原理浅谈

运维在上线,无聊写博客.最近看了下Spring的缓存框架,这里写一下 1.Spring 缓存框架 原理浅谈 2.Spring 缓存框架 注解使用说明 3.Spring 缓存配置 + Ehcache(默认) 4.Spring 缓存配置 + Ehcache(自己实现) 5.Spring 缓存配置 + Memcache 6.Ehcache和Memcache的资料收集 Spring提供的缓存注解,通过对CacheManager管理Cache,实现对缓存的操作.Spring提供的CacheManager和