DispatcherServlet解析

image.png
image.png
image.png
image.png

1.initMultipartResolver(context); 处理文件上传

2.initLocaleResolver(context);处理国际化配置

3.initThemeResolver(context);主题配置

4.initHandlerMappings(context);

5.initHandlerAdapters(context);

(1)HttpRequestHandlerAdapter:Http请求适配器

(2)SimpleControllerHandlerAdapter:简单控制器处理器适配器,处理实现org.springframework.web.servlet.mvc.Controller接口的控制器

(3) AnnotationMethodHandlerAdapter:基于注解的实

6.initHandlerExceptionResolvers(context):异常处理,实现

7.initRequestToViewNameTranslator(context);加载逻辑视图解析

8.initViewResolvers(context);初始化视图解析器

9.initFlashMapManager(context);用户存储、检索、管理FlashMap实例

一个真实的处理流程

(1)绑定请求参数到当前线程

image.png

(2)委托给doService进一步处理

    1.checkMultipart。如果是文件上传则转换request请求为DefaultMultipartHttpServletRequest

2.获取对应的handle

image.png

2.根据Hadler找到对应的HadlerAdapter
image.png

3.缓存处理,Last-Modified机制,只要实现LastModified接口即可

image.png

4.拦截器的处理
image.png
image.png

5.真正的逻辑处理

image.png

SimpleControllerHandlerAdapter中的处理,最终调用的是你实现了org.springframework.web.servlet.mvc.AbstractController#handleRequest的接口

image.png

6.拦截器的postHandle处理
image.png

7.根据视图跳转页面

image.png
image.png

(3)请求结束恢复线程至原始状态

(4)请求处理后发布时间通知

你可能感兴趣的:(DispatcherServlet解析)