跳到主要内容

Spring MVC系列(7)-DispatcherServlet处理请求流程源码分析

前言

在之前我们了解到了DispatcherServlet是如何初始化的,接下来我们了解下他是如何处理请求的呢?

Tomcat处理请求流程

首先,我们了解下Tomcat启动后是如何处理HTTP请求的?

文档来源

网络通信三要素

  • IP地址:计算机在网络上的唯一标示,通过ip找到通信所在的机器
  • 端口:端口是一台机器上不同程序的标示
  • 传输协议:双方都遵守的传输数据的格式

HTTP工作原理

HTTP协议是浏览器与服务器之间的数据传送协议。作为应用层协议,HTTP是基于TCP/IP协议来传递数据的(HTML文件、图片、查询结果等),HTTP协议不涉及数据包(Packet )传输,主要规定了客户端和服务器之间的通信格式。
 
从图上你可以看到,这个过程是:

1、 用户通过浏览器进行了一个操作,比如输入网址并回车,或者是点击链接,接着浏览器获取了这个事件;
2、 浏览器向服务端发出TCP连接请求;
3、 服务程序接受浏览器的连接请求,并经过TCP三次握手建立连接;
4、 浏览器将请求数据打包成一个HTTP协议格式的数据包;
5、 浏览器将该数据包接入网络,数据包经过网络传输,最终达到端服务程序;
6、 服务端程序拿到这个数据包后,同样以HTTP协议格式解包,获取到客户端的意图;
7、 得知客户端意图后进行处理,比如提供静态文件或者调用服务端程序获得动态结果;
8、 服务器将响应结果(可能是HTML或者图片等)按照HTTP协议格式打包;

9、 服务器将响应数据包推入网络,数据包经过网络传输最终达到到浏览器;
10、 浏览器拿到数据包后,以HTTP协议的格式解包,然后解析数据,假设这里的数据是HTML;