名词解释

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:这个类中的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);
}

HandlerMapping,HandlerAdapter,HandlerExceptionResovler,ViewResolver都有个order属性,因为这些接口每一个都可以注册多个实现,order代表他们的执行顺序,order越小的越先执行,一般先执行的匹配到了后面的就不会执行了。

流程图

spring mvc 详细执行流程的更多相关文章

  1. Spring MVC请求执行流程

    学习Spring MVC时间有点长了,但是最近打算找工作,需要重新了解下,所以又去温故知新了.Spring MVC就是用来写web的框架,简化你写web的一些不必要的流程,让程序员能专注于业务逻辑也就 ...

  2. Spring mvc的执行流程

    一个请求匹配前端控制器 DispatcherServlet 的请求映射路径(在 web.xml中指定), WEB 容器将该请求转交给 DispatcherServlet 处理 DispatcherSe ...

  3. Spring MVC详细运行流程

  4. Spring Bean的生命周期、Spring MVC的工作流程、IOC,AOP

    1.Spring Bean的生命周期? (1)构造方法实例化bean. (2)构造方法设置对象属性. (3)是否实现aware接口,三种接口(BeanNameAware,BeanFactoryAwar ...

  5. MyBatis详细执行流程

    mybatis详细执行流程 一.通过Resource去加载全局配置文件 import org.apache.ibatis.io.Resources; import org.apache.ibatis. ...

  6. Spring MVC详细讲解

    一:三层架构和MVC 1:三层架构 我们的开发架构一般都是基于两种形式:一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就是浏览器服务器.在 JavaEE 开发中,几乎全都是基于 ...

  7. Spring MVC详细示例实战教程【转】

    一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...

  8. Spring MVC整体处理流程

    一.spring整体结构 首先俯视一下spring mvc的整体结构 二.处理流程 1.请求处理的第一站就是DispatcherServlet.它是整个spring mvc的控制核心.与大多数的jav ...

  9. spring mvc 详细配置(转)

    转自: http://www.cnblogs.com/superjt/p/3309255.html 现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是 ...

随机推荐

  1. fiddler2抓包工具使用图文教程

    fiddler2抓包工具使用图文教程 三.fiddler实用功能使用说明: 1.fiddler捕获浏览器的会话: 能支持http代理的任意程序都能被fiddler捕获到,由于fiddler的运行机制就 ...

  2. android-async-http

    安装 http://blog.csdn.net/wangwei_cq/article/details/9453345 包内的一些基本的参数 http://www.cnblogs.com/manuose ...

  3. 封装Log工具类

    public class LogUtil { public static final int VERBOSE = 1; public static final int DEBUG = 2; publi ...

  4. ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking

    #!/bin/bash # # ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking # 说明: # 本文主 ...

  5. LeetCode Contains Duplicate II (判断重复元素)

    题意:如果有两个相同的元素,它们之间的距离不超过k,那么返回true,否则false. 思路:用map记录每个出现过的最近的位置,扫一边序列即可.扫到一个元素就判断它在前面什么地方出现过.本题数据有点 ...

  6. 使php支持mbstring库

    多国语言并存就意味着多字节,PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得到的只是字符串所占的字节数.对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF ...

  7. Java [Leetcode 119]Pascal's Triangle II

    题目描述: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return ...

  8. Go2Shell 打开设置窗口

    Go2Shell默认没有设置界面,需要用命令行打开 在Shell中输入: open -a Go2Shell --args config

  9. java中时间格式yyyyMMddHHmmss的大小写问题

    字母     日期或时间元素 表示 示例 G Era 标志符 Text AD y 年 Year 1996 ; 96 M 年中的月份 Month July ; Jul ; 07 w 年中的周数 Numb ...

  10. 使用ffmpeg实现转码样例(代码实现)

    分类: C/C++ 使用ffmpeg实现转码样例(代码实现) 使用ffmpeg转码主要工作如下: Demux -> Decoding -> Encoding -> Muxing 其中 ...