java spring流程_浅谈SpringMVC执行过程
通过深入分析Spring源码,我们知道Spring框架包括大致六大模块, 如Web模块,数据库访问技术模块,面向切面模块,基础设施模块,核心容器模块和模块,
其中,在Spring框架的Web模块中,又包含很多前端技术,如SpringMVC,Spring WebSocket,Spring WebPortlet等,在本篇文章中,我们主要分析SpringMVC模块,
在分析SpringMVC技术时,本篇文章将通过解读SpringMVC源码,并通过编译器断点调试追踪,研究Spring核心类的UML图,来深入剖析SpringMVC的执行过程。
一 Spring核心模块
下图为Spring核心模块,其中SpringMVC模块位于Spring框架的Web模块部分
二 SpringMVC执行原理
下图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。
简要分析执行流程:
1.DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求,
我们假设请求的url为:
http://localhost:9999/SpringMVC/input-product
如上url拆分成三部分:
(1)http://localhost:9999 服务器域名
(2)SpringMVC部署在服务器(http://localhost:9999)上的web站点
(3)input-product表示控制器
通过分析,如上url表示为:请求位于服务器localhost:9999上的SpringMVC站点的input-product控制器
2.HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler
3.HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:input-product
4.HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等
5.HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler
6.Handler让具体的Controller执行
7.Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView
8.HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet
9.DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名
10.视图解析器将解析的逻辑视图名传给DispatcherServlet
11.DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图
12.最终视图呈现给用户。
三 SpringMVC核心组件
(一)DispatcherServlet
DispatcherServlet就是所谓的SpringMVC前端控制器,作为整个SpringMVC的控制中心,,其相关UML如下所示:
(二)HandlerMapping
HandlerMapping主要用来解析请求url,解析出控制器,从而映射控制器,其相关类有16个。
如下为HandlerMapping的UML图
(三)HandlerAdapter
HandlerAdapter主要是调度Controller来处理业务逻辑等,想相关类有6个。
如下为HandlerAdapter的UML:
(四)ViewResolver
ViewResolver接口主要作用是解析DispatcherServlet传递的逻辑视图名,并将解析结果传回给DispatcherServlet。实现该接口的相关类或接口共有19个。
如下为ViewResolver主要的UML:
四 版权区
转载博客,必须注明博客出处
博主网址:http://www.cnblogs.com/wangjiming/
如您有新想法,欢迎提出,邮箱:2098469527@qq.com
专业.NET之家技术QQ群:490539956
专业化Java之家QQ群:924412846
有问必答QQ群:2098469527
一对一技术辅导QQ:2098469527
java spring流程_浅谈SpringMVC执行过程相关推荐
- 浅谈SpringMVC执行过程
通过深入分析Spring源码,我们知道Spring框架包括大致六大模块, 如Web模块,数据库访问技术模块,面向切面模块,基础设施模块,核心容器模块和模块, 其中,在Spring框架的Web模块中,又 ...
- java 多线程同步_浅谈Java多线程(状态、同步等)
Java多线程是Java程序员必须掌握的基本的知识点,这块知识点比较复杂,知识点也比较多,今天我们一一来聊下Java多线程,系统的整理下这部分内容. 一.Java中线程创建的三种方式: 1.通过继承T ...
- java list数组排序_浅谈对象数组或list排序及Collections排序原理
常需要对list进行排序,小到List,大到对自定义的类进行排序.不需要自行归并或堆排序.简单实现一个接口即可. 本文先会介绍利用Collections对List进行排序,继而讲到Collection ...
- java手动回收_浅谈java是如何做资源回收补救的
学习java的过程,我们经常谈论一个对象的回收,尤其是资源类型,如果没有显示的关闭,对象就被回收了,说明出现了资源泄漏.java本身为了防止这种情况,做了一些担保的方式,确保可以让未关闭的资源合理回收 ...
- java对象头_浅谈java对象结构 对象头 Markword
概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...
- java bitset用途_浅谈Java BitSet使用场景和代码示例
搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...
- java缓存同步_浅谈JSON的数据交换、缓存问题和同步问题
JSON轻量级的数据交换格式 相对于XML来说,JSON的解析速度更快,文档更小. JSON的格式 {属性名:属性值,属性名:属性值,--} 属性名的类型可以是string,number,boolea ...
- java同名函数_浅谈Java 继承接口同名函数问题
在Java中如果一个类同时继承接口A与B,并且这两个接口中具有同名方法,会怎么样? 动手做实验: interface A{ void fun(); } interface B{ void fun(); ...
- java扫码枪键盘_浅谈在react中如何实现扫码枪输入
触发原理 原理就是监听键盘输入,比如扫一个为6970596130126的69条形码,用扫码枪扫一下会在光标位置依次输出: 6 9 7 0 5 9 6 1 3 0 2 6 但这不是完整的,所以需要写一个 ...
最新文章
- Matlab与数据结构 -- 求向量或矩阵的最大值
- R语言KMeans聚类分析确定最优聚类簇数实战:NbClust包(确定最优聚类簇数)
- 独家 | 国内AI专业高考报考指南
- Python中的[:n],[::n],[:,:,n],[...,n]介绍
- 关于Unity游戏开发方向找工作方面的一些个人看法
- python怎么创建方法_python中的__new__方法
- oracle怎么导出筛选后的数据,ORACLE,筛选单字段不重复的记录,保留其他字段....
- 关系数据模型和关系数据库系统
- java怎么一段字符串全为数字_java 如何判断一个字符串是数字
- 自然语言处理中的语言模型与预训练技术的总结
- Crypto.com APP上线The Graph(GRT)
- php 监听模式,总结Laravel事件系统用法(监听事件,观察者模式)
- selenium实战二:登入QQ空间
- 【TsinsenA1339】JZPLCM(顾昱洲) 树状数组
- 股票实战分析专题-金融量化初级练习使用
- 战争英雄、同性恋和计算机科学的奠基人
- 【图像识别】基于计算机视觉实现自动报靶系统(重弹孔)含Matlab源码
- 计算机在制造业中的应用领域是什么,计算机在制造业中的应用ppt
- 俄罗斯方块练习中对 swift 语言的体会
- 项目管理 | 如何正确的向领导汇报工作?