Tomcat之Servlet容器和Catalina结构图

一、前言

恰巧发现一本猛书《How tomcat works》 。此书的特点是,以一个程序示例贯穿全书,该示例从最简单的http server开始,根据Tomcat的组成结构,一章一章长大,逐步羽翼丰满,最终变成一个强大的Servlet容器。因此,如果把全书读下来,对Tomcat的组成结构和运行机理,乃至设计原理,应该会有一个不错的了解。

二、Servlet 容器是如何工作的

Servlet容器是一个挺复杂的系统。但是,基本上,针对一个servel的request请求,servlet需要做以下三件事情:

  • 创建一个实现了javax.servlet.ServletRequest 接口或javax.servlet.http.ServletRequest 接口的Request对象,并且用请求参数、请求头(headers)、cookies、查询字符串、URI等信息填充该Request对象;
  • 创建一个实现了javax.servlet.ServletResponse 接口或javax.servlet.http.ServletResponse 接口的Response对象;
  • 调用相应的servlet的服务方法,将先前创建的request对象和response对象作为参数传入。接收请求的servlet从request对象中读取信息,并且将返回值写入到response对象中。

三、Catalina结构图

Catalina本身是一个成熟的软件,设计开发结构十分的优雅,功能结构模块化。从servlet容器的功能角度上看,catalina可以划分为两大模块:connector模块和container模块。
在这里插入图片描述
这里connector的功能是将用户请求与container连接。connector的任务是为每个接收到的HTTP请求建立request对象和response对象。然后,将处理过程交给container模块。container 模块从connector中接收到request对象和response对象,并且负责调用相应的servlet的服务方法。
当然,上面只是对这个处理过程简化描述。在处理过程中,container还要做很多其他的事情。例如,在调用servlet的服务方法前,它必须载入改sevlet,对用户身份进行认证(需要的话),更新该用户的session对象等。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值