servlet context,spring context,spring mvc context

0.抽象思维:

        软件体系中抽象思维很重要,软件本质上是一个工具,一个帮助解决现实问题的工具。软件里面的很多看似很高深的概念,其实都能在现实世界中找到对应的场景或者事物。也就是说,软件世界是对现实世界的抽象,理解软件时如果搞清楚这是对现实世界的什么东西的抽象,能很好地帮助理清思路,看清本质。

0.分层思想:

        一个复杂的问题要想一次性完全弄清除往往很难,涉及到的元素太多,元素间的关系太复杂,千头万绪,顾此失彼。这时候,我们可以借鉴“大事化小小事化了”的思想,像剥洋葱一样一层层去剥,往往会把复杂问题简单化。这里的层也不是随便乱分的,一个好的分层方案一定是能和现实中待解决问题的本身特性相关的,这也是上文说的抽象。比如说下文即将介绍的Tomcat的各个组件间的关系。

一、Context(上下文):

        在网络服务开发中,会遇到很多Context,Context是什么?某个软件(比如tomcat)或则某个组件(spring mvc)抽象来看,是一个对外提供服务的实体,可以把它比喻成一个服务公司。公司对外提供服务需要一个服务场所,比如办公室,办公室里有办公桌、白班、电话等工作必需材料,服务所有的操作都借助这些材料在该办公室进行。这个“服务场所”,就是一个Context。它的作用:一是提供服务所需的工具(参数)、空间、保存中间成果(数据)等环境;二是隔离,就是该服务相关的东西在且只在这个Context,里面各个方法产生的数据等只在这个Context起作用。

二、Tomcat(web服务器):

Tomcat自上而下大体上有这么几个组件(抽象):Server,Service,Connector,Container,Engine,Context,Host。他们之间有上下层级关系。

Server是对整个Web服务(Tomcat)的抽象,他是最顶级抽象,有且只能有一个。类比一个公司整体。它有port="8005" shutdown="SHUTDOWN"两个属性,用来指定关闭Tomcat的端口。

Service是对某个服务的抽象。类比公司里的一个独立的生产线,一个公司可能有一个或者多个生产线。一个tomcat可能运行一个或多个Service。每个Service对应Tomcat下的一个webapp文件夹,多个Service对应多个webApp文件夹。它有个name属性,作为ID使用。Service包含Connector和Container两大组件,一个“主外”,一个“主内”。

Connector连接器负责接收网络请求,一个Service可以接收发往不同端口的多个请求,也就是可以有多个Connector。每个Connector其中有两个属性是port="8080" protocol="HTTP/1.1"。组成一个端口-协议对。

Container负责处理请求,它是一个接口。Engine,Host,Context,Wrapper都是Container的实现,他们之间有父子层级关系Engine>Host>Context>Wrapper。父子间是一对多的关系。

Engine是Container的实现,是顶级容器。Engine有个name属性,作为ID,还有个defaultHost=“localhost”。当请求的host不能匹配Tomcat配置的任何一个Host,则默认选择该Host去处理;

Host:顾名思义,就是对应一个host,通过name属性去指定处理哪个host请求。appBase属性指定项目文件在tomcat中的位置。

Context:Host的子容器,对应一个模块,一般通过第一级目录(path属性指定)来区分。他的docBase属性指定对应的项目文件在tomcat中的位置,一般指定为相对于Host的appBase属性指定的路径的相对路径。这就是传说中的Servlet容器,用来管理Servlet。

Wrapper:对应一个Servlet。

Tomcat启动时会读取响应的web.xml文件来初始化web项目,包括创建监听器,servlet等,但是springboot项目没有web.xml配置文件,是通过javax.servlet.ServletContainerInitializer实现类来实现的。

(未完待续)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容