1.对客户端请求地址进行协议,域名,端口,路径的解析;

http://localhost:8080/index.html

http:协议;localhost:域名(域名系统通过DNS,将域名解析为ip)

8080:端口号;路径:index.html

2.通过网络建立客户端与服务器之间的TCP连接;

TCP的三次握手

nginx拒绝了我们的连接请_客户端

tcp三次握手

首先,客户端主动结束closed状态,服务器被动结束colse状态,进入listen状态,随后开始三次握手:

第一次,客户端向服务器发送一段TCP报文:syn=1,seq=x,

随后客户端进入SYN-SENT请求阶段;

第二次,服务端接收客户端的TCP报文,结束listen状态,

返回给客户端TCP报文:syn=1,ack=x+1,seq=y,

随后服务端进入SYN-RCVD接收阶段;

第三次,客户端接收服务端的TCP报文,结束SYN-SENT状态,

返回给服务端TCP报文ack=y+1,seq=x+1,

随后客户端进入ESTABLISHED确认阶段。

最后:服务端接收客户端的报文,证明客户端之间的连接是正常的,随后也进入ESTABLISHED确认阶段。

这样,客户端和服务器之间,就建立了TCP连接

3.建立TCP连接后,客户端发起请求,等待服务器响应;

nginx拒绝了我们的连接请_服务端_02

头部

4.服务器接收到请求,进行业务逻辑的处理,返回给客户端;

MVC原理

nginx拒绝了我们的连接请_客户端_03

SpringMVC 工作原理

nginx拒绝了我们的连接请_TCP_04

客户端发送请求->直接到前端控制器dispcherServlet->找到处理器控制器handlerMapping解析请求对应的handler->处理器适配器handlerAdapter会调用handler,处理业务逻辑->返回一个模型视图给modelAndView->视图解析器ViewResolver进行解析->返回一个视图View对象->前端控制器DispcherServlet进行数据渲染->得到视图对象返回给客户端

mybatis工作原理

nginx拒绝了我们的连接请_服务端_05

1、加载配置文件(数据源,以及映射文件),解析配置文件,生成Configuration,MapperedStatement

2、通过使用Configuration对象,创建sqlSessionFactory,用来生成SqlSeesion

3、sqlSession通过调用api或者mapper接口传入statementId找到对应的MapperedStatement,来调用执行sql

4、通过Executor核心器,负责sql动态语句的生成和查询缓存的维护,来进行sql的参数转换,动态sql的拼接,生成Statement对象

5、借助于MapperedStatement来访问数据库,它里面封装了sql语句的相关信息,以及返回结果信息