今天是第一次接触Spring mvc 首先 我们先从Spring mvc的生命周期来了解它。

首先,浏览器会发送请求,我们的项目通过spring中的一个叫做dispatcherServlet名字的一个servlet来接收请求.

这个Servlet接收请求后 会验证是否是第一次加载这个Servlet。如果是第一次加载这个Servlet 则此时dispatcherServlet会做一些初始化操作。

1.dispatcherServlet会初始化HandlerMapping(注:通过它来处理客户端请求到各个Controller处理器的映射)

2. dispatcherServlet会初始化HandlerAdapter(注:HandlerMapping会根据它来调用Controller里需要被执行的方法)

3. dispatcherServlet会初始化handlerExceptionResolver(注:spring mvc处理流程中,如果有异常抛出,会交给它来进行异常处理)

4. dispatcherServlet会初始化ViewResolver (注:HandlerAdapter会把Controller中调用返回值最终包装成ModelAndView,ViewResolver会检查其中的view,如果view是一个字符串,它就负责处理这个字符串并返回一个真正的View,如果view是一个真正的View则不会交给它处理)

上述这些都初始化完毕后  然后dispathcerServlet会开始查询一个或者多个handlerMaprring 来将请求映射到一个控制器对象

如果此时没有找到一个控制器对象 则会抛出异常

如果找到了一个控制器对象 那么这个请求会经过一个拦截器链的preHandle处理 通过handlerAdapter来匹配到控制器对象的具体方法

然后这个方法中会根据我们的业务逻辑来处理请求 完成业务逻辑的处理后 控制器会得到一个ModelAndView对象(注:这个类中的view这个属性是 Object 类型的,它可以是一个视图名也可以是一个实际的View)

得到这个ModelAndView后   spring会判断ModelAndView的viewName是否是String类型

如果是String类型    则直接调用ModelAndView的getView方法   然后找到对应的页面 然后将信息返回给DispatcherServlet

如果不是string类型 然后会根据viewName到ViewResolver中去找到这个名称  然后确定其对应的页面  然后将页面返回给dispatcherserlvet

最后dispatcherSerlvet会将得到页面返回给浏览器。

最后 附上我一张自己画的图 来作为上边文字的一个解释

最后 感谢阳阳多博主的《图解MVC整体流程》文章  给了我很大的帮助。

Spring mvc 的生命周期相关推荐

  1. Spring MVC的生命周期

    Spring MVC的生命周期, 第一步:用户发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求处理器映射器(HandlerMappering)去查找处理器(Handl ...

  2. Spring bean 实现生命周期的三种解决方案

    Spring bean 实现生命周期的三种解决方案 参考文章: (1)Spring bean 实现生命周期的三种解决方案 (2)https://www.cnblogs.com/javawebsoa/a ...

  3. 【Spring】- Bean生命周期

    2019独角兽企业重金招聘Python工程师标准>>> Spring Bean的生命周期: bean对象实例化 属性注入 beanfactory ApplicationContext ...

  4. 字节跳动面试题:“请你描述下 Spring Bean 的生命周期?”

    1. 引言 "请你描述下 Spring Bean 的生命周期?",这是面试官考察 Spring 的常用问题,可见是 Spring 中很重要的知识点. 我之前在准备面试时,去网上搜过 ...

  5. 带你读懂Spring Bean 的生命周期,嘿,就是玩儿~

    带你读懂Spring Bean 的生命周期,嘿,就是玩儿~ 一.前言 今天我们来说一说 Spring Bean 的生命周期,小伙伴们应该在面试中经常遇到,这是正常现象.因为 Spring Bean 的 ...

  6. 请解释Spring Bean 的生命周期?

    Spring Bean 的生命周期简单易懂.在一个bean 实例被初始化时,需要执行一系列的初始化操作以达到可用的状态.同样的,当一个bean 不在被调用时需要进行相关的析构操作,并从bean 容器中 ...

  7. spring生命周期_理解Spring应用上下文生命周期

    Spring应用上下文启动准备阶段 `BeanFactory`创建阶段 `BeanFactory`准备阶段 `BeanFactory`后置处理阶段 `AnnotationConfigServletWe ...

  8. Spring Bean的生命周期及接口回调

    本篇介绍Spring框架为Spring Bean生命周期各阶段提供的回调接口,程序通过实现回调接口,可以在IOC容器实例化或销毁Bean的过程中,得到Bean的控制权,并对Bean进行预处理工作.通过 ...

  9. Spring Bean的生命周期(非常详细)

    Spring作为当前Java最流行.最强大的轻量级框架,受到了程序员的热烈欢迎.准确的了解Spring Bean的生命周期是非常必要的.我们通常使用ApplicationContext作为Spring ...

最新文章

  1. 福建省2013高职单招计算机类试题,13年福建-高职单招-计算机类试题及答案.doc
  2. ios应用内跳转到appstore里评分
  3. Java黑皮书课后题第3章:**3.19(计算三角形的周长)编写程序,读取三角形的三个边,如果输入值合法就计算这个三角形的周长;否则,显示这些输入值不合法。如果任意两条边的和大于第三边,则输入值都是合
  4. python 科学计算及数据可视化
  5. 使用curl工具测试SAP Spartacus的SSR模式是否工作正常
  6. 基于VS的连连看小游戏
  7. python上传文件 request_Python request 上传文件
  8. 一篇文章教会你使用Python中三种简单的函
  9. ViBe(Visual Background extractor)背景建模或前景检测
  10. Python 对文件进行编码转换
  11. VLOOKUP函数返回错误值#N/A的两种解决方法
  12. ubuntu ftp服务器_如何在Ubuntu上安装FTP服务器?
  13. CSDN获得c币办法
  14. 从实战思路学习前端的设计模式
  15. Android 截屏监听分享
  16. php论文中期进展情况,我院开展2017年本、硕毕业创作/设计及毕业论文中期检查工作...
  17. java 检查 死链接_如何检查网站死链(网站死链接如何简易识别及处理)
  18. Simon Knowles:30年做成三家独角兽公司,AI芯片创业的底层逻辑
  19. 【有机】镍催化非活化烯烃的不对称氢烷基化构建全烷基取代的饱和三级碳手性中心...
  20. 抠图:基于单个原色通道

热门文章

  1. cmd-ping命令
  2. 数字IC设计工程师的知识结构
  3. 笔记本电脑玩游戏延迟高怎么办
  4. 100个Myeclipse6.5免费注册码
  5. TCP加速:腾讯单边拥塞算法TCPA(类似于BBR、锐速)
  6. TCP/IP协议族 总结
  7. ARM-CPU工作原理,基于ARM的SOC讲解
  8. Navicat Premium和Navicat for MySQL哪个好用?
  9. windows10 家庭版 Hyper-V 虚拟机服务开启与应用 (一)
  10. 自定义View入门实战案例详析 | 蜘蛛网DataShowView