MVC模式和三层架构

一.概述

  • M:Model,业务模型,处理业务
  • V:View,视图,界面展示
  • C:Controller,控制器,处理请求,调用模型和视图
  • M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
  • V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。
  • C即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。

最典型的MVC就是JSP + servlet + javabean的模式,如下:

 

        使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。MVC的好处在于职责单一,互不影响,有利于分工协作,有利于组件重用~ 

二.三层架构

        三层架构区分层次的目的是为了 “高内聚,低耦合”。开发人员分工更明确,将精力更专注于应用系统核心业务逻辑的分析、设计和开发,加快项目的进度,提高了开发效率,有利于项目的更新和维护工作。

  •  数据访问层:对数据库进行的CRUD的基本操作
  • 业务逻辑层:对业务逻辑进行封装,组合数据访问层中的基本功能,形成复杂的业务逻辑功能
  • 表现层:接收请求,封装数据,调用业务逻辑层,响应数据

在Idea项目中,一般约定俗成的起名:

  • 表现层:Controller(对应3层架构的Controller+View~)
  • 业务逻辑层:Service
  • 数据访问层:mapper或者dao

 

三层架构的存在提高了代码的复用性~ 

三.Dao层

        如果使用到了Mybatis框架,也可以取名为mapper层。DAO(Data Access Object) 模型就是写一个类,把访问数据库的代码封装起来,DAO在数据库与业务逻辑(Service)之间。Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求。

四.Service层

        业务处理层,它处理逻辑上的业务,而不去考虑具体的实现。要提供不同的数据库的服务时,我们只需要面对接口用不同的类实现即可,而不用重复地定义类。

五.Utils层

工具类层,通用的、与业务无关的,可以独立出来,可供其他项目使用~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙OS开发实例:【ArkTS类库异步并发简述Promise】

Promise和async/await提供异步并发能力,是标准的JS异步语法。异步代码会被挂起并在之后继续执行,同一时间只有一段代码执行,适用于单次I/O任务的场景开发,例如一次网络请求、一次文件读写等操作。异步语法是一种编程语言的特性&am…

云原生:为企业带来的7大价值

在数字化浪潮席卷全球的今天,企业正面临着前所未有的机遇与挑战。云原生技术,以其独特的优势,正逐渐成为企业实现数字化转型的重要"工具"。今天我们就来聊聊,云原生为企业带来的价值。 🔥提升敏捷性 云原生架…

怎么对电脑屏幕进行远程控制

远程控制是指管理人员在异地通过计算机网络异地拨号或双方都接入Internet等手段,连通需被控制的计算机,将被控计算机的桌面环境显示到自己的计算机上,通过本地计算机对远方计算机进行配置、软件安装程序、修改等工作。 远程控制并不仅仅局限…

Linux和Windows安装PHP依赖管理工具Composer

Composer 是 PHP 的一个依赖管理工具。它允许申明项目所依赖的代码库,会在项目中安装它们。 Composer 不是一个包管理器。是的,它涉及 "packages" 和 "libraries",但它在每个项目的基础上进行管理,在你项目的…

一维卷积神经网络的特征可视化

随着以深度学习为代表的人工智能技术的不断发展,许多具有重要意义的深度学习模型和算法被开发出来,应用于计算机视觉、自然语言处理、语音处理、生物医疗、金融应用等众多行业领域。深度学习先进的数据挖掘、训练和分析能力来源于深度神经网络的海量模型…

基于ssm的三省学堂-学习辅助系统(java项目+文档+源码)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的三省学堂-学习辅助系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 三省学堂-学习辅助系统的…

公司只有一个测试,要怎么继续呆下去?

在面试的时候,面试官可能会问:小公司、小团队,岗位就你一个人,怎么做 ? 或者已经有的小伙伴已经在公司中面临只有一个测试的处境,这个时候我们应该怎么处理呢? 一 原因分析 公司只有一个测试人…

Golang 哈希表底层实现原理

1、本文讨论Golang的哈希表 Golang哈希表的实现,底层数据结构是数组单链表,链表节点由8个key、value和键的高八位组成的。为了方便理解,先简单看一个图快速理解。 我们来看一下Golang哈希表的结构体定义 简单介绍一下结构体中几个关键的…

基于SpringBoot+Vue在线考试系统设计与实现+搭建视频

