SpringMVC工作流程_chengmi6360的博客-程序员秘密

技术标签: java  测试  设计模式  

 一、SpringMVC简介

        SpringMVC是一种基于Spring实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,使用了MVC架构模式的思想,将web层进行职责解耦,并管理应用所需对象的生命周期,为简化日常开发,提供了很大便利。

        SpringMVC提供了总开关DispatcherServlet;请求处理映射器(Handler Mapping)和处理适配器(Handler Adapter),视图解析器(View Resolver)进行视图管理;动作处理器Controller接口(包含ModelAndView,以及处理请求响应对象request和response),配置灵活,支持文件上传,数据简单转化等强大功能。

二、工作流程与介绍

1135193-20171005165210099-1015669941.png

(1)客户端通过url发送请求

(2-3)核心控制器Dispatcher Servlet接收到请求,通过系统或自定义的映射器配置找到对应的handler,并将url映射的控制器controller返回给核心控制器。

(4)通过核心控制器找到系统或默认的适配器

(5-7)由找到的适配器,调用实现对应接口的处理器,并将结果返回给适配器,结果中包含数据模型和视图对象,再由适配器返回给核心控制器

(8-9)核心控制器将获取的数据和视图结合的对象传递给视图解析器,获取解析得到的结果,并由视图解析器响应给核心控制器

(10)核心控制器将结果返回给客户端

三、适配器作用

        SpringMVC涉及的映射器,视图解析器的作用不难理解,映射器负责将前端请求的url映射到配置的处理器,视图解析器将最终的结果进行解析,但中间为什么要经过一层适配器呢,为什么不经映射器找到controller后直接执行返回呢?

        那是因为SpringMVC为业务处理器提供了多种接口实现(例如实现了Controller接口),而适配器就是用来根据处理器实现了什么接口,最终选择与已经注册好的不同类型的Handler Adapter进行匹配,并最终执行,例如,SimpleControllerHandlerAdapter是支持实现了controller接口的控制器,如果自己写的控制器实现了controller接口,那么SimpleControllerHandlerAdapter就会去执行自己写的控制器中的具体方法来完成请求。

转载于:https://my.oschina.net/u/4107179/blog/3046797

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/chengmi6360/article/details/100698760

智能推荐

团队-象棋游戏-成员简介及分工_Maojie19790228的博客-程序员秘密

姓名:李一轩擅长的技能:交流,对代码规范和代码审查有较高的意识,对HTML、CSS以及JS、jQ较为熟悉分工:我将进行代码的主要编写和归纳以及和其他队员进行代码的合并,并将完整的代码上传到GIT中,并定期检查其他成员的代码规范以及代码质量,并对其进行校正转载于:https://www.cnblogs.com/SirL/p/7502928.html...

torch.max的使用记录_captain飞虎大队的博客-程序员秘密

仅作为记录,大佬请跳过。m,n=torch.max(a, 1)中,m是每行的最大值,n是每行的最大值对应的索引值例子import torcha = torch.tensor([[1,5,62,54], [2,6,2,6], [2,65,2,6]])print(a)m,n=torch.max(a, 1)print(m,n)参考传送门...

easyUI之动态dataGrid(数据表格)_easyui动态表格_Jiang呀的博客-程序员秘密

前言之前我做了个选项卡组件,这会儿我想往里面增加点东西,就决定是你了数据表格!实现先看看效果图:步骤:导入依赖: <!-- 写全局样式 --> <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/static/js/jquery-easyui-1.5.1/themes/default/easyui.css"> <!-- 定义图标的样

代码精进篇之封装ElasticSearch通用Dao(去除掉方法间调用的Map传递)_RunningShare的博客-程序员秘密

背景近日,正在整合SpringBoot与ElasticSearch相关代码,由于对ES的学习时间有限,对其概念和API调用还不够了解,官网的API调用实例看着有许多重复类似的构造模式,于是打算先尝试地把一些已掌握的API接口封装成底层DAO,待后续有进一步的需求,再进一步完善。Map参数传递的需求在封装DAO过程中,很难免会遇到需要把一些通用参数组装一起,最后通过某个参数传入,进一步调...

AspNetCore 限流中间件IpRateLimitMiddleware 介绍_Joanna.Zhang的博客-程序员秘密

