SpringMVC第一讲:SpringMVC基础知识

news2024/11/18 1:26:25

一、MVC设计模式

MVC的全名是Model View Controller,是模型(Model)-视图(view)-控制器(controller)的缩写,是一种设计模式。它是用一种业务逻辑、数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件里面,在需要改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间,提高代码复用性。它将这些对象、显示、控制分离以提高软件的的灵活性和复用性,MVC结构可以使程序具有对象化的特征,也更容易维护。

在这里插入图片描述

MVC 的优点

MVC 模式具有以下优点:

  • 降低代码耦合性:在 MVC 模式中,三层之间相互独立,各司其职。一旦某一层的需求发生了变化,我们就只需要更改相应层中的代码即可,而不会对其他层中的代码造成影响。
  • 有利于分工合作:在 MVC 模式中,将应用系统划分成了三个不同的层次,可以更好地实现开发分工。例如,网页设计人员专注于视图(View)层的开发,而那些对业务熟悉的开发人员对 Model 层进行开发,其他对业务不熟悉的开发人员则可以对 Controller 层进行开发。
  • 有利于组件的重用:在 MVC 中,多个视图(View)可以共享同一个模型(Model),大大提高了系统中代码的可重用性。

MVC 的不足

MVC 模式存在以下不足之处:

  • 增加了系统结构和实现的复杂性:对于简单的应用,如果也严格遵循 MVC 模式,按照模型、视图与控制器对系统进行划分,无疑会增加系统结构的复杂性,并可能产生过多的更新操作,降低运行效率。

  • 视图与控制器间的联系过于紧密:虽然视图与控制器是相互分离的,但它们之间联系却是十分紧密的。视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了它们的独立重用。

  • 视图对模型数据的低效率访问:视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

二、SpringMVC

pring MVC(全称 Spring Web MVC)是 Spring 框架提供的一款基于 MVC 模式的轻量级 Web 开发框架,是 Spring 为表示层(UI)开发提供的一整套完备的解决方案。Spring MVC 使用 MVC 架构模式的思想,将 Web 应用进行职责拆分,把一个复杂的 Web 应用划分成模型(Model)、控制器(Contorller)以及视图(View)三层,有效地简化了 Web 应用的开发,降低了出错风险,同时也方便了开发人员之间的分工配合。

Spring MVC 本质是对 Servlet 的进一步封装,其最核心的组件是 DispatcherServlet,它是 Spring MVC 的前端控制器,主要负责对请求和响应的统一地处理和分发。Controller 接收到的请求其实就是 DispatcherServlet 根据一定的规则分发给它的。Spring MVC 框架内部采用松耦合、可插拔的组件结构,具有高度可配置性,比起其他的 MVC 框架更具有扩展性和灵活性。此外,Spring MVC 的注解驱动(annotation-driven)和对 REST 风格的支持,也是它最具有特色的功能。 Spring MVC 是 Spring 框架的众多子项目之一,自 Spring 框架诞生之日起就包含在 Spring 框架中了,它可以与 Spring 框架无缝集成,在性能方面具有先天的优越性。对于开发者来说,Spring MVC 的开发效率要明显高于其它的 Web 框架,因此 Spring MVC 在企业中得到了广泛的应用,成为目前业界最主流的 MVC 框架之一。

三、SpringMVC工作流程

在这里插入图片描述

Spring MVC 的常用组件共有 6 个,它们分别是: DispatcherServlet(前端控制器)、HandlerMapping(处理器映射器)、HandlerAdapter(处理器适配器)、Handler(处理器)、ViewResolver(视图解析器)和 View(视图)。

