天津免费网站建站模板,网站建设费分多少期摊销,网络规划毕业设计,做模型找三视图那些网站请求处理流程中#xff0c;DispatcherServlet作为核心组件#xff0c;负责控制整个流程#xff0c;协调各个组件之间的交互。同时#xff0c;SpringMVC提供了丰富的配置选项和扩展点#xff0c;使得开发者可以根据具体需求定制和扩展功能。
当浏览器发送一个请求 http://…请求处理流程中DispatcherServlet作为核心组件负责控制整个流程协调各个组件之间的交互。同时SpringMVC提供了丰富的配置选项和扩展点使得开发者可以根据具体需求定制和扩展功能。
当浏览器发送一个请求 http://localhost:8080/hello 后请求到达服务器其处理流程是 服务器提供了 DispatcherServlet它使用的是标准 Servlet 技术 路径默认映射路径为 /即会匹配到所有请求 URL可作为请求的统一入口也被称之为前控制器 jsp 不会匹配到 DispatcherServlet其它有路径的 Servlet 匹配优先级也高于 DispatcherServlet 创建在 Boot 中由 DispatcherServletAutoConfiguration 这个自动配置类提供 DispatcherServlet 的 bean初始化DispatcherServlet 初始化时会优先到容器里寻找各种组件作为它的成员变量 HandlerMapping初始化时记录映射关系HandlerAdapter初始化时准备参数解析器、返回值处理器、消息转换器HandlerExceptionResolver初始化时准备参数解析器、返回值处理器、消息转换器ViewResolver DispatcherServlet 会利用 RequestMappingHandlerMapping 查找控制器方法 例如根据 /hello 路径找到 RequestMapping(“/hello”) 对应的控制器方法 控制器方法会被封装为 HandlerMethod 对象并结合匹配到的拦截器一起返回给 DispatcherServlet HandlerMethod 和拦截器合在一起称为 HandlerExecutionChain调用链对象 DispatcherServlet 接下来会 调用拦截器的 preHandle 方法RequestMappingHandlerAdapter 调用 handle 方法准备数据绑定工厂、模型工厂、ModelAndViewContainer、将 HandlerMethod 完善为 ServletInvocableHandlerMethod ControllerAdvice 全局增强点1️⃣补充模型数据ControllerAdvice 全局增强点2️⃣补充自定义类型转换器使用 HandlerMethodArgumentResolver 准备参数 ControllerAdvice 全局增强点3️⃣RequestBody 增强 调用 ServletInvocableHandlerMethod使用 HandlerMethodReturnValueHandler 处理返回值 ControllerAdvice 全局增强点4️⃣ResponseBody 增强 根据 ModelAndViewContainer 获取 ModelAndView 如果返回的 ModelAndView 为 null不走第 4 步视图解析及渲染流程 例如有的返回值处理器调用了 HttpMessageConverter 来将结果转换为 JSON这时 ModelAndView 就为 null 如果返回的 ModelAndView 不为 null会在第 4 步走视图解析及渲染流程 调用拦截器的 postHandle 方法处理异常或视图渲染 如果 1~3 出现异常走 ExceptionHandlerExceptionResolver 处理异常流程 ControllerAdvice 全局增强点5️⃣ExceptionHandler 异常处理 正常走视图解析及渲染流程 调用拦截器的 afterCompletion 方法