什么是MVC三层结构

1.MVC(三层结构)

在这里插入图片描述

MVC(Model-View-Controller)是一种常见的软件设计模式,用于将应用程序的逻辑和界面分离成三个不同的组件。每个组件负责特定的任务,从而提高代码的可维护性和可扩展性。
以前的模式。

遇到复杂的业务没有什么是加一层解决不了的

在这里插入图片描述
现在的结构
在这里插入图片描述

servlet--CRUD-->数据库
弊端:程序十分臃肿,不利于维护  
servlet的代码中:处理请求、响应、视图跳转、处理JDBC、处理业务代码、处理逻辑代码

架构:没有什么是加一层解决不了的!
程序猿调用
|
JDBC
|
Mysql Oracle SqlServer ....

1.1. 模型(Model)

  • 模型是应用程序的核心部分,负责处理业务逻辑、数据操作和状态管理。
  • 模型层包含了应用程序的数据模型和相关的业务逻辑,它独立于用户界面和用户输入。
  • 模型可以是一个对象、一个集合、数据库访问对象等,它们封装了数据和与数据相关的操作。

业务处理:业务逻辑(Service)
数据持久层:CRUD

1.2. 视图(View)

  • 视图层负责展示数据给用户,并接收用户的输入。
  • 视图通常是用户界面的一部分,可以是一个网页、一个图表、一个报表等。
  • 视图从模型中获取数据并将其呈现给用户,同时也将用户的输入传递给控制器。

展示数据
提供链接发起 Servlet 请求(a,form,img…)

1.3. 控制器(Controller)

  • 控制器充当模型和视图之间的中介,负责协调它们之间的交互。
  • 控制器接收用户的输入并根据输入调用适当的模型方法进行处理。
  • 控制器还负责更新视图的状态,并将最终的结果返回给用户。

接收用户的请求:(req:请求参数、Session 信息…)

交给业务层处理对应的代码

控制试图的跳转

MVC 的工作流程如下:

登录—>接收用户的登录请求—>处理用户的请求(获取用户登录的参数,username,password)---->交给业务层处理登录业务(判断用户名密码是否正确:事务)—>Dao层查询用户名和密码是否正确–>数据库

  1. 用户与视图进行交互,触发了某个事件(比如点击按钮)。
  2. 视图将事件传递给控制器。
  3. 控制器接收到事件并根据事件的类型选择合适的模型方法进行处理。
  4. 模型完成业务逻辑的处理,并返回处理结果给控制器。
  5. 控制器更新视图的状态和显示结果给用户。

通过使用 MVC 三层结构,开发人员可以将应用程序的不同部分分离开来,使得代码更加清晰、可维护性更高。模型、视图和控制器各自独立,可以单独进行测试和修改,而不会对其他组件产生影响。这种分层结构也促进了团队协作,不同开发人员可以并行开发不同的组件。

2.1MVC特点

Spring MVC 是 Spring Framework 中的一个模块,用于构建基于 Java 的 Web 应用程序。它提供了一种灵活且强大的方式来开发 Web 应用程序,实现 MVC(Model-View-Controller)架构。

以下是关于 Spring MVC 的一些关键特点和优势:

2.1. MVC 架构

  • Spring MVC 遵循经典的 MVC 模式,将应用程序分为模型(Model)、视图(View)和控制器(Controller)三层。
  • 模型负责处理业务逻辑和数据操作,视图负责展示用户界面,控制器负责接收请求、处理业务逻辑和返回响应。

2.2. 灵活性

  • Spring MVC 提供了灵活的配置选项,可以通过 XML 配置文件、注解或 Java 代码进行配置。
  • 开发人员可以根据需要定制请求映射、视图解析、拦截器等功能,实现高度定制化的 Web 应用程序。

2.3. 强大的处理器映射

  • Spring MVC 支持多种类型的请求映射,包括基于 URL 模式、HTTP 方法、参数等的映射方式。
  • 可以轻松地定义请求到处理器方法的映射关系,实现灵活的请求处理逻辑。

2.4. 拦截器

  • Spring MVC 提供了拦截器(Interceptor)机制,可以在请求处理的各个阶段进行拦截和处理,实现统一的处理逻辑。
  • 拦截器可以用于权限验证、日志记录、异常处理等方面,提高代码复用性和可维护性。

2.5. 视图解析

  • Spring MVC 支持多种视图解析器,可以将模型数据渲染到不同类型的视图中,如 JSP、Thymeleaf、Freemarker 等。
  • 开发人员可以根据需求选择合适的视图解析器,灵活地定制视图呈现方式。

Spring MVC 是一个功能强大且灵活的 Web 框架,可以帮助开发人员快速构建可扩展、易维护的 Web 应用程序。它与其他 Spring 模块(如 Spring Core、Spring Data 等)结合使用,形成了完整的企业级应用程序开发解决方案。

3示例

以下是一个简单的使用 MVC 结构的 Java Web 应用程序示例,使用 Spring MVC 框架:

  1. 创建模型(Model)
public class User {
    private String username;
    private String email;

    // 省略 getter 和 setter 方法
}
  1. 创建视图(View)
    在 Web 应用程序中,视图通常是一个 JSP 页面,用于展示数据给用户。例如,创建一个名为 “userInfo.jsp” 的 JSP 页面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>User Information</title>
</head>
<body>
    <h1>User Information</h1>
    <p>Username: ${user.username}</p>
    <p>Email: ${user.email}</p>
</body>
</html>
  1. 创建控制器(Controller)
@Controller
public class UserController {

    @RequestMapping("/user")
    public String getUser(Model model) {
        User user = new User();
        user.setUsername("john_doe");
        user.setEmail("john.doe@example.com");

        model.addAttribute("user", user);

        return "userInfo";
    }
}
  1. 配置 Spring MVC
    在 Spring 配置文件中配置 Spring MVC,例如使用 JavaConfig 方式:
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example.controllers")
public class WebConfig implements WebMvcConfigurer {
    
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
}
  1. 部署应用程序
    将应用程序打包成 WAR 文件并部署到 Web 服务器中。
    用Tomcat

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

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

相关文章

数据集下载

一、数据集下载——谷歌Open images 谷歌Open-image-v6是由谷歌出资标注的一个超大型数据集&#xff0c;数据大小达到600多G&#xff0c;类别达到600多种分类&#xff0c;对于普通研究者而言&#xff0c;根本没办法全部下载下来做测试&#xff0c;也没必要。只需要下载与自己任…

苹果Vision Pro即将在中日韩等九国开卖 | 百能云芯

苹果公司近期透露&#xff0c;首款混合实境&#xff08;MR&#xff09;头盔「Vision Pro」即将在今年晚些时候推向更多国家销售。虽然苹果尚未公布具体的销售细节&#xff0c;但根据最新的外媒报道&#xff0c;这款高科技产品可能即将在中国、日本、韩国等九个国家开卖&#xf…

三翼鸟门店转型升级:首批260家线下店入驻天猫喵店

作者 | 曾响铃 文 | 响铃说 “资深玩家教你如何做全屋智能家居”、“一条视频给你讲清楚智能家居的设计思路”……在各大网站上搜索“智能家居”&#xff0c;就会出现类似的标题。区别于传统家居博主&#xff0c;他们主要通过分享智能家居体验&#xff0c;讲解智能家居设计等…

Hadoop大数据应用:Linux 部署 HDFS 分布式集群

目录 一、实验 1.环境 2.Linux 部署 HDFS 分布式集群 3.Linux 使用 HDFS 文件系统 二、问题 1.ssh-copy-id 报错 2. 如何禁用ssh key 检测 3.HDFS有哪些配置文件 4.hadoop查看版本报错 5.启动集群报错 6.hadoop 的启动和停止命令 7.上传文件报错 8.HDFS 使用命令 一…

【JetsonNano】onnxruntime-gpu 环境编译和安装,支持 Python 和 C++ 开发

1. 设备 2. 环境 sudo apt-get install protobuf-compiler libprotoc-devexport PATH/usr/local/cuda/bin:${PATH} export CUDA_PATH/usr/local/cuda export cuDNN_PATH/usr/lib/aarch64-linux-gnu export CMAKE_ARGS"-DONNX_CUSTOM_PROTOC_EXECUTABLE/usr/bin/protoc&qu…

SAT和SMT介绍及求解器使用

一、SAT 1、介绍 &#xff08;1&#xff09;定义 SAT即命题逻辑公式的可满足性问题/布尔可满足性问题。即给定一个与或非和变量组成的命题公式&#xff0c;判断是否存在一些结果使得这个公式成立 它是第一个被确认为NP完全的问题。 输入&#xff1a;析取范式&#xff08;C…

新站上线了

新站上线了 由于本人自身的向往&#xff0c;以及粉丝朋友的广大呼吁。我终于抽出时间给我的新站上线了。感谢各位粉丝好友的关注。欢迎大家前来踩站~。 新站地址&#xff1a;https://jhj-coding.top/ 今后会同时维护CSDN与jhj-coding哦&#xff01;期待新站可以给大家带来更好…

穿越半个世纪,探索中国数据库的前世今生

引言 在数字化潮流席卷全球的今天&#xff0c;数据库作为 IT 技术领域的“活化石”&#xff0c;已成为数字经济时代不可或缺的基础设施。那么&#xff0c;中国的数据库技术发展经历了怎样的历程&#xff1f;我们是如何在信息技术的洪流中逐步建立起自己的数据管理帝国的呢&…

