图1.流程图

1.当一个请求(request)过来,进入DispatcherServlet中,里面有个方法叫 doDispatch()方法 里面包含了核心流程

源码如下:

4.然后往下看getHandler():(DispatcherServlet.Java)

  mapperHandler是  HandlerExecutionChain (处理器调用链) 类。

  HandlerExecutionChain 包含了处理器对象以及和处理器相关的拦截器,有目标方法和Handler。

  HandlerMapping 获取HandlerExecutionChina对象
  源码的1120行(DispatcherServlet.java)。

  这里 1115行的 Handlermapping 定义了请求到处理器之间的映射,请求找到处理器就需要用到HandlerMapping。

5.上面的代码执行完后又返回到932行,继续执行:

  这里将出现三种情况:

  一、当请求的url路径不存在时(没有对应的requestmapping注解方法)

  如果发的请求的映射是空的。返回的HandlerExecutionChain、mappedHandler对象为空表示没有对应的映射

执行noHandlerFound方法

  经过这个方法  表示没有页面并且会进入404 错误页面。

二、 当请求的路径url不存在时(没有对应的requestmapping注解方法),applicationcontext.xml中存在以下注解时:

  经过上面的配置 则 getHandler()不是null,因为加上以上的配置,会调用SimpleUrlHandlerMapping 去寻找本地的静态资源,如css、js 等但是同样的路径不存在跳转到404页面。

三、如果存在映射,继续执行之后的代码:

6.执行到上面这行getHandlerAdapter():

  HandlerAdapter(Handler适配器)

  这个类进行了很多操作,比如表单到实体Bean的赋值,通过Binner进行了 数据的绑定。

7.继续执行:954行preHandle().

这里呢,底层调用了拦截器的 PreHandle方法,如图:

8.然后继续执行到代码 959行(DispatcherServlet.java),handle()方法。

  这里呢就返回了一个ModelAndView,如果所示.

9.随后代码继续执行 调用了拦截器的postHandler()方法 ,然后调用ProcessDispatchResult方法,如下图:

继续执行

  然后继续执行 一直到代码 1027行(DisPatcherServlet.java)

10.这里就是已经在渲染视图了render()方法

这里通过在applicationcontext.xml中配置的视图解析器 进行了引用然后将页面进行了转发,

上面的 rd.forward 就是进行了转发  然后整个流程就已经走完了!!!

SpringMVC工作原理2(代码详解)的更多相关文章

  1. 基础 | batchnorm原理及代码详解

    https://blog.csdn.net/qq_25737169/article/details/79048516 https://www.cnblogs.com/bonelee/p/8528722 ...

  2. DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解

    本文介绍多层感知机算法,特别是详细解读其代码实现,基于python theano,代码来自:Multilayer Perceptron,如果你想详细了解多层感知机算法,可以参考:UFLDL教程,或者参 ...

  3. 非极大值抑制(NMS,Non-Maximum Suppression)的原理与代码详解

    1.NMS的原理 NMS(Non-Maximum Suppression)算法本质是搜索局部极大值,抑制非极大值元素.NMS就是需要根据score矩阵和region的坐标信息,从中找到置信度比较高的b ...

  4. Spring之IOC原理及代码详解

    一.什么是IOC 引用 Spring 官方原文:This chapter covers the Spring Framework implementation of the Inversion of ...

  5. NFS工作原理及配置文件详解

    nfs工作原理流程       如上图所示,当访问程序通过NFS客户端向NFS服务端存取文件时,其请求数据流程如下几点:     1.首先用户访问网站程序,由程序在NFS客户端上发出NFS文件存取功能 ...

  6. 以太坊工作原理之txpool详解

    txpool详解 交易池txpool作为区块链系统的重要组成部分,对系统的安全性和稳定性具有重要作用.功能可归纳为:交易缓存.交易验证和交易过滤. 基本介绍 交易分类和缓存 txpool主要包含两个重 ...

  7. 场效应管种类-场效应管N、P沟道与增强、耗尽型工作原理等知识详解 如何选用晶体三极管与场效应管的技巧

    http://www.kiaic.com/article/detail/1308.html 场效应管种类场效应管 场效应晶体管(Field Effect Transistor缩写(FET))简称场效应 ...

  8. vmware三种网络模式的工作原理及配置详解

    vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-Only(仅主机模式). 打开vmware虚拟机,我们可以在选项栏的“编辑”下的 ...

  9. ansible 工作原理以及使用详解

    内容:1.ansible的作用以及工作结构2.ansible的安装以及使用3.ansible的playbook使用 一.ansible的作用以及工作结构        1.ansible简介:     ...

  10. SpringMVC工作原理详解

    先来看一下什么是 MVC 模式 MVC 是一种设计模式. MVC 的原理图如下: SpringMVC 简单介绍 SpringMVC 框架是以请求为驱动,围绕 Servlet 设计,将请求发给控制器,然 ...

随机推荐

  1. [UE4]混合动画以及Try Get Pawn Owner、Get Velocity、VectorLength的使用

    混合动画,可以混合个多动画之间的动画,多个动画相当于关键帧,关键帧之间可以生成混合出过度动画. 实时动态更新Speed参数. 知识点: 一.可以在蓝图中使用“Try Get Pawn Owner”取得 ...

  2. Eclipse修改workspace目录的几种方式

    Eclipse是一款很强的Java IDE,我们在开始的时候,往往设定了默认的workspace,当用久在之后,我们可能要去更改一下workspace的位置.下面有几种方法可以更改workspace的 ...

  3. SparkStreaming 运行原理与核心概念

    SparkStreaming 运行原理 sparkstreaming 的高层抽象DStream Dstream与RDD的关系 Batch duration

  4. ERROR 1045 (28000): Access denied for user 'hive'@'localhost' (using password: YES)

    [root@master native]# mysql -uhive -pEnter password: ERROR 1045 (28000): Access denied for user 'hiv ...

  5. 在windows 下将 chm 格式的文件 转换成 html 的文件

    有时我们可能需要将 chm 格式的文件 转换成 html 格式的网页文件,这时,如果你使用的是 windows 操作系统,那就可以用 windows 操作系统自带的反编译工具来完成这项任务,具体步骤: ...

  6. ckeditor源码编辑模式,添加style、javascript内容丢失的解决

    我使用ckeditor 我在编辑的使用源码编辑,保存内容包含javascript.style标签的时候,数据库中有javascript.style标签 , 输入到页面也可以执行,但是我再次编辑的时候就 ...

  7. Jenkins + testNg + maven 项目持续集成

    搞了一整天,梳理下关键点: 1.项目的pom.xml要配置插件,同时指定testng.xml文件的位置.就被这个卡了好久 <properties> <maven-surefire-p ...

  8. 无法读取用户配置文件,系统自动建立Temp临时用户

    chkdsk/f 删除用户目录下的 ntuser.dat.LOG 文件,重新登陆即可. 对于新建用户的情况: 一.Default User文件夹不完整或者被删除了,导致系统无法复制新的一份.这种情况的 ...

  9. as3 去掉字符串空白问题

    去掉内容的所有空白 function trim(str:String):String { })/g,""); } //[ ]内是一个中文空格一个英文空格 {}是说匹配一个到多个 / ...

  10. Hibernate常用网址

    Hibernate 官网用户手册: http://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide ...