• 什么是SpringMVC?简单好理解!


    🧸欢迎来到dream_ready的博客,📜相信您对这篇博客也感兴趣o (ˉ▽ˉ;)

    📜表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学

    📜用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程

    目录

    1、SpringMVC是什么?

    2、SpringMVC图解各部分详情

    3、SpringMVC概念最新版(前后端不分离)

    4、应用分层概念

    什么是应用分层呢?(概念)

    为什么需要应用分层?(了解即可)

    5、如何分层(三层架构)  (具体实现)—— 重要!

    6、MVC与三层架构的区别和联系


    1、SpringMVC是什么?

    SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分。简化开发,减少出错,方便组内开发人员之间的配合。

     以上是它的较为官方的概念,下面我将用大白话来诠释什么是SpringMVC

    MVC就是把一个项目分成了三部分,如图:(下面目录2有详细解释)

    MVC是一种思想,Spring进行了实现,称为SpringMVC(下面目录2有详细解释)

    下面这张图片用于浏览器url直接发送请求时:(下面这张图不重要,主要记住上面的图)

    SpringMVC当初在前后端不分离(比如JSP)的项目中大展拳脚

    近些年来,由前后端分离等原因,SpringMVC的概念又发生了一些变化(下面目录3有详细解释)

    2、SpringMVC图解各部分详情

    MVC是思想,就是把一个项目分成了三部分

    SpringMVC进行了实现,称为SpringMVC

    • Model模型层用来处理业务逻辑,处理数据,内部放置的是项目的逻辑以及方法的实现相关代码
    • Controller控制器层选择处理模型,选择视图,实现前后端交互是View层和Model层交流的桥梁
    • View层面向用户,用于界面显示,人机交互

    用户的请求在View层接收后,发送到Controller层,Controller层交给对应的,能处理用户请求的Model层

    • View层相当于用户,Controller相当于前台,Model相当于各个部门
    • 用户带着要求来到前台(View),前台(Controller)听完用户要求后,将其交给对应的销售部、广告部等部门(Model)

    下面这张图只是用户的请求直接发给了Controller控制器层,没有经过View层

    比如浏览器url路径直接发送请求或者PostMan等工具发送请求时就更适用于下面这张图

    3、SpringMVC概念最新版(前后端不分离)

    当前阶段,MVC的概念又发生了一些变化,后端开发人员不涉及前端页面的开发,所以也就没有View层

    所以View层又有了一层解释,之前返回的是视图,现在返回的是视图所需要的数据

    例如:

    4、应用分层概念

    前言:

            类似公司的组织架构
            公司初创阶段,⼀个⼈⾝兼数职,既做财务,⼜做⼈事,还有⾏政.
            随着公司的逐渐壮⼤,会把岗位进⾏细分,划分为财务部⻔,⼈事部⻔,⾏政部⻔等,各个部⻔内部还会再进⾏细分.

            项⽬开发也是类似,最开始功能简单时,我们前后端放在⼀起开发,随着项⽬功能的复杂,我们分为前端和后端不同的团队,甚⾄更细粒度的团队。

            后端开发也会根据功能再进⾏细分.MVC就是其中的⼀种拆分⽅式.
            但是随着后端⼈员不再涉及前端,后端开发⼜有了新的分层⽅式.

    什么是应用分层呢?(概念)

            应用分层是一种软件开发设计思想,它将应用程序分成N个层次,这N个层次分别负责各自的职责,多个层次之间协同提供完整的功能,根据项目的复杂度,把项目分成三层,四层甚至更多层

            常见的MVC设计模式,就是应用分层的一种具体体现

    为什么需要应用分层?(了解即可)

             在最开始的时候,为了让项目快速上线,我们通常是不考虑分层的,但是随着业务越来越复杂,大量的代码混在一起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等问题,所以学习对项目进行分层就是我们程序员的必修课了

    5、如何分层(三层架构)  (具体实现)—— 重要!

            MVC就是一种标准的软件分层架构,但目前更主流的开发方式是“前后端分离”的方式,后端开发工程师不再需要关注前端的实现,所以对于Java后端开发者,又有了一种新的分层架构:把整体架构分为表现层(Controller)、业务逻辑层(Service)和数据层(Dao),这种分层方式也称之为“三层架构”

    • 表现层:就是展示数据结果和接受用户指令的,是最靠近用户的一层
    • 业务逻辑层:负责处理业务逻辑,里面有复杂业务的具体实现
    • 数据层:负责存储和管理与应用程序相关的数据

     这三个部分在Spring中的体现:

    • Controller:控制层。接收前端发送的请求,对请求进行处理,并响应数据
    • Service:业务逻辑层。处理具体的业务逻辑
    • Dao:数据访问层,也称为持久层。负责数据访问操作,包括数据的增、删、改、查

     

    下面展示一张没有经过三层架构分层的代码:

    解释代码意思(仅解释代码在干什么,分层解释在图下面,不在此处):

            此段代码用来查询书籍信息mockData是构建假数据,用来测试用

            如果书籍信息中的状态为1,则设置可借阅出去,不为1,则设置不可借阅出去

            最后将所有数据(books)返回

    按照上面的层次划分,SpringMVC站在后端开发人员的角度上,也进行了支持,把上面的的代码划分为三个部分:

    • 请求处理、响应数据:负责、接收页面的请求,给页面响应数据
    • 逻辑处理:负责业务逻辑处理的代码
    • 数据访问:负责业务数据的维护操作,包括增、删、改、查

    这三个部分在Spring的实现中均有体现,也就是刚才的Controller、Service、Dao

    针对上述的分层思想,进行代码重构:

    注:此处为了方便演示代码,左侧结构中没有进行前后端的完全分离,实际需要完全分离

    Controller:

    Service:

    Dao:

    可以明显看到,分层后,每个模块间的关系更加明确了然等好处

    6、MVC与三层架构的区别和联系

            关于二者的关系,一直存在不同的观点,有人认为三层架构是MVC模式的一种实现,也有人认为MVC是三层架构的替代方案,等等各种说法都有,根本原因是大家站在不同的角度看待这个问题的,下面是我查询各种资料后总结出来的较为靠谱的观点

    从概念上讲,二者都是软件工程领域中的架构模式

    • MVC模式架构由三部分组成,分别是:模型(Model),视图(View)和控制器(Controller)
    • 三层架构将业务应用划分为:表现层(Controller),业务逻辑层(Service),数据访问层(Dao)

    MVC中,视图和控制器合起来对应三层架构中的表现层,模型对应三层架构中的业务逻辑层,数据层,以及实体类

    二者其实是从不同角度对软件工程进行了抽象

    • MVC模式强调数据和视图分离,将数据展示和数据分离分开,通过控制器对两者进行结合
    • 三层架构强调不同维度数据处理的高内聚和低耦合,将交互界面,业务处理和数据库操作的逻辑分开。

    角度不同也就谈不上互相替代了,在日常的开发中可以经常看到两种共存的情况,比如我们设计模型层的时候往往也会拆分出业务逻辑层(Service层)和数据访问层(Dao层)

    但是二者的目的是相同的,都是“解耦,分层,代码复用”

    🧸欢迎您于百忙之中阅读这篇博客,📜希望这篇博客给您带来了一些帮助,祝您生活愉快!

  • 相关阅读:
    3D可视化有哪些应用场景?
    【MindInsight】【Summary】报错“Hyper config is not in system envi
    cms之帝国cms安装
    移动通信安全技术发展综述
    Java虚拟机(JVM)面试专题(初级程序员P6)
    2.3 LINQ
    互联网Java工程师面试题·Spring篇·第四弹
    【视觉SLAM入门】7.3.后端优化 基于KF/EKF和基于BA图优化的后端,推导及举例分析
    解决java.lang.IllegalArgumentException: servlet映射中的<url pattern>[demo1]无效
    java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展
  • 原文地址:https://blog.csdn.net/dream_ready/article/details/133965996