Spring mvc的生命周期

开始使用 spring mvc之前,我们必须需要了解下SPRING MVC的流程,如下图:

在看下图之前的一些说明: (下面介绍的HandlerMapping,HandlerAdapter,HandlerExceptionResovler,ViewResolver都有个order属性,因为这些接口每一个都可以注册多个实现,order代表他们的执行顺序,order越小的越先执行,一般先执行的匹配到了后面的就不会执行了)

DispatcherServlet:         整个Spring MVC的前端控制器,由它来接管来自客户端的请求

HandlerMapping:           DispatcherServlet会通过它来处理客户端请求到各个(Controller)处理器的映射

HandlerAdapter:            HandlerMapping会根据它来调用Controller里需要被执行的方法

HandlerExceptionResolver:    spring mvc处理流程中,如果有异常抛出,会交给它来进行异常处理

ViewResolver:              HandlerAdapter会把Controller中调用返回值最终包装成ModelAndView,ViewResolver会检查其中的view,如果view是一个字符串,它就负责处理这个字符串并返回一个真正的View,如果view是一个真正的View则不会交给它处理,为什么view即可以是字符串又会是View呢下面会进行解释

View:                         对应MVC 中的V, 此接口只有一个方法 render,用于视图展现

ModelAndView             对于解决上面介绍ViewResoler或者下面图片的疑惑,这个类中的view这个属性是 Object 类型的,它可以是一个视图名也可以是一个实际的View,这点我们观察其源码可以很清楚的看出来

private Object view;

public void setViewName(String viewName) {

   this.view = viewName;

}

public String getViewName() {

  return (this.view instanceof String ? (String) this.view : null);

}

public void setView(View view) {

  this.view = view;

}

public View getView() {

  return (this.view instanceof View ? (View) this.view : null);

}

Spring mvc的流程图

如果看不全或者看不清图,请点击以下链接,由于图片太大,流程入口从中间上方的Client开始

http://pic002.cnblogs.com/images/2012/267998/2012010623530925.png

转自:http://www.cnblogs.com/zhaoyang/archive/2012/01/07/2315403.html

Spring 3.x MVC 图解MVC整体流程相关推荐

  1. 【Spring源码】一:整体流程

    总流程 12 个方法 // Prepare this context for refreshing. prepareRefresh();// Tell the subclass to refresh ...

  2. Spring 框架基础(06):Mvc架构模式简介,执行流程详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集 ...

  3. Spring MVC 拦截器执行流程

    Spring MVC-拦截器 今天就是把有关拦截器的知识做一个总结. 1.拦截器概述 1.1 什么是拦截器? Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(F ...

  4. spring mvc @RequestBody @ResponseBody 解析流程

    一.此接口测试用例 @RequestMapping(value = "/save_user",produces = "application/xml;charset=ut ...

  5. Spring 源码分析(四) ——MVC(二)概述

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) from:Spring 源码分析(四) --MVC(二)概述 - 水门-kay的个人页面 - OSCHINA ...

  6. Spring思维导图(MVC篇)

    写在前面 生活就像海洋,只有意志坚强的人才能到达彼岸. 已经很久没有发文章了呀,想必大家都挂念我了,哈哈. 温故而知新,今天一起来复习一下spring mvc的内容吧. spring mvc简介与运行 ...

  7. Spring.net与Asp.net Mvc结合示例《转载》

    一.介绍 因为项目要用到Ioc框架,所以要为Ioc框架选型,优秀的Ioc框架好几款,例如:sping.net,castle,unity--当然还不止三款,还有其它的Ioc框架,castle跟unity ...

  8. 搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架

    搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 学习网址哦: 很不错的 http://www.cnblogs.com/fly_dragon/archive/2010/ ...

  9. 开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo项目分析

    开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo,这个是一个在网上流传比较多的Spri ...

最新文章

  1. vue项目实现记住密码到cookie功能
  2. 【长文本处理】长文本划窗分割算法
  3. 使用MATLAB GUI创建图形用户界面GUI
  4. 分页插件PageHelper配置步骤(mybatis)
  5. 解读年度数据库性能:PostgreSQL的日志文件和数据加载
  6. iPhone 12系列详细屏幕参数前瞻:首批只有三星、LG屏幕 均为OLED面板
  7. Win10 安装 VS2015 失败解决办法
  8. Android WebView中图片自适应居中
  9. python map函数1分钟数据生成5分钟_用map函数来完成Python并行任务的简单示例
  10. 三层代码的bll dal 层优化
  11. oracle中同义词总结,ORACLE同义词总结
  12. 边缘检测法之Roberts算子
  13. libxml2 知:介绍
  14. TkMybatis的使用
  15. XMind初使用【常规操作快捷键】
  16. 【项目管理案例】第九期:如何做好项目整合管理
  17. WebGoat8 M17 Password Reset 密码重置 答案、思路、题解
  18. 有关计算机和音乐论文,电脑音乐论文
  19. 小白MacBook超级实战教程——装双系统WIN10
  20. 【SAP-CO】CO模块主要子模块相关概念

热门文章

  1. 使用RestTemplate访问restful服务时遇到的问题
  2. 【差分】bzoj 1676 [Usaco2005 Feb]Feed Accounting 饲料计算
  3. iOS 远程通知(Remote Notification)和本地通知(Local Notification)
  4. Boost asio学习笔记之二—— 网络编程
  5. 用netsh自动切换IP
  6. step5 . day4 网络编程 基于UDP协议的网络编程流程及API
  7. NodeJs基础之字节操作、路径操作和文本操作
  8. 怎样用jquery添加HTML代码
  9. Java基础03 构造器与方法重载
  10. 错误 1093 You can't specify target table 'table name' for update in FROM clause