1. 浏览器访问服务器的流程
- 用户发起请求到浏览器
- 浏览器发送TCP连接请求到Tomcat服务器
- Tomcat服务器接收请求并且建立连接
- 浏览器生成HTTP格式的数据包
- 浏览器发送请求数据包
- Tomcat服务器接收请求数据包并进行解析
- Tomcat服务器执行对应的请求(这一步设计到具体的执行流程,比较重要)
- Tomcat生成HTTP格式的数据包
- 发送响应数据包给浏览器
- 浏览器解析HTTP的数据包
- 浏览器呈现静态数据给用户
浏览器访问服务器使用的是HTTP协议,Http是应用层协议
,用于定义数据通信的格式,具体的数据传输使用的是TCP/IP协议。
2. Tomcat系统总体架构
2.1 Tomcat请求处理的过程
HTTP服务器收到请求后把请求交给Servlet容器来处理,Servlet容器通过Servlet接口调用业务类。Servlet接口和Servlet容器这一整套内容叫做Servlet规范。
Tomcat的两个重要身份:
- http服务器
- Tomcat是一个Servlet容器
2.2 Tomcat Servlet容器处理流程
当用户请求某个URL资源时
- HTTP服务器会把请求信息使用ServletRequest对象封装起来
- 进一步去调用Servlet容器中某个具体的Servlet
- 在2.中,Servlet容器拿到请求之后,根据URL和Servlet的映射关系,找到响应的Servlet
- 如果Servlet还没有被加载,就用反射机制创建这个Servlet,并调用Servlet的init方法来完成初始化。
- 接着调用这个具体Servlet的service方法来处理请求,请求处理结果使用ServletResponse对象封装
- 把ServletResponse对象返回给HTTP服务器,HTTP服务器会把响应发送给客户端
2.3 Tomcat 系统总体结构
从上面看,我们发现tomcat有两个非常重要的功能需要完成
- 和客户端浏览器进行交互,进行socket通信,将字节流和Request/Response等对象进行转换。
- Servlet容器处理业务逻辑
Tomcat设计了两个核心组件连接器(Connector)和容器(Container) 来完成Tomcat的两大核心功能。
连接器,负责对外交流:处理Socket连接,负责网络字节流与Request和Response对象的转化;
容器,负责内部处理:加载和管理Servlet,以及具体处理Request请求;