对SpringMVC执行流程的一点理解

SpringMVC执行流程图如下:(图来自网络)

在这里插入图片描述
各个步骤解释+图解:

1.用户发送出请求到前端控制器DispatcherServlet。这里不画图了 就是用户发了请求到DispatcherServlet。
2.DispatcherServlet收到请求调用HandlerMapping(处理器映射器)。
3.HandlerMapping找到具体的处理器(可查找xml配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给DispatcherServlet。(图解代码待完善)
4.DispatcherServlet调用HandlerAdapter(处理器适配器)。 见下图
5.HandlerAdapter经过适配调用具体的处理器(Handler/Controller)。见下图
第四步第五步对应的代码
6.Controller执行完成返回ModelAndView对象。 见下图
7.HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。见下图
注意在返回MAV对象之前我们也指定了一会要渲染的目标页面的名称,这也存在MAV对象里了!
第6.7步的代码图解
8.DispatcherServlet将ModelAndView传给ViewReslover(视图解析器)。
9.ViewReslover解析后返回具体View(视图)。
10.DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
第8.9.10步代码图解
11.最后一步 DispatcherServlet响应用户, 即把渲染好的页面显示给用户 。

最后在放个不一样的图做参考复习咯(请忽略不一致的步骤标号2333):
两个图看哪个都行
后面介绍下使用注解实现Controller的功能的原因:
我们本来可以通过实现继承Controller的某个自定义Controller来实现ModelAndView的转发, 但是每个自定义Controller至多只有一个handlerRequest方法 这意味着当不同的请求非常多的时候 进行处理时你需要给每个请求写一个不同的Controller类,造成巨大工作量。

下面是注解实现Controller的代码图解:注解实现Controller
注解实现的Controller可以针对不同请求 在同一个Srping托管的自定义Controller类里写不同的方法实现针对不同请求的业务逻辑,不用再每个都写一个类来处理了。
此外针对视图层 我们完全可以通过注解Controller类里最后指定返回的路径 来实现不同请求时 对目标渲染页面的复用,因此不必再写那么多页面了。
大大降低了代码量
最后注意一点:
当类数目过多,如果需要针对不同功能进行分类(有父路径时)要注意修改下面的地方 一个时RequestMapping的位置及return返回的目标页面的地址。在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值