什么是MVC三层结构

简介: 什么是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


相关文章
|
7月前
|
前端开发 Java 数据库
什么是MVC三层结构
Spring MVC 是一个功能强大且灵活的 Web 框架,可以帮助开发人员快速构建可扩展、易维护的 Web 应用程序。它与其他 Spring 模块(如 Spring Core、Spring Data 等)结合使用,形成了完整的企业级应用程序开发解决方案。
40 2
|
前端开发 数据库 数据安全/隐私保护
MVC三层结构
10、MVC三层架构 什么是MVC:Model view Controller 模型、视图、控制器 10.1、早些年 用户直接访问控制层,控制层就可以直接操作数据库; servlet--CRUD-->数据库 弊端:程序十分臃肿,不利于维护 servlet的代码中:处理请求、响应、视图跳转、处理JDB
|
前端开发 Java 数据库
java中的mvc和三层结构究竟是什么关系
一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了。 屈指一算,手头上做过的正式项目也有了四五六七个了,不管用的数据库和其他一些细节上的技术如何,总的来说大的框架结构都是差不多的。 说白了,也就是mvc和三层结构。
4874 0
|
前端开发 .NET Java
|
4月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
57 0
|
7月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
212 0
|
7月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
87 0
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
176 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
111 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
185 0