IpRateLimitMiddleware(Github: AspNetCoreRateLimit) 是ASPNETCore的一个限流的中间件,用于控制客户端调用API的频次, 如果客户端频繁访问服务器,可以限制它的频率,已降低访问服务器端的压力。或者如果有爬虫在爬取关键数据,也可以限制某个/某些API或者某些IP的每天调取次数, 这样限制他爬取的速度。当然, 其实我要解决的是另外一个问题。 我们写的WebApi有时候会存在一些API,我们只希望其它内部应用来调用,比如,WebApi的HealthChe

随便推点

庚顿风电场远程集中监控系统、 庚顿风电集控中心一体化应用系统解决方案_风电集控系统 code_庚顿数据的博客-程序员秘密

一、系统概述风能作为一种清洁的可再生能源,已经日益引起世界各国的重视,风力发电技术已基本趋于成熟。在大型的风电场中有几十台甚至上百台风电单元机组,其分布地域广、运行管理人员少、运行管理工作量大,如何对各风电单元机组进行高效地监控,实现无人值班少人值守的运营模式,同时保证整个风场安全、可靠、经济地运行变得至关重要。北京庚顿数据科技有限公司依托完全具有自主知识产权的实时数据库管理系统和可视化平台,结合多年电力系统项目实践经验自主研发的庚顿风电场远程集中监控系统(Golden WindSCADA)、庚顿风

ibm服务器如何进入u盘装系统,加密u盘在电脑上怎么打开ibm服务器u盘装系统_黑瞳之狼的博客-程序员秘密

2、调整后进行测试,看是否可以读盘HP LaserJet 2400 系列 开机后当出现内存检测时迅速按下√,直到3灯齐亮,松手,面板显示select language,选到cold reset,按√重新启动计算机后就正常了!这个文件搜索比较慢,如果不成功请使用第一种方法win7系统下载后怎么用u盘安装在我们使用电脑放歌的时候,用雨林木风重装系统,雨林木风系统之家,会发现音频服务不能正常使用,这应该...

[随笔所想] 沉痛悼念开发技术专家毛星云老师_落痕的寒假的博客-程序员秘密

知名程序员,毛星云(1991年-2021年12月11日),网络ID名为“浅墨”。2021年12月14日,腾讯确认天美F1工作室员工毛星云于12月11日上午意外身故。据网友爆料毛星云于深圳南山区的科兴科学园坠亡,而科兴科学园则是华为、腾讯、富士康等国内行业龙头的办公地。但是其具体坠亡原因有待官方公布,据传是抑郁。腾讯方面表示,“作为团队中不可或缺的一员,星云一直以来非常优秀,专业能力突出,过去数年连续获得高绩效,对于他的离去,我们十分惋惜与痛心!”毛星云个人履历如下:2009年,考入南京航空航天大

android 添加color,Android5.0 APP样式设置:colorAccent,colorPrimary,colorPrimaryDark……_Theellyence的博客-程序员秘密

伴随着Android5.0的发布也更新了support-v7-appcompat 到V21,其中增加了ToolBar、recyclerview、cardview等控件。Android5.0对改变APP样式下了不小的功夫,写法也和以前不一样了,下面先简单介绍一下colorAccent,colorPrimary,colorPrimaryDark……的作用:01、colorPrimary 应用的主要色调...

一文读懂进化树_yu_bioinfo的博客-程序员秘密

一、什么是进化树 系统发育进化树 (Phylogenetic tree): 一般也叫系统进化树,进化树。它可以利用树状分支图形来表示各物种或基因间的亲缘关系。 建进化树的过程,用术语讲: 分支系统发育分析 (Molecular phylogenetic analysis): 是...

各语言并发问题_generalAI的博客-程序员秘密

为什么需要并发?曾有一段黄金时间,每18个月时钟速度就会增加一倍。如果程序不够快,那程序员只要等一等,计算机就会追上来了。那个时代太美好,然而却一去不复返了。CPU设计者们通过向计算机增加更多核心的方式试图跟上摩尔定律。这就造成了一个问题,这个问题被淹没在营销的辞藻中,而大多数程序员都没领会它的含义。在新的世界中,我们的程序依然能够每18个月提高一倍速度,但前提就是有效通过并行程序使用...

推荐文章

热门文章

相关标签