Tomcat是Servlet的容器、又称Web容器,用来解析Http报文转换为Servlet的Request对象;Servlet没有main方法,如果要执行,则需要在一个容器里面才能执行,Tomcat容器就是为了支持Servlet的功能而存在;
Server
- Tomcat最顶层容器,整个Tomat最顶层容器
Service
- Service组件相当于Connetor和Engine组件的包装器,它将一个或者多个Connector组件和一个Engine建立关联;
- 配置线程池 executor
Connector
- Connector正是Tomcat中监听TCP网络连接的组件;
- Connector用于接受请求并将请求封装成Request和Response,然后交给Container进行处理,Container处理完之后在交给Connector返回给客户端;
Container
Engine
- Container顶层,用来管理 Host
- List < Host >
- pipeline、List< valve >
Host
- 代表一个虚拟主机,底下有多个应用,可通过name配置域名
- List < Context >
- pipeline、List< valve >
Context
- 代表一个应用,底下有多个Servlet
- List< Wrapper >
- pipeline、List< valve >
- 额外拥有load组件,保证不同应用之间加载隔离
Wrapper
- 代表一个Servlet,底下有多个servlet对象
- List< Servlet >
- pipeline、List< valve >
Wrapper管道中最后一个Valve(basicValve)会执行调用Servlet逻辑
StandardWrapperValve#invoke
1. StandardWrapper#allocate 生成servlet对象,如:ServeletDemo extend HttpServlet;
2. 创建 过滤器链 filterChain;
3. 在过滤器中执行 HttpServlet#service;
4. 执行到自定义Servlet,如ServeletDemo#doGet
ServeletDemo为自己定义的业务Servlet