SpringMVC 的运行原理
0. 灵魂的拷问
问:SpringMVC 是什么?它有什么作用?
答:SpringMVC 的全称是 Spring Web Model-View-Controller,它是 Spring Framework 的其中一个模块,是Spring的一个子框架,拥有 Spring 的特性,如依赖注入等特性。SpringMVC 实现了 Web 模型中的 MVC 框架模式,通过把 Model,View,Controller 分离,把较为复杂的 web 应用分成逻辑清晰的几部分。这种种分层工作的办法简化了开发,更不易出错。让组内开发人员之间的配合更加方便。
问:SpringMVC 的运行流程是什么?
答:SpringMVC 的运行流程主要分为以下步骤(附图):

图1 SpringMVC 的运行架构示意图
(1) 客户端向服务端发送 url 请求;
(2) 服务端接到 url 请求,被 DispatcherServlet 匹配 的 url 会由 DispatcherServlet 处理,根据传入的逻辑 uri 调用 HandlerMapping 进行处理器的映射匹配,匹配成功返回一个包含了处理器信息(即 Controller)和拦截器(即 Intercepter)信息的 HandleExecutionChain 对象,匹配失败返回 null;
(3) DispatcherServlet 根据返回的 HEC 调用可用的 HandlerAdapter 执行 Controller 的方法,执行完毕向 DispatcherServlet 返回一个 ModelAndView 对象,该对象分为 Model 和 View 两个部分,其中 Model 是数据的 Map(即键-值对集合),包含了需要渲染的数据信息;View 是页面的模板,指明了数据渲染的格式。ModelAndView 不能直接渲染并返回浏览器,还需要进一步的解析;
(4) DispatcherServlet 得到 ModelAndView 后,调用 ViewResolver 进行视图解析得到处理后的 View 对象,最后 DispatcherServlet 把 View 对象渲染成页面视图传递给客户端浏览器。
问:我觉得你说的这些太浅了,能不能给点直击灵魂的介绍?
答:请移步 https://stackify.com/spring-mvc/ 去获取更多惊喜。
SpringMVC 的运行原理的更多相关文章
- Springmvc的运行原理 SpringMvc的优点
SpringMVC框架运行原理 1:客户端发送请求到前端控制器(DispatcherServlet),前端控制器根据请求信息(url),查询一个或多个HandlerMapping, 前端控制器,来决定 ...
- SpringMVC运行原理浅析
SpringMVC是主流的J2EEWEB层框架,SpringMVC是Sping家族中一个重要的产品.下面给出SpringMVC的运行原理.springmvc和spring无需通过中间层进行整合,spr ...
- SpringMVC运行原理
一.SpringMVC运行原理图 二.相关接口解释 DispatcherServlet接口: Spring提供的前端控制器,所有的请求都有经过它来统一分发.在DispatcherServlet将请 ...
- SpringMvc拦截器运行原理。
首先,先简单的说一下怎么配置SpringMvc的拦截器. 分两步,第一步先定义一个类,实现HandlerInterceptor接口. import javax.servlet.http.HttpSer ...
- springMVC源码分析--@ModelAttribute使用及运行原理
这一篇博客我们简单的介绍一下ModelAttribute的使用和运行原理. 1.首先@ModelAttribute是使用在方法或者上的,当使用在方法上时其作用于本身所在的Controller,在访问C ...
- springboot深入学习(二)-----profile配置、运行原理、web开发
一.profile配置 通常企业级应用都会区分开发环境.测试环境以及生产环境等等.spring提供了全局profile配置的方式,使得在不同环境下使用不同的applicaiton.properties ...
- SpringMVC的工作原理及MVC设计模式
SpringMVC的工作原理: 1.当用户在浏览器中点击一个链接或者提交一个表单时,那么就会产生一个请求(request).这个请求会携带用户请求的信息,离开浏览器. 2.这个请求会首先到达Sprin ...
- SpringMVC架构实现原理
SpringMVC架构实现原理 一.SpringMVC介绍 Spring mvc是一个基于mvc的web框架.其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Ser ...
- iis6.0与asp.net的运行原理
这几天上网翻阅了不少前辈们的关于iis和asp.net运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教 ...
随机推荐
- docker基础内容讲解
一.初识docker 1.1 LXC介绍 LXC为LinuX Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提 ...
- L'opzione di luce del puntatore laser
Prima di tutto, sono di buone dimensioni, non i 'mini' puntatori laser che altri stanno vendendo. È ...
- PB开发境界 多个DW进行update
多个DW进行update //菜鸟代码dw_1.Update()dw_2.Update()初级代码IF dw_1.Update() = 1 And dw_2.Update() = 1 THEN ...
- [转]Virtio balloon
http://rwmj.wordpress.com/2010/07/17/virtio-balloon/ After someone asked me a question about “balloo ...
- 背水一战 Windows 10 (112) - 通知(Badge): application 的 badge 通知, secondary 的 badge 通知, 轮询服务端以更新 badge 通知
[源码下载] 背水一战 Windows 10 (112) - 通知(Badge): application 的 badge 通知, secondary 的 badge 通知, 轮询服务端以更新 bad ...
- 【Java】利用注解和反射实现一个"低配版"的依赖注入
在Spring中,我们可以通过 @Autowired注解的方式为一个方法中注入参数,那么这种方法背后到底发生了什么呢,这篇文章将讲述如何用Java的注解和反射实现一个“低配版”的依赖注入. 下面是我们 ...
- 大叔学ML第二:线性回归
目录 基本形式 求解参数\(\vec\theta\) 梯度下降法 正规方程导法 调用函数库 基本形式 线性回归非常直观简洁,是一种常用的回归模型,大叔总结如下: 设有样本\(X\)形如: \[\beg ...
- 用java开发dota英雄最华丽的技能
爱java 爱dota,突发奇想想用java开发dota操作最华丽的英雄之一的卡尔的技能,因为本人系小白,代码不足的地方还请包涵,有同样爱好的同学欢迎一起研究学习. 先把我的代码呈上 import ...
- Javascript高级编程学习笔记(24)—— 函数表达式(2)闭包
昨天的文章中主要记录了,函数表达式与函数声明的区别 以及在JS中如何安全地使用递归 那么既然要深入地理解JS中的函数,闭包就是一个绕不开的概念 闭包 JS高编一书中对闭包的概念定义如下: 闭包是指有权 ...
- 怎么随时获取Spring的上下文ApplicaitonContext,和Spring管理的Bean
BeanFactory接口 Interface BeanFactory getBean <T> T getBean(String name, Class<T> required ...