Tomcat学习积累—Tomcat总体架构
1.浏览器访问服务器的流程
- 客户通过
url地址访问/搜索功能
向浏览器发起请求 - 浏览器向服务器发起TCP连接请求(三次握手操作),http请求知识定义了数据的组织模式(通信格式),是一个应用层协议,数据传输依靠TCP/IP协议
- 进行一个socket处理,服务器接收请求并建立连接
- 浏览器生成http格式的数据包
- 浏览器向服务器发送请求数据
- 服务器解析http格式的数据包
- 执行书包解析出来的请求
- 服务器生成http格式的数据包
- 服务器将相应的数据包 发送给 浏览器
- 浏览器解析http格式的数据包,将数据包的内容解析成静态数据(html/js/图片)
- 浏览器将静态数据呈现给客户
2.Tomcat 请求处理⼤致过程
- Tomcat是⼀个
Http服务器
(能够接收并且处理http请求,所以tomcat是⼀个http服务器) 我们使⽤浏览器向某⼀个⽹站发起请求
,发出的是Http请求
,那么在远程,Http服务器接收到这个请求之后,会调⽤具体的程序(Java类)
进⾏处理,往往不同的请求由不同的Java类完成处理。
tomcat调用应该是这样的
,如下图- tomcat从http服务器拿到请求后并不是直接调用业务类,而是中间经过一个Servlet容器
- http服务器会把HTTP请求先发送给Servlet容器(里面发了很多Servlet)
- 写完一个 业务类还要注册进Servlet容器中(1.web.xml方式注册 2.注解方式 )
- 注册完之后业务类就交给 Servlet容器管理了,可以看作是一个Map集合
- HTTP服务器发送请求之后去Servlet容器中找那个Servlet可以解决请求,找到之后进行业务逻辑的处理
- 自定义业务类就要实现Servlet接口,实现完业务类就交给容器管理
- tomcat是实现了Servlet规范的(因为tomcat中有Servlet容器和接口),所以也可以成tomcat是一个Servlet容器
HTTP 服务器
接收到请求之后把请求交给Servlet容器
来处理,Servlet容器
通过Servlet接⼝
调⽤业务类(前提是业务类要注册进Servlet容器中)
。Servlet接⼝
和Servlet容器
这⼀整套内容叫作Servlet规范
。- 注意:
Tomcat
既按照Servlet规范
的要求去实现了Servlet容器
,同时它也具有HTTP服务器的功能。 - Tomcat的两个重要身份
http服务器
:能够接收并且处理http请求,有这个功能和使命,所以tomcat是⼀个http服务器Tomcat是⼀个Servlet容器
:因为tomcat实现了Servlet规范
3.Tomcat中Servlet容器处理请求流程
当⽤户请求某个URL资源时
HTTP服务器
会把请求信息(request对象)
使⽤ServletRequest对象
封装起来- 进⼀步去调⽤Servlet容器中某个具体的Servlet
- 在
2
中,Servlet容器
拿到请求后,根据URL
和Servlet
的映射关系,找到相应的Servlet
- 如果
Servlet
还没有被加载,就⽤反射机制创建这个Servlet,并调⽤Servlet的init⽅法
来完成初始化 - 接着调⽤这个
具体Servlet的service⽅法
来处理请求,请求处理结果使⽤ServletResponse对象
封装 - 把
ServletResponse对象
返回给HTTP服务器
,HTTP服务器
会把响应发送给客户端,转换成原生的Response对象
- 组中原生的
Response对象
要返回给浏览器进行渲染
4.Tomcat总体架构综述
我们发现tomcat有两个⾮常重要的功能需要完成
- 和客户端浏览器进⾏交互,进⾏socket通信
(指的是TCP/IP传输... )
,将字节流和Request/Response等对象进⾏转换 - Servlet容器处理业务逻辑
- 在
tomcat
中设计了两个组件
完成上述的两个核心功能连接器,负责对外交流
: 处理Socket连接,负责⽹络字节流与Request和Response对象的转化;容器,负责内部处理
:加载和管理Servlet,以及具体处理Request请求;