SpringMVC框架

news2024/11/28 11:53:53

一、什么是 SpringMVC ?

SpringMVC框架是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Servlet接口。

在介绍什么是 SpringMVC 之前,我们先看看 Spring 的基本架构。如下图:

  我们可以看到,在 Spring 的基本架构中,红色圈起来的 Spring Web MVC ,也就是本系列的主角 SpringMVC,它是属于Spring基本架构里面的一个组成部分,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面,所以我们在后期和 Spring 进行整合的时候,几乎不需要别的什么配置。

SpringMVC 是类似于 Struts2 的一个 MVC 框架,在实际开发中,接收浏览器的请求响应,对数据进行处理,然后返回页面进行显示,但是上手难度却比 Struts2 简单。而且由于 Struts2 所暴露出来的安全问题,SpringMVC 已经成为了大多数企业优先选择的框架。

二、SpringMVC流程图详解        

要把SpringMVC流程图搞明白,首先需要先搞明白6个组件       

  1.DisPatcherServlet 前端控制器

核心。用户在浏览器输入url,发起请求,首先会到达DisPatcherServlet,由它来调用其他组件来配合工作的完成,DisPatcherServlet的存在大大降低了组件之间的耦合性

        2.HandlerMapping 处理器映射器

记录url与处理器的映射,方式有注解、XML配置等

        3.HandLer 处理器

后端控制器(通俗一点:Controller层所写的业务代码)。对用户的请求进行处理

       4.HandlerAdapter 处理器适配器

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

       5.ViewResolver 视图解析器

ViewResolver负责解析view视图,并进行渲染(数据填充),将处理结果通过页面展示给用户看

       6.View 视图

View是一个接口,实现类支持不同的View类型(jsp、freemarker、velocity)

一般情况下需要通过页面标签或者页面模板技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

【流程图说明】

1.用户发送请求至 前端控制器DispatcherServlet。

2.前端控制器DispatcherServlet收到请求后调用处理器映射器HandlerMapping。

3.处理器映射器HandlerMapping根据请求的Url找到具体的处理器,生成处理器对象Handler及处理器拦截器HandlerIntercepter(如果有则生成)一并返回给前端控制器DispatcherServlet。

4.前端控制器DispatcherServlet通过处理器适配器HandlerAdapter调用处理器Controller。

5.执行处理器(Controller,也叫后端控制器)

6.处理器Controller执行完后返回ModelAnView。

7.处理器映射器HandlerAdapter将处理器Controller执行返回的结果ModelAndView返回给前端控制器DispatcherServlet。

8.前端控制器DispatcherServlet将ModelAnView传给视图解析器ViewResolver。

9.视图解析器ViewResolver解析后返回具体的视图View。

10.前端控制器DispatcherServlet对视图View进行渲染视图(即:将模型数据填充至视图中)

11.前端控制器DispatcherServlet响应用户。

三.SpringMVC 工作原理?

a、客户端发送请求到 DispatcherServlet

b、DispatcherServlet 查询 handlerMapping 找到处理请求的 Controller

c、Controller 调用业务逻辑后,返回 ModelAndView

d、DispatcherServlet 查询 ModelAndView,找到指定视图

e、视图将结果返回到客户端

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142796.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

不会指针?还不进来看看——进阶指针详解

专栏:C语言 每日一句:人贵有自知之明,知道什么可为和不可为。若不可为,怎样做才能可为,那何时可为。 进阶指针前言一、字符指针二、指针数组1.指针数组的介绍2.指针数组的使用三、数组指针1.数组指针的介绍2.&数组…

历史大讲堂:真那么好用?Windows前世今生

hello大家好,这里是每天日更哒博主。 还记得我第一次说的Microsoft Dos吗?那期我提到一次Windows并许诺要讲讲,这不来了!今天我们就详细的盘一盘最好用的系统Windows真有那么神吗? 注意!以下内容包含非常…

人脸识别美颜算法实战-深度学习基础知识

深度学习与机器学习的区别: 机器学习:人类定义输入数据的特征 深度学习:机器自动找到输入数据的特征 在深度学习中,采用多层的神经网络架构来提取图像 信息,越靠近底层的神经网络提取出来的都是点、线等低维度特征, 而高维度的神经网络层则会更多地保留比如耳朵、眼睛…

MySQL事务基础知识

前言 学习/导流: 小林coding - 事务篇 学习意义 理解MySQL如何去处理并发问题,借鉴其思想存储作为应用的关键能力,而事务作为关系型数据库的关键概念,掌握很必要,也为分布式事务学习做奠基 相关说明 该篇博文是个…

快速搭建springboot程序

