Tomcat--架构

Tomcat架构

HTTP工作原理

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

在这里插入图片描述

过程如下:

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

HTTP服务器请求处理

浏览器发给服务器的是一个HTTP格式的请求,HTTP服务器收到这个请求后,需要调用服务端程序来处理,所谓的服务端程序就是我们写的Java类,一般来说不同的请求需要由不同的Java类来处理。

在这里插入图片描述

图1:

表示HTTP服务器直接调用具体业务类,它们是紧耦合的。

图2:

HTTP服务器不直接调用业务类,而是把请求交给容器来处理,容器通过Servlet接口调用业务类。因此Servlet接口和Servlet容器的出现,达到了HTTP服务器与业务类解耦的目的。而Servlet接口和Servlet容器这一套规范叫做Servlet规范。Tomcat按照Servlet规范的要求实现了Servlet容器,同时它们也具有HTTP服务器的功能。作为Java程序员,如果我们要实现新的业务功能,只需要实现一个Servlet,并把它注册到Tomcat(Servlet容器)中,剩下的事情就由Tomcat帮我们处理了。

Servlet容器工作流程

当客户请求某个资源时,HTTP服务器会用一个ServletRequest对象把客户的请求信息封装起来,然后调用Servlet方法,Servlet容器拿到请求后,根据请求的URL和Servlet的映射关系,找到对应的Servlet,如果Servlet还没有被加载,就用反射机制创建这个Servlet,并调用Servlet的init方法来完成初始化,接着调用Servlet的service方法来处理请求,把ServletResponse对向返回给HTTP服务器,HTTP服务器会把响应发送给客户端。

在这里插入图片描述

扫描二维码关注公众号,回复: 10162814 查看本文章

Tomcat整体架构

Tomcat要实现两个核心功能:

  1. 处理Socket连接,负责网络字节流Request和Response对象的转化;
  2. 加载和管理Servlet,以及具体处理Request请求。

因此Tomcat设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。

在这里插入图片描述

发布了861 篇原创文章 · 获赞 2275 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/cold___play/article/details/105095438