什么是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 {@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/");resolver.setSuffix(".jsp");return resolver;}@Overridepublic void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {configurer.enable();}
}
  1. 部署应用程序
    将应用程序打包成 WAR 文件并部署到 Web 服务器中。
    用Tomcat

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

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

相关文章

【网络安全渗透】常见文件上传漏洞处理与防范

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属的专栏&#xff1a;网络安全渗透 景天的主页&#xff1a;景天科技苑 文章目录 1.文件上传漏洞1.1. 描述1.2. 危害1.3. 有关文件上传的知识1.4…

【兔子机器人】修改GO、车轮电机ID(软件方法、硬件方法)以及修正VMC腿部初始化夹角

一、GO电机修改ID 1、硬件方法 利用上位机直接修改GO电机的id号&#xff1a; 打开调试助手&#xff0c;点击“调试”&#xff0c;查询电机&#xff0c;修改id号&#xff0c;即可。 但先将四个GO电机连接线拔掉&#xff0c;不然会将连接的电机一并修改。 利用24V电源给GO电机…

Java_12 杨辉三角 II

杨辉三角 II 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1] 示例 2: 输入: rowIndex 0 输出: [1] 示例 3: 输入: rowIndex 1 输…

【应急响应靶场web2】

文章目录 前言 一、应急响应 1、背景 2、webshell查杀 3、日志排查 1&#xff09;apache日志 2&#xff09;nginx日志 3&#xff09;ftp日志 4、隐藏账户 5、文件筛选 二、漏洞复现 总结 前言 靶场来源&#xff1a;知攻善防实验室 一、应急响应 1、背景 小李在某…

VMware 配置虚拟机网络

之前需要完成的任务 &#xff08;1&#xff09;、下载和安装VMware-Workstation-Pro.exe软件&#xff0c;推荐16.0版本 &#xff08;2&#xff09;、下载centOS7镜像&#xff0c;可以在阿里云下载。 &#xff08;3&#xff09;、VM创建一个虚拟机&#xff0c;并且使用本地已下载…

中东社媒Snapchat如何注册?

Snapchat是一款图片分享软件应用。利用该应用程序&#xff0c;用户可以拍照、录制影片、撰写文字和图画,并传送到自己在该应用上的好友列表。现如今&#xff0c;Snapchat也成为独立战引流然而&#xff0c;即使如此受欢迎&#xff0c;Snapchat的注册使用仍然是新手的难题&#x…

Java基于 Springboot+Vue 的招生管理系统,前后端分离

博主介绍&#xff1a;✌程序员徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【全志H616】1 --用orangepi控制硬件

【全志H616】1 --用orangepi控制硬件 本文介绍了如歌用orangepi 控制蜂鸣器&超声波模块&#xff0c;通过键盘输入1、2、3、4来控制转动角度舵机模块&#xff1b;同时还介绍了利用全志如何配置定时器&#xff1b;以及查看H616引脚状态的命令等… 超声波模块和舵机模块的讲解…

德人合科技 | 公司办公终端、电脑文件资料 \ 数据透明加密防泄密管理软件系统

天锐绿盾是一款全面的企业级数据安全解决方案&#xff0c;它专注于为企业办公终端、电脑文件资料提供数据透明加密防泄密管理。 首页 德人合科技——www.drhchina.com 这款软件系统的主要功能特点包括&#xff1a; 1. **透明加密技术**&#xff1a; 天锐绿盾采用了透明加密技…

Android Gradle 编译过程中的优化

} 但是反射没有办法能很好的识别&#xff0c;所以如果代码中有使用反射需要自行处理&#xff0c;以免被删除。 shrink resource 功能 shrink code流程执行完后删除了无用的代码后&#xff0c;就能确认哪些资源文件没有使用&#xff0c;shrink resource流程就是确定哪些资源…

DB107-ASEMI智能LED灯具专用DB107

编辑&#xff1a;ll DB107-ASEMI智能LED灯具专用DB107 型号&#xff1a;DB107 品牌&#xff1a;ASEMI 封装&#xff1a;DB-4 正向电流&#xff08;Id&#xff09;&#xff1a;1A 反向耐压&#xff08;VRRM&#xff09;&#xff1a;1000V 正向浪涌电流&#xff1a;50A 正…

【大厂秋招高频算法】阿里秋招高频算法题汇总

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

Windows,MacOS,Linux下载python并配置环境图文讲解

Windows 打开python官网 点击download 点击黄色按钮 另存为 打开文件 全选 配置安装路径 安装中 关闭路径长度限制 完成 验证 同时按住winr(win就是空格键左边的东西) 输入cmd 键入python,如果出现版本(红框)即安装成功 MacOS 同理打开python官网 点击最新版本 拖…

看!Chat4.0如何看待AI与光纤资源管理软件的应用结合点及价值

问&#xff1a;你好&#xff0c;AI在光纤资源管理软件中有那些应用结合点&#xff0c;请详细描述应用结合点及价值? 答&#xff1a;AI在光纤资源管理软件中的应用结合点涉及多个方面&#xff0c;它们通过智能化的手段提高资源管理的效率和准确性。以下是一些关键的应用结合点及…

Midjourney视觉垫图

https://github.com/lllyasviel/Fooocus/discussions/117https://github.com/lllyasviel/Fooocus/discussions/117掌握Midjourney的垫图技巧&#xff1a;AI绘画中的参考利器本期将深入了解AI绘画的垫图技巧&#xff0c;让作品获得更好的出图效果https://mp.weixin.qq.com/s/RS2…

unity3d Animal Controller的Animal组件中Stances,Advanced基础部分理解

Stances 立场 立场要求在动物动画控制器上的姿态动画参数。 你可以有多个运动状态,并根据当前的立场使用它们 过渡的条件是: Stance StanceID Default Stance默认姿势 如果调用函数Stance_Reset&#xff08;&#xff09;&#xff0c;动物将返回到的默认姿势。 Current …

边缘计算网关的工作原理及其在工业领域的应用价值-天拓四方

随着物联网技术的快速发展&#xff0c;物联网时代已经悄然来临。在这个时代&#xff0c;数以亿计的设备相互连接&#xff0c;共享数据&#xff0c;共同构建智慧的世界。边缘计算网关通过将计算能力和数据存储推向网络的边缘&#xff0c;实现了对海量数据的实时处理&#xff0c;…

centos云服务器安装cs(cobaltstrike4.0)教程

1、先安装JAVA环境 mkdir download #创建download目录 cd download #进入download目录 mkdir java1.8 #在download目录下再创建java1.8目录 cd java1.8 #进入java1.8目录 wget https://repo.huaweicloud.com/java/jdk/8u201-b09/jdk-8u201-linux-x64.tar.gz #下载jdk压缩包 tar…

WordPress供求插件API文档:获取市场类型

请注意&#xff0c;该文档为&#xff1a; WordPress供求插件&#xff1a;一款专注于同城生活信息发布的插件-CSDN博客文章浏览阅读396次&#xff0c;点赞6次&#xff0c;收藏5次。WordPress供求插件&#xff1a;sliver-urban-life 是一款专注于提供同城生活信息发布与查看的插件…

vue生命周期函数原理解析,vue阻止事件冒泡方法实现

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…