SpringBoot快速入门 观狂神讲解视频笔记 【狂神说Java】SpringBoot最新教程IDEA版通俗易懂 第一个springboot程序 使用 idea 可以快速构建一个 springboot 的项目: 1.创建新项目,选择 spring initializr(会默认通过官网快速构建&#xff09…

【编程经验】如何学习编程语言的秘诀,编程语言选择,按需学习

大家好,欢迎来到停止重构的频道。最近有些朋友问我们如何学习编程、初学软件的问题,我们打算出几期内容聊聊我们的建议。本期聊一下如何学习编程语言。我们将压箱底的诀窍介绍给新手朋友,当然这仅仅是我们的一些经验,并不是绝对的…

连续四年第一!

近日,IDC发布《2022 H1中国AI云服务市场研究报告》,百度智能云连续四年市场份额第一,整体占比28.1%,在"人体人脸"、"图像视频"‍两个规模最大的子市场继续保持第一。‍‍ 在图像视频等多个领域蝉联市场第一 …

PLC算法系列之数值积分器(Integrator)

数值积分和微分在工程上的重要意义不用多说,闭环控制的PID控制器就是积分和微分信号的应用。流量累加也会用到。有关积分运算在流量累加上的应用,请参看下面的文章链接: SMART S7-200PLC流量累计算法实现(梯形图算法详解+优化)_RXXW_Dor的博客-CSDN博客_smart 200 流量积分…

【bootstrap】使用,初学者的总结

官网&#xff1a;bootstrap中文网 首页点击v3文档&#xff0c;然后下载最左边的那个。 解压后把里面的css和js文件复制过去&#xff0c;因为也要用到jQuery&#xff0c;所以要把jQuery.min.js也一起放入js文件夹。 然后&#xff0c;就是导入&#xff1a; <link rel"s…

Java互联网支付系统源码,基于SpringBoot,含支付宝,微信,银联详细代码案例

spring-boot-pay 支付服务&#xff1a;支付宝&#xff0c;微信&#xff0c;银联详细 代码案例 (支付宝和微信支付测试均需要企业认证&#xff0c;如果没有企业推荐使用 [服务商模式] 申请开通个人商户 也可以测试 )&#xff0c;项目启动前请仔细阅读 注意事项 :fa-hand-o-left…

快速上手 BearPi-HM Micro 一个带显示屏的开发板

一、前言 为什么要写这篇文章呢? 华为官方给OpenHarmony分:南向开发 和 北向开发 北向开发:应用APP开发 南向开发:设备开发 带显示屏的设备,可以更好的使用可视化界面,能更直接的利用烧录到设备里面的代码。 例如:冰箱上面的小的显示屏,可以更好的操控和观察当前冰箱…

一个 web 开发者眼中的技术美术(TA—Technical Artist)

Techical Artist 的中文翻译是技术美术&#xff0c;相比于直译为技术艺术家&#xff0c;技术美术这个称谓让我感觉更加亲切&#xff0c;当然艺术家这个称谓也很好&#xff0c;很高级 :p 。在游戏行业里我们常常能听到美术这个职业&#xff0c;而技术美术&#xff0c;从字面意思…

微信公众号活动策划方案怎么写?看完你也可以直接套用

一场成功的活动策划可以给企业带来相当可观的用户流量和曝光&#xff0c;前提是你的这份公众号活动策划方案是可执行和有回报的&#xff01; 毫不夸张的说&#xff0c;我们在写公众号活动策划方案之前&#xff0c;只要你搞清楚以下这几点&#xff0c;这个方案就可以说是成功了…

介绍一个MySQL参数检索工具

碰巧看到徐老师的这篇文章《MySQL的参数工具》&#xff0c;其中介绍了一个讲解MySQL不同版本参数的小工具&#xff0c;网站的作者是MySQL日本用户组的负责人Tomita。该网站能够提供不同版本MySQL的参数&#xff0c;包括不同版本之间的对比。当用户需要对MySQL进行升级、需要确认…

用javascript分类刷leetcode13.单调栈(图文视频讲解)

84. 柱状图中最大的矩形 (hard) 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 示例 1: 输入&#xff1a;heights [2,1,5,6,2,3] 输出&#xff1a;10 …

2022年总结与2023年展望

又是疫情的一年&#xff0c;所幸年尾的政策看来是要全面开放了&#xff0c;也算是一件好事了。但是明年会不会就要强制线下上课导致实习不方便&#xff0c;这也是个问题。 技术学习 确定了自己的方向是走C/CLinux后端开发方向&#xff0c;跟着课程学到了一个图床后端的项目&a…

前端页面插件集成-Markdown编辑器

页面插件集成-Markdown下载MarkDown的插件包引入css、js、Jquary文件定义一个textarea区域作为MarkDown的载体初始化Markdown编辑器最终效果下载MarkDown的插件包 下载地址如下&#xff1a; 下载传送门 点击Github下载&#xff0c;然后解压 解压之后将如下文件夹和 js 文件cop…

贷后联动管控指标与差异化案件的分配逻辑

在风控精细化运营的当下&#xff0c;贷后工作的开展&#xff0c;越来越需要精细化管理。如何做好相关的精细化管理工作&#xff0c;首先我们从这些贷后相关的名词如下开始熟悉&#xff1a; 贷后基本催收名词解释 Flow Rate 迁移率就是在贷后资产评估里最重要的报表了&#xf…

【C语言进阶】还说不会?一文带你全面掌握计算机预处理操作

目录 &#x1f34a;前言&#x1f34a;&#xff1a; &#x1f348;一、宏与函数&#x1f348;&#xff1a; 1.宏与函数对比&#xff1a; 2.宏与函数的命名约定&#xff1a; &#x1f353;二、预处理操作符&#x1f353;&#xff1a; 1.预处理操作符 " # "&#xff…

C语言学生成绩管理系统

程序示例精选 C语言学生成绩管理系统 如需安装运行环境或远程调试&#xff0c;见文章底部微信名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<C语言学生成绩管理系统>>编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 …