SpringMVC过程模拟--史上详细

本文详细介绍了SpringMVC的工作流程,包括前端控制器、处理器映射器、处理器适配器、视图解析器等组件的角色和作用。通过一个生动的比喻,将请求处理比作点餐过程,帮助理解各个组件如何协同完成请求处理。同时,文章还提到了现代SpringMVC由于前后端分离,省略了视图解析和渲染步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

流程图

在这里插入图片描述

纠正

在这里插入图片描述

SpringMVC主要组件

  1. 前端控制器 作用:负责请求的转发和响应
  2. 处理器映射器 作用:负责url的映射查询,返回HandlerExecutionChain(处理器拦截器–参数类型的转换、处理器对象–方法对象名)
  3. 处理器适配器 作用:负责分配业务给(最优)处理器
  4. 视图解析器 作用:拼接完整路径

视图渲染 作用:数据与页面绑定

请求过程

  1. 用户发起请求,第一步经过前端控制器
  2. 前端控制器结构得到请求,但是前端控制器只负责请求的转发和响应,不做任何业务处理, 所以,将url请求转发给处理器映射器。
  3. 处理器映射器接受到前端控制器的url请求后,查询自己维护的服务列表信息
    如果服务列表中没有这个url的key,则返回特定数据给前端控制器,前端控制器接收特定的数据后,响应给用户404.
    如果服务列表中有这个url的key,则说明请求可以正常执行。将该url对应的value值(方法对象名)返回给前端控制器。
  4. 前端控制器将方法对象名进行接受,但是由于前端只负责转发和响应,不能直接执行该方法。所以将方法对象名交给处理器适配器。
  5. 处理器适配器根据方法的类型(类型:xml配置文件方式、注解的方式、其他的方式)。处理器适配器在根据自己的处理器库中挑选一个最为适合的处理器去执行该方法。
  6. 当处理器执行该方法时,Controller层中的方法才开始执行(Controller->Service->Mapper)。标识业务的开始。将最终的处理结果用一个对象包裹(ModelAndView对象),返回给处理器映射器。
  7. 然后处理器映射器再返回给前端控制器。
  8. 前端控制器将返回来的ModelAndView对象发送给视图解析器,将View中的数据进行解析,拼接一个完整的路径 。
    9.然后返回一个具体的View
  9. 最后将数据与具体的页面进行绑定渲染。
  10. 然后返回给前端控制器,
  11. 最后前端控制器响应给用户

了解父子容器

1.Spring容器由于IoC/DI的机制,可以作为第三方的管理者。作为父级
2.SpringMVC容器,其中只负责Controller层的相关的对象的管理。子级容器,mvc自成一套体系,(Controller层)

springmvc情景模拟

客户点餐(指定厨师和菜品),服务员收到单子,然后去找后厨管理员,问这位厨师来了吗?然后后厨管理员给他一个回复,如果没来,服务员就会回复客户,不好意思我们这不能为你服务(404),因为你指定的厨师没来;如果后厨管理员回复服务员说“来了”,然后服务员就去找厨师,将菜单给厨师,然后厨师根据菜单制作菜品,厨师偷懒,自己不做,分给最好的徒弟做,然后让徒弟做完,最后徒弟将做好的菜品给师傅,师傅又将菜品转手给服务员,服务员从后厨那拿到菜,还要给菜进行封装,这样更优仪式感,就需要推车,需要摆放灯光,最后服务员在推送给顾客。

客户:前端
厨师:请求
菜品:数据
服务员:前端控制器
后厨管理员:处理器映射器
厨师:处理器适配器
徒弟:hander
推车:视图解析器
灯光:视图渲染

现在的SpringMVC

由于现在流行前后端的分离。所以SpringMVC省略了视图解析和视图渲染

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值