1.对客户端请求地址进行协议,域名,端口,路径的解析;
http://localhost:8080/index.html
http:协议;localhost:域名(域名系统通过DNS,将域名解析为ip)
8080:端口号;路径:index.html
2.通过网络建立客户端与服务器之间的TCP连接;
TCP的三次握手
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连接后,客户端发起请求,等待服务器响应;
头部
4.服务器接收到请求,进行业务逻辑的处理,返回给客户端;
MVC原理
SpringMVC 工作原理
客户端发送请求->直接到前端控制器dispcherServlet->找到处理器控制器handlerMapping解析请求对应的handler->处理器适配器handlerAdapter会调用handler,处理业务逻辑->返回一个模型视图给modelAndView->视图解析器ViewResolver进行解析->返回一个视图View对象->前端控制器DispcherServlet进行数据渲染->得到视图对象返回给客户端
mybatis工作原理
1、加载配置文件(数据源,以及映射文件),解析配置文件,生成Configuration,MapperedStatement
2、通过使用Configuration对象,创建sqlSessionFactory,用来生成SqlSeesion
3、sqlSession通过调用api或者mapper接口传入statementId找到对应的MapperedStatement,来调用执行sql
4、通过Executor核心器,负责sql动态语句的生成和查询缓存的维护,来进行sql的参数转换,动态sql的拼接,生成Statement对象
5、借助于MapperedStatement来访问数据库,它里面封装了sql语句的相关信息,以及返回结果信息