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运行原理的博客,学的有点零零散散,花了好长时间做了一个小结(虽然文字不多,但也花了不少时间呢),鄙人不才,难免有理解不道的地方,还望前辈们不吝赐教 ...
随机推荐
- Java学习笔记三:运算符
1.算术运算符: GitHub代码练习地址:https://github.com/Neo-ML/JavaPractice/blob/master/OperPrac01.java + - * / ...
- 吴恩达机器学习笔记35-诊断偏差和方差(Diagnosing Bias vs. Variance)
当你运行一个学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差比较大,要么是方差比较大.换句话说,出现的情况要么是欠拟合,要么是过拟合问题.那么这两种情况,哪个和偏差有关,哪个和 ...
- 使用ajax的post方式下载excel
项目需求,前端发起ajax请求,后端生成excel并下载,同时需要在header头中,带上token验证信息,参考了很多文章,最终实现如下: PHP后端使用base64: $filename = 'd ...
- HBase相关的一些点
1.在运行Hbase时,如果遇到出错之后: 可以通过{HBASE_HOME}目录,我的是在/usr/soft/hbase下的logs子目录中的日志文件查看错误原因.2.启动关闭Hadoop和HBase ...
- python读取xml文件示例
最近用到了xml格式的文件,对这些没啥印象,顺便学习一下,做个例子,方便后续查阅. xml文档: <annotation> <folder>VOC2012</folder ...
- .Net Core新建解决方案,添加项目引用,使用VSCode调试
并不是我自己琢磨的,是看了别人学习的,因为写的都不完整,所以就整理一下记录后面忘了回看. 反正.Net Core是跨平台的,就不说在什么系统上了.假设我要建一个名为Doggie的解决方案,里面包含了一 ...
- DFA算法实现关键字查找(正则原理入门)
前言:一直都这样认为“正则表达式是一个很有用的技能”,从一开始的磕磕绊绊的使用和摸索,到后来可以得心应手,这个过程离不来平时的不断学习和思考
- Spring实战拆书--SpringBean
代码源码地址:https://github.com/wujiachengSH/springBeanDemo 概述:本章将讲解Spring对于Bean的管理方案. 目录: 准备工作 自动装配 处理装配歧 ...
- Lua IUP 环境搭建
1.从sourceforge.net下载Luabinaries.IUP.CD.IM.LuaGL的源码 2.编译CD 2.1.用cd\mak.vc12中的lua_version53.props替换lua ...
- salesforce零基础学习(九十三)Email To Case的简单实现
Salesforce提供了标准的功能来实现通过Email 创建 Case.我们可以设置指定的路由的地址,指定条件的邮件会自动生成到目标salesforce系统的Case数据.Salesforce提供了 ...