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运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教 ...
随机推荐
- [转载]DevOps在传统企业的落地实践及案例分享
内容来源:2017年6月10日,优维科技高级解决方案架构师黄星玲在“DevOps&SRE 超越传统运维之道”进行<DevOps在传统企业的落地实践及案例分享>演讲分享.IT 大咖说 ...
- 白话TCP为什么需要进行三次握手
阅读本文大概需要 2.3 分钟. 作者:雨林 https://www.cnblogs.com/yuilin 首先简单介绍一下TCP三次握手 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次 ...
- 解决 Chrome 下载不了东西 失败 - 已屏蔽 的问题
或许你怎么也想不到是IE的问题 由于IE的安全设定问题 但是这个锅 确实不应该是IE来背. 因为我IE下载都没出现这个问题. 解决方法是这样的: IE>Internet选项>安全>自 ...
- JavaScript几个作用域问题
1. var a = 0 ; function f(){ a = 1; console.log(a); //全局变量a } console.log(a); //全局变量a f(); 输出结果为:1 1 ...
- Java集合及concurrent并发包总结(转)
Java集合及concurrent并发包总结(转) 1.集合包 集合包最常用的有Collection和Map两个接口的实现类,Colleciton用于存放多个单对象,Map用于存放Key-Valu ...
- flex布局常见用法小结
1,display:flex 这个在父容器中声明: 2,flex-direction:row / column 默认为横向,也在父容器中设置,定义flex布局的主轴方向:一条轴为主轴,那么另一条轴自然 ...
- leetcode — minimum-path-sum
/** * Source : https://oj.leetcode.com/problems/minimum-path-sum/ * * * Given a m x n grid filled wi ...
- kubernetes 安装kong、kong-ingress-controlor
一.关于kong的详细内容这里不再赘述,可以查看官网. kong升级到1.0以后功能越来越完善,并切新版本的kong可以作为service-mesh使用,并可以将其作为kubernetes的ingre ...
- shiro源码篇 - shiro认证与授权,你值得拥有
前言 开心一刻 我和儿子有个共同的心愿,出国旅游.昨天儿子考试得了全班第一,我跟媳妇合计着带他出国见见世面,吃晚饭的时候,一家人开始了讨论这个.我:“儿子,你的心愿是什么?”,儿子:“吃汉堡包”,我: ...
- Git命令速查
Alias 下面的只是例子,想改成什么跟随自己的意愿即可. git config --global alias.st status //status 缩写成 st git config --globa ...