三层架构跟MVC讲的可不是同一个东西

三层架构和MVC(Model-View-Controller)确实不是讲的同一个东西,它们是两种不同的架构设计概念。

三层架构(controller service dao):

  • 三层架构是一种常见的软件架构设计模式,将一个软件系统划分为三个逻辑层:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。
  • 表示层负责与用户交互,即用户界面的展示和用户输入的处理;业务逻辑层负责处理应用程序的业务逻辑;数据访问层负责与数据存储进行交互,进行数据的读取和写入操作。
  • 这种架构有助于降低各层之间的耦合度,提高系统的可维护性和扩展性,并且更容易实现逻辑的复用和测试。

MVC(Model-View-Controller)

  • MVC是一种用于构建用户界面的软件架构模式,将用户界面分为三个部分:模型(Model)、视图(View)和控制器(Controller)。
  • 模型表示应用程序的数据和业务逻辑,视图负责用户界面的展示,控制器负责接收用户输入并调度对应的业务逻辑来进行处理。
  • 这种架构模式将用户界面和业务逻辑进行有效地分离,提高了代码的组织结构和可维护性。

        虽然三层架构和MVC是两种不同的概念,但它们通常可以结合使用。在一个基于MVC的Web应用中,通常会将业务逻辑和数据访问层的功能封装到服务层(Service)和数据访问对象(DAO)中,以实现更好的代码组织和复用。因此,虽然它们不是同一个概念,但在实际应用中经常会同时使用三层架构和MVC来构建完整的应用程序。

以下是一个更充分体现 MVC 的 Spring MVC 示例:

1、首先,创建一个简单的数据模型类 User

public class User {
    private Long id;
    private String username;
    private String email;

    // 省略构造方法和getter/setter方法
}

2、创建一个服务类 UserService,用于处理用户相关的业务逻辑:

import org.springframework.stereotype.Service;

@Service
public class UserService {

    public User getUserById(Long userId) {
        // 模拟从数据库或其他数据源获取用户信息
        User user = new User();
        user.setId(userId);
        user.setUsername("John Doe");
        user.setEmail("john.doe@example.com");
        return user;
    }
}

3、修改 HelloController 控制器类,增加对模型的操作:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

    @Autowired
    private UserService userService;

    @RequestMapping("/user")
    public String getUser(Model model) {
        Long userId = 1L;
        User user = userService.getUserById(userId);
        model.addAttribute("user", user);
        return "user";
    }
}

4、创建一个新的视图 user.jsp,用于展示用户信息:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>User Profile</title>
</head>
<body>
    <h2>User Profile</h2>
    <p>User ID: ${user.id}</p>
    <p>Username: ${user.username}</p>
    <p>Email: ${user.email}</p>
</body>
</html>

在上面的案例中,体现了经典的 MVC(Model-View-Controller)架构设计模式:

  1. Model(模型):在这个案例中,通过引入了一个数据模型类 User 和一个服务类 UserService,更充分地体现了 Model 的作用。

  2. View(视图):在案例中,hello.jsp 视图文件充当了视图的角色。视图负责向用户展示数据,并与用户交互。在 Spring MVC 中,视图通常是 JSP、Thymeleaf、Freemarker 等模板引擎生成的页面。

  3. Controller(控制器):在案例中,HelloController 控制器负责接收用户请求,并调用相应的业务逻辑处理。控制器负责处理用户输入,并将处理结果传递给视图进行展示。在 Spring MVC 中,控制器使用注解来标识请求映射和处理方法。

        控制器通过服务类获取用户信息,并将用户模型传递给视图进行展示。这样,Model 负责处理数据逻辑,Controller 负责处理用户请求和业务流程,View 负责展示数据给用户,实现了完整的 MVC 架构。

        总体来说,Spring MVC 遵循了 MVC 设计模式的基本原则,通过将应用程序分为模型、视图和控制器三个部分,实现了业务逻辑、用户界面和用户交互的分离,提高了代码的可维护性和可扩展性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进窄门见微光行远路

如果对你有比较大的帮助

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值