Spring Web MVC DispatcherServlet 工作机制
Spring MVC 是围绕着一个名为 DispatcherServlet 的核心 Servlet 来设计的,DispatcherServlet 提供了一个用于处理请求的公共算法,并且会把这些实际工作委托给 Spring 容器当中的 Bean,同时这些 Bean 都是可配置化。Spring MVC 的这种工作模式非常灵活,因此它支持多种不同的工作流程。
特殊 Bean
DispatcherServlet 会感知到 Spring 容器中以下类型的特殊 Bean:
Bean 类型 | 说明 |
---|---|
HandlerMapping | 将 request 映射到 handler,同时会对关联一系列的用于 request 前置和后置处理的 interceptor。HandlerMapping 中的映射是基于某些条件的,不同的 HandlerMapping 实现类的实现细节是不一样的。
两个主要 HandlerMapping 实现类是 |
HandlerAdapter | 帮助 Dispatcher 调用 request 所映射的 handler,会屏蔽 handler 具体的调用方式。例如调用 |
HandlerExceptionResolver | 解析 exception 的策略,可能会将 exception 解析到 |
ViewResolver | 将从 handler 返回的 String 类型的逻辑视图解析为真实的视图,解析后的视图会被作为 response。 |
LocaleResolver、LocaleContextResolver | 解析客户端所使用的 |
ThemeResolver | 解析 web 应用可以使用的主题。 |
MultipartResolver | 解析 multi-par request,例如在浏览器中上传文件。 |
FlashMapManager | 存储和检索「输入」与「输出」的 FlashMap,该 FlashMap 可用于将一个 request 中的属性传递到另一个 request 中。 |
工作流程
参考资料
最后更新于