我理解的Tomcat架构

Tomcat架构

看过一点Tomcat源码,了解其中的一点原理。剩下的靠猜。

我理解的Tomcat架构

tomcat的架构类似于之前的网络通信原理,我想应该是利用了相同的原理来进行设计的。

在Tomcat中有着严格的规定。规定了静态资源资源放在哪里,动态资源放在哪里。

那么为什么需要这样子来进行规定?说明了设计Tomcat的时候,就已经设计好了按照怎样的方式才能够使用Tomcat。比如说静态资源放在了webapp下面,jar包放在WEB-INF下等等。

在这里额外的说一下,我觉得这种约束思想存在于任何一个领域中,但是最终的目标是方便使用,按照某种约束就能够快速的实现某一种功能。比如说国家法律约束了人的活动、接口约束子类必须实现接口中的抽象方法等等

Tomcat中利用了一个mapper来进行资源的映射。

静态资源:/test/WEB-INF/list.html----映射—list.html

动态资源:oneservlet----servlet别名—映射–servlet类。

对于所有的context组成host来说,先找属于哪个context,然后再去找对应的servlet

所以对于来自客户端的请求,都会进行解析。

比如之前说过的Tomcat的解析图
我理解的Tomcat架构

通过引擎来进行解析,使用适配器模式来进行查找

第一步:查找context

第二步:通过servlet的映射路径来查找servlet的别名

第三步:然后通过别名找到对应的servlet,然后来调用service来进行处理

对于静态资源来讲,可能没有动态资源这么麻烦,有可能一步到位就能够解决了。

mapper映射写到了这里,剩下的会再进行说明。