组件提供者说明
DispatcherServlet(前端控制器)由框架提供它是 Spring MVC 的核心,其本质就是一个 Servlet。 它负责将所有的请求进行统一分发,相当于一个 Spring MVC 的流程控制中心,控制整个流程的执行,对各个组件进行统一调度,以降低组件之间的耦合性,有利于组件之间的拓展。
HandlerMapping(处理器映射器)由框架提供负责根据请求的 url、method 等信息查找响应的 Handler 处理器(即 Controller 控制器方法)。
Handler处理器(controller)由开发人员提供也就是我们常说的 Controller 控制器,负责在 DispatcherServlet 的控制下,对具体的用户请求进行处理。
HandlerAdapter(处理器适配器)由框架提供它负责根据 HandlerMapping 映射器找到的处理器(Handler)信息,按照特定规则执行相关的处理器(Handler)方法。
ViewResolver(视图解析器)由框架提供通过 ModelAndView 对象中的 View 信息对逻辑视图名进行解析,将其解析成真正的视图 View(例如 ThymeleafView、InternalResourceView、RedirectView 等),并返回给 DispatcherServlet。
View(视图)View 对象本身由框架提供,但视图所对应的前端页面(例如 JSP、HTML)则需要开发人员自行编写将 Model 模型数据通过页面展示给用户。

以上组件中,需要开发人员进行开发的是处理器(Controller)和视图(View)也就是要开发处理的具体代码逻辑,以及最终展示给用户的界面。

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

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

相关文章

SIFT(尺度不变特征变换)

Sift(尺度不变特征变换),全称是Scale Invariant Feature Transform Sift提取图像的局部特征,在尺度空间寻找极值点,并提取出其位置、尺度、方向信息。 Sfit的应用范围包括物体辨别、机器人地图感知与导航、影像拼接、…

OpenCV 入门教程:膨胀和腐蚀操作

OpenCV 入门教程:膨胀和腐蚀操作 导语一、膨胀操作二、腐蚀操作三、示例应用3.1 图像增强3.2 边缘检测 总结 导语 膨胀和腐蚀是图像处理中常用的形态学操作,用于改变图像的形状和结构。在 OpenCV 中,膨胀和腐蚀是基于结构元素的像素操作&…

一零六三、进程调度算法模拟 (C语言实现)

目录 背景 程序实现 实现效果 背景 1、根据算法要求从键盘输入不少于四个进程信息(包括进程名称、进程到达时间、估计运行时间),RR算法输入不少于两种时间片的大小 2、输出进程的调度顺序、完成时间、周转时间、平均周转时间、平均带权周转…

Openlayers实战:点击某点,overlay显示经纬度坐标

在之前的实战中,我们在某个固定的位置显示鼠标位置的经纬度, 今天改变一种形式,即采用overlay的方式,点击某处,获得到经纬度坐标,显示在overlay层上面。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) * @此源代码版权归大剑师兰特…

23款迈巴赫S480升级原厂主动式氛围灯+电动后门+前后手势感应

23款迈巴赫S480升级原厂主动式氛围灯原厂电动后门原厂手势控制 新车刚提,原厂配置升级,全新配件 配件齐全,准备上车 全套主动式氛围灯配件 氛围灯模块 前排驾驶位顶棚的手势感应 手势感应电脑模块 后排顶棚的手势感应 电动后门配件有锁机、电…

基于simulink使用光流法跟踪汽车(附源码)

一、前言 此示例演示如何使用光流估计在视频序列中检测和跟踪汽车。 二、模型 下图显示了使用光流跟踪汽车模型: 三、用光流结果跟踪汽车 该模型使用光流估计技术来估计视频序列的每一帧中的运动矢量。通过阈值化运动矢量,该模型创建包含移动对象斑点…

mysql学习--使用navicat查看数据库密码

数据库通常分为两种:关系型数据库和非关系型数据库,关系型数据库通常会建立很多二维数据表,形成一对一、一对多、多对多等关系;之后利用SQL语句查询我们所需要的数据;非关系型数据库基于Key-Value的对应关系,并且查询的…

机器学习 day24(多类分类模型,Softmax回归算法及其损失函数)

多类分类 多类分类问题仍然是分类问题,所以预测y的可能结果是少量的,而不是无穷多个,且对于多类分类它>2 如上图:左侧为二分类,右侧为多分类,可以通过决策边界来划分区域 Softmax回归算法 …

