Java面试题--SpringMVC的执行流程
创始人
2024-06-01 09:32:21
0

概要

SpringMVC是一种基于MVC(Model-View-Controller)框架的Web应用开发框架。下面是SpringMVC的详细执行流程。

  1. 客户端向DispatcherServlet发送请求。
  2. DispatcherServlet收到请求后,根据HandlerMapping(处理器映射)找到对应的Controller类。
  3. Controller类通过调用Service层中的方法来处理业务逻辑,并返回ModelAndView对象。
  4. ModelAndView对象包含数据模型和视图名称,DispatcherServlet调用ViewResolver来解析视图名称并找到对应的View类。
  5. View类负责渲染视图并将结果返回给DispatcherServlet。
  6. DispatcherServlet将响应发送给客户端。

整个执行流程如下:

  1. 请求到达DispatcherServlet。
  2. DispatcherServlet根据HandlerMapping找到对应的Controller。
  3. Controller处理请求,并返回ModelAndView。
  4. DispatcherServlet使用ViewResolver解析视图名称,并找到对应的View。
  5. View渲染模型并返回结果。
  6. DispatcherServlet返回响应给客户端。

当然,这只是SpringMVC的基本执行流程,具体的流程可能因为用户的不同需求而有所不同。
我们也可以将整个流程分为三个阶段

  • 准备阶段
  • 匹配阶段
  • 执行阶段

准备阶段

  1. 在 Web 容器第一次用到 DispatcherServlet 的时候,会创建其对象并执行 init 方法

  2. init 方法内会创建 Spring Web 容器,并调用容器 refresh 方法

  3. refresh 过程中会创建并初始化 SpringMVC 中的重要组件, 例如 MultipartResolver,HandlerMapping,HandlerAdapter,HandlerExceptionResolver、ViewResolver 等

  4. 容器初始化后,会将上一步初始化好的重要组件,赋值给 DispatcherServlet 的成员变量,留待后用
    在这里插入图片描述

匹配阶段

  1. 用户发送的请求统一到达前端控制器 DispatcherServlet

  2. DispatcherServlet 遍历所有 HandlerMapping ,找到与路径匹配的处理器

    ① HandlerMapping 有多个,每个 HandlerMapping 会返回不同的处理器对象,谁先匹配,返回谁的处理器。其中能识别 @RequestMapping 的优先级最高

    ② 对应 @RequestMapping 的处理器是 HandlerMethod,它包含了控制器对象和控制器方法信息

    ③ 其中路径与处理器的映射关系在 HandlerMapping 初始化时就会建立好
    在这里插入图片描述

  3. 将 HandlerMethod 连同匹配到的拦截器,生成调用链对象 HandlerExecutionChain 返回在这里插入图片描述

  4. 遍历HandlerAdapter 处理器适配器,找到能处理 HandlerMethod 的适配器对象,开始调用
    在这里插入图片描述

调用阶段

  1. 执行拦截器 preHandle
    在这里插入图片描述

  2. 由 HandlerAdapter 调用 HandlerMethod
    ① 调用前处理不同类型的参数
    ② 调用后处理不同类型的返回值
    在这里插入图片描述

  3. 第 2 步没有异常
    ① 返回 ModelAndView
    ② 执行拦截器 postHandle 方法
    ③ 解析视图,得到 View 对象,进行视图渲染
    在这里插入图片描述

  4. 第 2 步有异常,进入 HandlerExceptionResolver 异常处理流程
    在这里插入图片描述

  5. 最后都会执行拦截器的 afterCompletion 方法

  6. 如果控制器方法标注了 @ResponseBody 注解,则在第 2 步,就会生成 json 结果,并标记 ModelAndView 已处理,这样就不会执行第 3 步的视图渲染

相关内容

热门资讯

gta安卓系统怎么下载,轻松安... 你有没有想过,在手机上玩那些刺激的GTA游戏呢?想象你可以在繁忙的街头驾驶飞车,或者在虚拟世界中成为...
找不到安卓子系统,揭秘原因及解... 最近我在使用安卓手机的时候遇到了一个让人头疼的问题——找不到安卓子系统!这可真是让我抓耳挠腮,不知道...
安卓p系统如何使用,功能亮点与... 你升级到安卓P系统了吧?是不是有点小激动,想要立刻探索这个新系统的所有酷炫功能呢?别急,让我带你一步...
多多安卓系统app下载,一站式... 你有没有发现,最近手机上多了一个超级酷炫的系统——多多安卓系统!是不是已经跃跃欲试,想要下载体验一番...
r801 安卓系统,深度解析新... 你有没有听说过R801安卓系统?这可是最近在数码圈里炒得火热的一个话题呢!想象你的手机突然变得像一台...
安卓系统国外能用吗,探讨安卓系... 你有没有想过,当你拿着那部心仪的安卓手机,准备出国旅行或者工作的时候,会不会突然发现,哎呀妈呀,这安...
健康怀仁安卓系统下载,健康相伴 你有没有想过,在这个信息爆炸的时代,拥有一款健康、稳定的操作系统是多么重要的事情呢?今天,就让我带你...
手机系统模拟安卓5.0,系统革... 你有没有想过,如果手机系统可以像安卓5.0那样模拟出来,会是怎样的体验呢?想象你手中的设备瞬间变身成...
关闭安卓电池检测系统,解锁续航... 你有没有发现,手机用久了,电池续航能力好像越来越不给力了?是不是觉得安卓系统的电池检测系统太烦人了?...
安卓系统变ios永久,探索系统... 你知道吗?最近在科技圈里可是掀起了一股热潮呢!那就是安卓系统用户纷纷转向iOS系统的现象。这究竟是怎...
安卓系统虚拟按键失灵,原因排查... 手机里的安卓系统突然间出了点小状况,虚拟按键失灵了!这可真是让人头疼不已。想象你正沉浸在游戏的世界里...
安卓北京交警系统繁忙,揭秘安卓... 最近北京的小伙伴们有没有发现,打开手机上的安卓交警系统,那可真是忙得不亦乐乎啊!不信?那就跟着我一起...
苹果和安卓互用系统,共创未来 你有没有想过,为什么你的苹果手机上的应用,有时候也能在安卓手机上顺畅运行呢?这背后,其实有一个神奇的...
安卓系统强制内置相机,隐私与安... 你知道吗?最近在安卓系统上,有一个让人有点摸不着头脑的小变化引起了大家的关注。那就是安卓系统竟然开始...
安卓系统读书app推荐,安卓系... 你有没有发现,随着智能手机的普及,阅读变得越来越方便了呢?尤其是在安卓系统上,各种各样的读书app层...
安卓系统新出的机型,探索【型号... 最近手机圈可是热闹非凡呢!安卓系统新出的机型层出不穷,简直让人眼花缭乱。今天,就让我带你一起探索这些...
安卓与苹果系统游戏,游戏生态对... 你有没有发现,现在手机游戏越来越流行了?不管是走在路上,还是在公交车上,总能看到大家低头玩着手机,那...
闭源系统和安卓开源系统,揭秘闭... 你有没有想过,为什么你的手机里装了那么多应用,却总感觉少了点什么?没错,就是那股自由自在的“玩”劲儿...
小米安卓系统密码破解,揭秘安全... 小米安卓系统密码破解:一场技术与道德的较量在数字化时代,手机已经成为我们生活中不可或缺的一部分。小米...
ios系统游戏转安卓系统游戏,... 你有没有想过,为什么有些游戏在iOS系统上玩得那么顺畅,一到安卓系统上就卡得跟什么似的?今天,就让我...