SpringMVC执行流程分析

在这里插入图片描述

1. 用户通过url发起请求,请求送到前置控制器(DispatcherServlet)2. 前置控制器是整个SpringMVC的控制中心,当接收到用户的请求之后, 根据请求传来的 url  去 处理器映射(HandlerMapping)中查找 url 对应的处理器handler。

3. 处理器映射 调用 HandlerExecution,表示开始查找 url 对应的 handler。

4. HandlerExecution 将找到的 handler 返回给前置控制器。

5. 前置控制器根据 handler 去 HandlerAdapter 中 执行handler。

6. handler开始执行,并去Controller层调用具体的controller执行对应的服务。

7. controller执行结束,向 HandlerAdapter中返回执行得到的结果,如ModelAndView8. HandlerAdapter将收到的执行结果返回给前置控制器。

9. 前置控制器将收到的执行结果交给视图解析器(ViewResolver)去解析。
 
10. 视图解析器将解析得到的结果返回给前置控制器。

11. 前置控制器将收到的解析结果传递给视图进行渲染。

12. 视图将渲染得到的结果返回给用户。

代入生活案例:

1. 某著名二代小明同学今天中午想吃烤鸭,他去找自己的私人管家,表示了自己想吃烤鸡的需求。(用户、DispatcherServlet)

2. 管家收到小明的请求之后, 去小明家的物资管理平台 查找烤鸡分区。(DispatcherServletHandlerMapping)

3. 物资管理平台的经理接到请求之后,指示自己手下金牌领班去搜索全国有名的烤鸭店。(HandlerMappingHandlerExecution)

4. 领班将搜索得到的店铺向小明同学的私人管家汇报。(HandlerExecutionDispatcherServlet)

5. 管家根据店铺名去找这家店的店长,要求做烤鸭。(DispatcherServletHandlerAdapter)

6. 店长去找自己的厨师长,表达了小明同学要吃烤鸭的需求,让他赶快做出来。(HandlerAdapterController)

7. 厨师长将做好的烤鸭交给店长。(ControllerHandlerAdapter)

8. 店长将做好的烤鸭交给管家验货。(HandlerAdapterDispatcherServlet)

9. 管家将烤鸭交给打包员打包,并告诉打包员小明同学的地址。(DispatcherServletViewResolver)
 
10. 打包员将打包好并贴好外卖地址的烤鸭交给管家。(ViewResolverDispatcherServlet)

11. 管家将打包好的烤鸭交给骑手。(DispatcherServletView)

12. 骑手将烤鸭送到小明同学的学校门口。(View、用户)
上述流程全部由spring框架实现,我们需要做的只有红色箭头部分的:

1. 具体业务实现(代入案例中即为 厨子去做烤鸭),在业务实现的时候不可避免会用到数据库(厨子做烤鸭也不可避免需要买原材料)

2. 实现结果返回(烤鸭做好)

如果spring不使用注解的话,那么我们可以自定义一个Model层,(蓝色箭头部分)

3. controller执行的结果封装进Model层。

4. Model直接将结果交给视图解析器进行解析。

5. 视图解析器将解析的结果返回给View。

最后View再返回给用户。

强行代入上述案例的话,可以解释为,厨子的学徒之前在做外卖员的时候给小明送过饭,知道小明的地址,因此他等师傅做好烤鸭之后直接将烤鸭交给了打包员进行打包,并告诉了打包员的地址,打包员打包好之后直接将外卖交给了外卖员。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值