SpringMVC执行的流程

SpringMVC 基于 MVC 架构模式,核心流程时前端控制室 DispathcherServlet 统一调度,通过组件协作完成 http 的请求与响应。

对于 dispatchServlet 作为前端请求的控制器,全局的访问点,首先将根据 URL 调用 HandlerMapping 获取 Handler 配置的相关的对象。以 HandlerExceptionChain 执行链的形式返回。

handlerMapping 根据 URL 和 HTTP 方法找到对应的处理器,并包装成HandlerExceptionChain。 比如通过 RequestMappingHandlerMapping 映射到 Controller 里面 方法上面去。

handlerExceptionChain 调用链,包含了一个 handler 和多个拦截器。按照顺序调用拦截器的 prehandle 方法

根据 Handler 找到合适的 HandlerAdapter。开始执行拦截器的内容

将 Request 中的参数提取出来进行填充

  1. 提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)方法,处理请求。在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
    • 数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
    • 数据格式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
    • 数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中

执行完成之后

  1. Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象。
  2. 此时将开始执行拦截器的postHandle(...)方法【逆向】。
  3. 根据返回的ModelAndView(此时会判断是否存在异常:如果存在异常,则执行 HandlerExceptionResolver进行异常处理)选择一个适合的ViewResolver进行视图解析,根据Model 和View,来渲染视图。
  4. 渲染视图完毕执行拦截器的afterCompletion(...)方法【逆向】。
  5. 将渲染结果返回给客户端。
相关推荐
java1234_小锋3 天前
SpringMVC的拦截器和过滤器有什么区别?执行顺序?
springmvc
小花4 天前
SpringMvc中的拦截器
java·spring·springmvc
0和1的舞者12 天前
API交互:前后端分离开发实战指南
java·spring·tomcat·web3·maven·springmvc·springweb
0和1的舞者14 天前
Postman接口测试全攻略:传参技巧与实战解析
学习·测试工具·spring·springmvc·postman·web·开发
草原印象16 天前
Spring Boot Spring MVC MyBatis MyBatis Plus框架编写项目实战案例
spring boot·spring·mybatis·springmvc·mybatisplus
这周也會开心1 个月前
SpringMVC整理
java·springmvc
任风雨1 个月前
3.2.2.SpringMVC简介
springmvc
朝新_2 个月前
【SpringMVC】SpringMVC 请求与响应全解析:从 Cookie/Session 到状态码、Header 配置
java·开发语言·笔记·springmvc·javaee
赋能大师兄2 个月前
Spring MVC配置解决跨域请求
springmvc·cors·简单请求·非简单请求
天若有情6732 个月前
Spring MVC文件上传与下载全面详解:从原理到实战
java·spring·mvc·springmvc·javaee·multipart