Spring MVC 处理请求
Servlet初始化
DispatcherServlet(
前端控制器
)是
Spring MVC中最核心的一个类,
它负责请求的行为流转, 接收请求、响应结果, 相当于转发器
。 那么在Servlet的初始化阶段,会调用
init()
方法进行各个组件的初始化操作,该方法
由其父类HttpServletBean负责实现
的.
初始化MVC各个组件
HandlerMapping(处理程序映射器) 根据请求的 URL 来查找 Handler
HandlerAdapter(处理程序适配器) 执行Handler
.
Handler(处理器 ) 处理业务逻辑的 Java 类(我们自己写的 Controller 类)。
ViewResolver(视图解析器) 进行视图的解析,根据视图逻辑名将
ModelAndView 解析成真正的视图(
view)
View(视图) View 是一个接口, 它的实现类支持不同的视图类型,如 jsp,freemarker, pdf 等。
MultipartResolver
处理文件上传功能
LocaleResolver
国际化多语言配置
ThemeResolver
主题解析器的接口
HandlerExceptionResolver 生成ModelAndView对象实例
RequestToViewNameTranslator 用来当Controller没有返回View对象或者逻辑视图名称,并且在该方法中没有直接往 response的OutputStream里面写数据, 获取默认视图名称.
MVC执行流程
- 用户发送请求到前端控制器(DispatcherServlet)。
- 前端控制器 (DispatcherServlet) 收到请求调用处理器映射器 (HandlerMapping),去查找处理器(Handler)。
- 处理器映射器(HandlerMapping)找到具体的处理器(可以根据 xml 配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。
- 前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)。
- 处理器适配器(HandlerAdapter)去调用自定义的处理器类(Controller)。
- 自定义的处理器类(Controller)将得到的参数进行处理并返回结果给处理器适配器(HandlerAdapter)。
- 处理器适配器 (HandlerAdapter)将得到的结果返回给前端控制器 (DispatcherServlet)。
- 前端控制器(DispatcherServlet)将 ModelAndView 传给视图解析器 (ViewReslover)。
- 视图解析器(ViewReslover)将得到的参数从逻辑视图转换为物理视图并返回给前端控制器(DispatcherServlet)。
- 前端控制器(DispatcherServlet)调用物理视图进行渲染并返回。
- 前端控制器(DispatcherServlet)将渲染后的结果返回。