介绍 该在线考试系统共包含三种角色,分别是:学生、老师和管理员,不同角色对系统的功能需求也不同。 具体功能如下: 1)学生 考生注册、考生登录、在线考试、我的成绩、我的题库、修改个人资料等功能。 2&#xff0…

网络攻防中之url跳转过程分析和使用欺骗方法生成自己的恶意链接过程,以及点击劫持和绕过验证的几种方式

网络攻防中之url跳转过程分析和使用欺骗方法生成自己的恶意链接过程,以及点击劫持和绕过验证的几种方式。 URL跳转过程分析 URL跳转是Web应用中常见的一种行为,它通常通过HTTP重定向来实现。在网络攻防中,分析URL跳转过程对于理解应用的行为和识别潜在的安全漏洞至关重要。 …

吴恩达2022机器学习专项课程(一) 4.6 运行梯度下降第一周课程实验:线性回归的梯度下降算法

问题预览/关键词 更新梯度下降对模型拟合,等高线图,3d空间图的变化。什么是批量梯度下降。实验目标计算梯度运行梯度下降梯度下降迭代次数和成本函数的关系可视化模型预测在等高线图上的梯度下降学习率过大报错问题 笔记 1.模型拟合,等高线…

怎么修改图片的创建日期和修改日期?

怎么修改图片的创建日期和修改日期?大家都应该知道,电脑上的任何一种文件都有创建日期和修改日期,不管word、excel、ppt还是图片,这两个时间属性是都必须具备的。在数字时代,我们经常使用照片来记录珍贵的时刻和重要的…

VISA、masterCard卡进行USDT消费,无需实名,0年费,0月费

开卡流程 1、点击获取卡 2、注册之后点击“流量钱包->点击点此充值” 3、选择积分充值点击确认即可 在返回到首页点击申请卡,选择534786与556150都可以,选择钱包支付即可 点击获取卡片

【Java代码审计】SpEL表达式注入篇

【Java代码审计】SpEL表达式注入篇 1.SpEL 介绍2.SpEL漏洞概述3.SpEL漏洞演示4.SpEL漏洞修复 1.SpEL 介绍 Spring 表达式语言是一种功能强大的表达式语言,用于在运行时查询和操作对象视图,语法上类似于 Unified EL,但提供了更多的特性&#…

Flutter应用在苹果商店上架前的准备工作与注意事项

引言 🚀 Flutter作为一种跨平台的移动应用程序开发框架,为开发者提供了便利,使他们能够通过单一的代码库构建出高性能、高保真度的应用程序,同时支持Android和iOS两个平台。然而,完成Flutter应用程序的开发只是第一步…

【Servlet】继承关系以及service方法

文章目录 一、继承关系二、相关方法 一、继承关系 Servlet接口下有一个GenericServlet抽象类。在GenericServlet下有一个子类HttpServlet,它是基于http协议。 继承关系 javax.servlet.Servlet接口​ javax.GenericServlet抽象类​ javax.servlet.http.HttpServ…

毕马威:《智慧之眼:开启汽车感知新时代》

在全球科技飞速发展和产业革新的大潮中,汽车产业正在以前所未有的速度向网联化、智能化的方向转型。汽车传感器作为智能联网汽车发展的关键环节之一,扮演着举足轻重的角色。 毕马威一直关注汽车产业的变化与发展,为了更好地为汽车行业赋能&a…

python 哔哩哔哩视频去水印

使用python 去除视频中的水印 1. 需要安装的包 pip install moviepy pip install numpy pip install opencv_python pip install tqdm 2. 代码 import cv2 import numpy as np import glob from moviepy.editor import VideoFileClip import os from tqdm import tqdm# 判…

第九届全国大学生GIS应用技能大赛试题答案及数据下载(下午)

一、案例背景 我们现在是江苏省城市研究科研项目组的一员,我们分配到了以下任务: **任务一:**创建三甲医院 20 分钟、45 分钟服务区,并计算每一个地级市/县级市拥有的三甲医院 20 钟、45 分钟服务区占全市面积百分比。 **任务二&a…

ERROR: No matching distribution found for sklearn.cross_validation

问题 ERROR: Could not find a version that satisfies the requirement sklearn.cross_validation (from versions: none) ERROR: No matching distribution found for sklearn.cross_validation 错误:找不到满足sklearn要求的版本。Cross_validation (from versions: none)…