版权声明:转载请注明本文源地址 https://blog.csdn.net/qwe6112071/article/details/77531040
顶层结构
- 最顶层是Server,由Catalina管理,包含load,start,stop用来管理整个服务器的生命周期
- 一个Server包含多个Service
- Service主要包含两部分:Connector和Container,一个Service只有一个Container,但可以又多个Connector,用于提供不同的连接请求(如http和https)
- Connector处理连接相关,提供Socket和Request、Response之间的转化
- Container用于封装和管理Servlet,以及处理具体的Request请求
容器
Tomcat有4层容器:
1. Engine,一个容器只有一个,用来管理多个站点
2. Host,对应一个站点,虚拟主机
3. Context,对应一个应用
4. Wrapper,对应一个Servlet
Servlet结构
顶层Servlet
顶层的Servlet定义了5个方法,分别是
1. init.初始化Servlet
2. destroy销毁servlet
3. service,实际处理请求
4. getServletConfig,返回Servlet的初始化参数和Servlet上下文
5. getServletInfo,获取Servlet相关信息,需要自己实现
Servlet实现类
GenericServlet
- 实现了SevletConfig接口,便于直接调用SevletConfig方法
- 提供了无参的init方法
- 提供了日志支持
HttpServlet
- 将ServletRequest,ServletResponse转化为HttpServletRequest,HttpServletResponse。
- 根据Http请求类型路由到不同的处理方法
SpringMVC相关
HttpServletBean
直接集成HttpServlet,将Servlet中的配置参数设置到相应的属性中
FrameworkServlet
初始化了SpringMVC中所使用的WebApplicationContext。
DispacherServlet
初始化具体处理请求的9大组件,并处理具体请求。
核心处理流程:
1. 调用doService方法将WebApplicationContext等设置到request的属性方便使用,然后调用doDispacher方法进行具体处理
2. doDispacher处理分为5步
1. 首先检查是否位上传请求,
2. 根据Request在HandlerMapping中找到相应的Handler
3. 根据找到的Handler找处理这个Handler的HanlderAdaptor
4. 用HandlerAdaptor调用Handler处理请求
5. 然后调用processDispacherResult处理Handler处理后结果,比如处理异常或找到相应的view并渲染给用户