记录--在高德地图实现卷帘效果

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 介绍 今天介绍一个非常简单的入门级小案例,就是地图的卷帘效果实现,各大地图引擎供应商都有相关示例,很奇怪高德居然没有,我看了下文档发现其实也是可以…

Fastpillars论文解读

本论文是美团在pointpillar算法的基础上的改进。 主要改进点分为一下两个: 1.引入注意力机制对pillar内的特征进行提取,改善直接maxpooling导致的细粒度信息丢失。 2.参考CSPNet和RepVGG构建了一个全新的轻量化backbone。 一、pillar注意力机制特征提…

怎么把MP4转换成GIF?分享几个方法轻松转换!

如何将mp4转换为gif?在分享视频剪辑素材到社交媒体时,许多人会选择将其转换为gif格式。这是因为GIF文件加载速度更快,文件大小更小。此外,将MP4转换为GIF也方便人们在电子邮件和聊天应用程序中发送动态图像。下面,我们…

【Linux】文件描述符 (上篇)

文章目录 📖 前言1. 文件的预备知识2. 复习C语言的文件操作3. Linux系统级文件接口3.1 open、 close、 read、 write 接口:3.2 内核当中实现的映射关系:3.3 如何理解Linux下一切皆文件: 📖 前言 本章开始,…

python绘制带有误差棒的条形图

文章目录 bar和barh加入误差棒定制误差棒颜色 bar和barh 在matplotlib中,通过bar和barh来绘制条形图,分别表示纵向和横向的条形图。二者的输入数据均主要为高度x和标签height,示例如下 import matplotlib.pyplot as plt import numpy as np…

MySQL CDC技术方案梳理

本篇主要探讨MySQL数据同步的各类常见技术方案及优劣势对比分析,从而更加深层次的理解方案,进而在后续的实际业务中,更好的选择方案。 1 CDC概念 CDC即Change Data Capture,变更数据捕获,即当数据发生变更时&#xff…

Ubuntu: scp命令使用及Permission denied错误解决方案

scp命令介绍 scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, scp 是 Ubuntu 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp local_file remote_usernameremote_ip:remote_folder scp /Users/X.pem root192.168.1.247:/usr/local/ssl Permission…

java项目之高校校园点餐系统(ssm+mysql+jsp)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的闲一品交易平台。技术交流和部署相关看文末! 开发环境: 后端: 开发语言:Java 框架&#…

傻瓜式一键生成主子表

文章目录 傻瓜式一键生成主子表 简介创建主子表示例 根据已有主表创建子表示例 创建空属性主子表示例 总结 傻瓜式一键生成主子表 直接将xml导入到Studio里即可。下载文件连接: CSDN链接阿里云盘 简介 很多同学在创建主子表时,都会可能遇到如下一些问…

日本留学托福要求多少分才及格呢?

日本有悠久的历史和文化,吸引了越来越多的留学生前往探索和学习。那么,日本留学托福要求多少分才及格呢? 日本留学托福成绩要求 综合类:通常要求申请者取得托福总分在80以上,各项分数要求分别为口语20以上&#xff0c…

LinuxI2C应用编程——I2C-Tools的使用

文章目录 I2C 硬件框架I2C 软件框架I2C协议(传输数据的格式)写操作读操作I2C 信号 SMBus 协议概述硬件和软件上的区别SMBus 协议分析符号的含义SMBus Quick CommandSMBus Receive ByteSMBus Send ByteSMBus Read ByteSMBus Read WordSMBus Write ByteSMB…

11_Linux阻塞与非阻塞

目录 阻塞和非阻塞IO简介 等待队列 等待队列头 等待队列项 轮询 Linux驱动下的poll操作函数 阻塞式访问IO实验 阻塞式访问IO驱动程序编写 运行测试 非阻塞式IO实验 运行测试 阻塞和非阻塞IO简介 阻塞和非阻塞IO是Linux驱动开发里面很常见的两种设备访问模式,在编写…