2.Tomcat 架构
2.1 Http 工作原理
Tomcat作为一个HTTP服务器干了什么?
接受链接,解析数据,处理请求和发送响应
2.2 Tomcat整体架构
2.2.1 Http服务器请求 处理
图一即第一种请求处理方式 直接让服务器调用各业务类(用多个if else 去判断哪项业务),这种方式具有高耦合性。
图二即第二种请求处理方式 不直接调用业务类, 而是把请求交给Servlet容器,容器通过Servlet接口调用业务类,因此Servlet接口和Servlet容器的出现,达到了Http服务器与业务类解耦的目的。
Servlet接口和Servlet容器这一套规范叫做Servlet规范。
Tomcat按照Servlet规范的要求实现了Servlet容器,同时他们也具有了HTTP服务器的功能。
我们学习Java,如果我们要实现新的功能,只需要实现一个Servlet,并把它注册到Tomcat(Servlet容器)中,剩下的事情就由Tomcat帮我们处理了。
2.2.2 Servlet容器工作流程
2.2.3 Tomcat整体架构
1)处理Socket连接,负责网络字节流与Request 和 Response对象的转化。
2) 加载和管理Servlet,以及具体处理Request请求。
因此Tomcat设计了两个核心组件:连接器(Connector)和 容器(Container)来分别做这两件事,连接器负责对外交流,,容器负责内部处理。
连接器作用:这个请求被连接器接受,接受Socket请求,并将它转化为ServletRequest对象,将这个对象交给容器。
容器: 先定位,利用URL和Request的映射关系找到对应的Servlet,如果Servlet还没有被加载,就用反射机制创建这个Servlet,并调用Servlet的 init方法来完成初始化,接着调用Servlet的service方法(逻辑)来处理请求,把ServletResponse对象返回给连接器,连接器拿到这个对象后解析这个对象,并给Socket一个响应。
2.3 连接器
2.4 容器- Catalina
Tomcat 是一个由一系列可配置的组件构成的 Web 容器,而 Catalina 是 Tomcat 的Servlet容器。
Catalina是Servlet 容器实现,包含了之前讲到的所有的容器组件。