Vue3基础笔记(1)模版语法 属性绑定 渲染

Vue全称Vue.js是一种渐进式的JavaScript框架&#xff0c;采用自底向上增量开发的设计&#xff0c;核心库只关注视图层。性能丰富&#xff0c;完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用&#xff0c;适用于场景丰富的web前端框架。灵活性和可逐步集成…

Modbus -tcp协议使用第二版

1.1 协议描述 1.1.1 总体通信结构 MODBUS TCP/IP 的通信系统可以包括不同类型的设备&#xff1a; &#xff08;1&#xff09;连接至 TCP/IP 网络的 MODBUS TCP/IP 客户机和服务器设备&#xff1b; &#xff08;2&#xff09;互连设备&#xff0c;例如&#xff1a;在 TCP/IP…

【消息队列开发】 实现内存加载

文章目录 &#x1f343;前言&#x1f333;实现思路&#x1f6a9;读取消息长度&#x1f6a9;读取相应长度的消息&#x1f6a9;进行反序列化&#x1f6a9;判定是否有效&#x1f6a9;加入有效消息&#x1f6a9;收尾工作&#x1f6a9;代码实现 ⭕总结 &#x1f343;前言 本次开发目…

微信小程序基础面试题

1、简述微信小程序原理 小程序本质就是一个单页面应用&#xff0c;所有的页面渲染和事件处理&#xff0c;都在一个页面内进行&#xff0c;但又可以通过微信客户端调用原生的各种接口&#xff1b;它的架构&#xff0c;是数据驱动的架构模式&#xff0c;它的UI和数据是分离的&am…

【UE5】动画混合空间的基本用法

项目资源文末百度网盘自取 什么是动画混合空间 混合空间分为两种: 通过一个数值控制通过两个数值控制 下面通过演示让大家更直观地了解 在Character文件夹中单击右键,选择动画(Animation),选择旧有的混合空间1D 然后选择骨骼&#xff08;动画是基于骨骼显示的,所以需要选择…

杂七杂八111

MQ 用处 一、异步。可提高性能和吞吐量 二、解耦 三、削峰 四、可靠。常用消息队列可以保证消息不丢失、不重复消费、消息顺序、消息幂等 选型 一Kafak:吞吐量最大&#xff0c;性能最好&#xff0c;集群高可用。缺点&#xff1a;会丢数据&#xff0c;功能较单一。 二Ra…

构建用户身份基础设施,推动新能源汽车高质量发展

随着市场进入智能电动汽车时代&#xff0c;车企们发现&#xff0c;在激烈竞争的市场中不断增长&#xff0c;并不是一件容易的事。《麻省理工科技评论》&#xff0c;前段时间写了一篇报道&#xff1a;中国是如何称霸电动汽车世界的&#xff1f;“过去两年&#xff0c;中国电动汽…

项目性能优化—性能优化的指标、目标

项目性能优化—性能优化的指标、目标 性能优化的终极目标是什么 性能优化的目标实际上是为了更好的用户体验&#xff1a; 一般我们认为用户体验是下面的公式&#xff1a; 用户体验 产品设计&#xff08;非技术&#xff09; 系统性能 ≈ 系统性能 快 那什么样的体验叫快呢…

定力至上,穿越周期——哪吒汽车闯进国际大市场

近年来&#xff0c;全球气候变化和环境保护议题日益受到关注&#xff0c;环保意识逐渐深入人心。在这一背景下&#xff0c;新能源汽车作为一种低碳、环保的交通工具受到了广泛关注和青睐。各国纷纷加大对新能源汽车产业的支持力度&#xff0c;通过出台补贴政策、购车优惠以及充…

Linux学习之网络

目录 认识协议 网络协议初始 协议分层 OSI七层模型 TCP/IP的四层模型 数据包封装和分用 以太网通信 ip地址与MAC地址 网络编程套接字 端口号&#xff08;port&#xff09; 认识协议 网络字节序 socket接口 网络的产生是计算机历史的必然性&#xff0c;是计算机发展…

【闲聊】-后端框架发展史

框架&#xff0c;是为了解决系统复杂性&#xff0c;提升开发效率而产生的工具&#xff0c;主要服务于研发人员。 当然&#xff0c;框架还有更深层的作用&#xff0c;框架的沉淀是一种高级的抽象&#xff0c;会将人类的业务逐步抽象为统一标准又灵活可变的结构&#xff0c;为各行…

暴雨高性能分布式存储为AI提供坚实数据存力

随着两会的圆满落幕&#xff0c;新质生产力和人工智能的发展成为社会各界热议的焦点。总理在两会后的首次调研中&#xff0c;特别强调了新质生产力和人工智能的重要性&#xff0c;这无疑为人工智能产业的蓬勃发展注入了新的动力。 年初&#xff0c;Sora所引领的人工智能热潮更…
最新文章