Tomcat连接器和servlet容器

Http工作原理

Http协议是 浏览器和服务器之间的数据传送协议、应用层协议;不涉及数据包传输、规定客户端和服务器之间的通信格式

Tomcat整体架构

@Http服务器请求处理
浏览器给服务端一个Http格式的请求
Http服务器收到后需要调用程序处理(Java类),一般不同请求需要不同程序处理

上图中左右两图对比,
1) HTTP服务器直接调用具体业务类=>紧耦合
2) HTTP服务器把请求交给容器处理,容器通过servlet接口调用业务类 => HTTP服务器与业务解耦

@Servlet容器工作流程

客户请求某个资源
HTTP服务器用一个ServletRequest对象把客户的请求封装 -> 发送给Servlet容器
Servlet容器收到请求 -> 根据请求的URL和Servlet的映射关系,找到相应的Servlet -> 调用Servlet的service方法处理请求
Servlet容器把ServletResponse对象返回给HTTP服务器
HTTP服务器把响应发送给客户端

@Tomcat整体架构
Tomcat的两个核心功能
1 )处理socket连接,负责网络字节流与Request和Response对象的转化 => 连接器(Connector),负责对外交流
2 加载和管理Servlet,处理Request请求 => 容器(Container),负责内部处理

Coyote

Coyote是Tomcat连接器的框架名称
Coyote封装了底层的网络通信(Socket请求及响应处理),为Catalina容器提供了统一的接口
Coyote将Socket输入转换封装为Request对象
Catalina将Request进一步封装为ServletRequest

注:在这里可以把Catalina狭义地理解为容器(Service中的Container)

@连接器组件
ProtocolHandler:Coyote协议接口(Endpoint+Processor)

Endpoint:Coyote通信端点(通信监听的接口、具体Socket接收和发送的处理器)=> 用来实现TCP/IP协议、是对传输层的抽象

Processor:Coyote协议处理接口 => 用来实现HTTP协议、是对应用层协议的抽象
Processor接收来自EndPoint的Socket,将字节流解析成Tomcat Request和Response对象,并通过Adapter将其提交到容器处理
 

 

@两种连接器

Tomcat在server.xml中配置了两种连接器
1)HTTP Connector监听8080端口,负责建立HTTP连接。通过浏览器访问Tomcat服务器的Web应用时使用。  
2)AJP Connector监听8009端口,负责和其它的HTTP服务器建立连接。在把Tomcat与其它HTTP服务器集成时使用。

说明:
Tomcat最主要的功能是提供Servlet/JSP容器;Tomcat对静态资源(如HTML文件或图像文件)的处理速度,以及提供的Web服务器管理功能不如其它专业的HTTP服务器(如IIS和Apache)=>
在实际应用中,常常把Tomcat的与其他HTTP服务器集成,对于不支持的Servlet/JSP的HTTP服务器,可以通过的Tomcat服务器来运行的Servlet/JSP组件。
 

Catalina

Catalina是Servlet容器实现,它通过松耦合的方式集成Coyote,同时它还包括启动入口、shell程序等
Catalina是Tomcat核心,Tomcat启动的时候会初始化一个Catalina的实例

@Tomcat模块分层结构

@Catalina结构

Catalina负责解析Tomcat配置文件->创建Server组件,管理Server
Server表示整个服务器(Catalina Servlet及其它组件),负责组装并启动Servlet引擎、Tomcat连接器,通过实现LifeCycle接口提供启动和关闭整个系统的方式
Server下面有多个服务Service
ServiceServer内部组件,每个Service将若干个连接器组件Connector(Coyote实现)绑定到一个容器组件Container(Engine)上
Connector连接器处理与客户端的通信,负责接收客户请求,然后转给相关的容器处理,最后返回响应结果给客户
Container容器负责处理用户的servlet请求




 

 

 

 

 

@Container

Engine表示整个Catalina的Servlet引擎,用来管理多个虚拟主机,一个Service最多只有一个Engine,一个Engine可包含多个Host
Host表示一个虚拟主机,一个虚拟主机可包含多个Context
Context表示一个Web应用程序,一个Web应用可包含多个Wrapper
Wrapper表示一个Servlet,Wrapper作为容器中的最底层,不能包含子容器

 

 

 

Jasper

@静态页面和动态页面
静态页面的网页代码都在页面中,不能自主管理发布更新的页面。
常见的静态页面扩展名:.html、.htm

动态页面是通过执行asp,php,jsp,.net等程序生成客户端网页代码的网页。可以通过网站后台管理系统对网站的内容进行更新。
常见的静态页面扩展名:.asp .php .jsp .cgi

注意:静态页面和动态页面的区别是网站与客户端有无互动,而不是有无动画

@Jasper
对基于JSP的Web应用,可以直接在JSP页面编写Java代码
可以把jsp看作是一种运行在服务端的脚本,最终输出到客户端的都是标准的HTML页面,并不包含任何Java代码
Jasper模块是Tomcat的JSP核心引擎
JSP本质是一个Servlet

@服务器如何将JSP页面转换为HTML页面?
Tomcat使用Jasper对JSP语法进行解析,生成Servlet并生成Class字节码,用户访问jsp时会访问Servlet,最终访问的结果直接响应在浏览器
在运行的时候Jasper会检测JSP文件是否修改,如果修改,则会重新编译JSP文件

 

参考资料:
java进阶教程Tomcat核心原理解析  https://www.bilibili.com/video/BV1dJ411N7Um
Tomcat(一):简介 https://blog.csdn.net/u014231646/article/details/79482195
Tomcat HTTP协议与AJP协议  https://blog.csdn.net/jeikerxiao/article/details/82745516
Apache与Tomcat有什么关系和区别  https://www.cnblogs.com/zangdalei/p/8057325.html
Tomcat外传 https://zhuanlan.zhihu.com/p/54121733
浅谈JSP  https://zhuanlan.zhihu.com/p/42343690

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值