spring mvc 请求处理流程分析

前言

Spring MVC是工作在Java Servlet之上的一套MVC框架,本文将通过分析Spring MVC的请求处理流程来学习Spring MVC的工作原理。

主要将分析:

  • DispatcherServlet MVC门面组件,请求入口,响应出口。
  • HandlerMapping MVC组件,映射请求为处理器。
  • HandlerAdapter MVC组件,调用控制器。解耦控制器,保证灵活性。
  • HandlerExceptionResolver MVC重要组件,处理查找和执行处理器期间抛出的所有异常。
  • ViewResolver MVC组件,返回视图。

DispatcherServlet

DispatcherServlet是HTTP请求处理程序的*调度器,调度注册的处理程序来处理Web请求。它主要包括以下组件:

  • HandlerMapping 处理器映射,负责路由请求。可以多个,存在先后顺序。
  • HandlerAdapter 处理器适配器,使用适配器模式,用于自定义工作流。可以多个,存在先后顺序。
  • HandlerExceptionResolver 处理器异常解析器,处理异常。可以多个,存在先后顺序。
  • ViewResolver 视图解析器,用于将视图名解析为View对象。可以多个,存在先后顺序。
  • RequestToViewNameTranslator 当处理器没有返回View或视图名称时,将请求转换为视图名。
  • MultipartResolver 多部分文件解析器,用于文件上传解析。默认不提供。
  • LocaleResolver 地区解析器。

组件的注册

支持多个组件的组件类型,将从上下文中获取该类型的所有实例。对于单个组件类型,根据bean名称获取实例。对于默认组件,如果上下文未存在该组件,将使用默认配置。

请求的处理流程

首先遍历询问HandlerMapping列表查找匹配的处理器,返回一个HandlerExecutionChainHandlerExecutionChain包含了HandlerInterceptor列表,并封装了处理器对象。

然后遍历询问HandlerAdapter列表查找匹配的适配器。由HandlerAdapter执行处理器的处理逻辑,并返回一个ModelAndView

如果这个过程中发生了任何异常,将处理异常。

最后是渲染ModelAndView,返回响应。
spring mvc 请求处理流程分析

上一篇:springmvc 的原理分析


下一篇:框架面试题总结