"怕什么真理无穷,进一寸有一寸的欢喜"        ----胡适

什么是MVC三层架构?

所谓MVC三层架构,指的是Model View Controller,即模型、视图、控制器,是一种用于设计创建 Web 应用程序表现层的模式。

各层对应的功能分别是:

Model(模型)

  • 存放实体类(数据库端表格一一对应的实体类)(JDBC) 通常指的就是我们的数据模型。作用一般情况下用于封装数据。

View(视图)

  • 通常指的就是我们的 jsp 或者 html。作用一般就是展示数据的。通常视图是依据模型数据创建的。

Controller(控制器)

  • 是应用程序中处理用户交互的部分。作用一般就是处理程序逻辑的。

可能有人会有疑问:为啥要这么分层呢?不分行不行呢?

举个通俗易懂的例子:

如果去饭店吃饭,不可能找厨师点菜吧?

小工负责食材存取,洗菜切肉;厨师负责烹饪;跑堂负责接待食客并与后厨沟通。这就是精典的分层体现。

如果一个厨师既负责跑堂,又负责烹饪。那这个饭店的管理一定非常混乱吧。

  • 小工就是DAO,从食材库里(数据源)取出食材(原始数据),进行简单处理(数据对象化)

  • 厨师就是Service,找到小工(DAO),获取各种半成品 (对象化数据),加工成顾客需要的菜肴(最终数据)。

  • 跑堂就是Controller,负责接单(提交数据)上菜(响应数据),是顾客与后厨间的媒介(提供用户与后台程序的接口)。

各司其职(高内聚),轻松协作(低耦合),就是分层思想的目标

MVC对应的工作流程图:

举个具体的实例,比如当用户在浏览器上发出一个登录请求后:对应的流程是:

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

如何搭建一个简易的MVC程序?

1、在IDEA中新建一个maven项目,添加web支持

2、在pom.xml中导入所需的依赖

<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.16</version>
</dependency>
<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version>
</dependency>
<dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope>
</dependency>

3、配置web.xml ,注册DispatcherServlet

<?xml version="1.0" encoding="UTF8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--配置DispatchServlet:这个是springmvc的核心:请求分发器,前端控制器--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--DispatcherServlet必须绑定spring的配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet.xml</param-value></init-param><!--设置启动级别--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>

4、编写SpringMVC配置文件:springmvc-servlet.xml(配置文件中包含了:处理器映射器、处理器适配器和视图解析器)

<?xml version="1.0" encoding="UTF8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttps://www.springframework.org/schema/beans/spring-beans.xsd"><!--处理器映射器--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><!--处理器适配器--><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/><!--视图解析器:模板引擎ThymeLeaf,Freemarker--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"><!--前缀--><property name="prefix" value="/WEB-INF/jsp/"/><!--后缀--><property name="suffix" value=".jsp"/></bean><!--BeanNameUrlHandlerMapping:bean--><bean id="/hello" class="com.kuang.controller.HelloController"/>
</beans>

5、编写Controller类,通过注解@Controller让spring识别,返回一个ModelAndView,装数据,封视图;

import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Description:* Author:Jizaichun  Date:2022/5/10 18:49*/
@Controller
public class HelloController {public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {ModelAndView mv = new ModelAndView();// 业务代码String result = "HelloSpringMVC";mv.addObject("msg", result);// 视图跳转mv.setViewName("test");return mv;}
}

6、编写要跳转的jsp页面,显示ModelandView存放的数据,取出返回的数据

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
${msg}
</body>
</html>

7、配置Tomcat,大功告成,测试运行。

感谢你读到这里,赠人玫瑰,手留余香,请不要吝啬一个赞~~

浅谈MVC三层架构(通俗易懂)相关推荐

  1. 浅谈Java三层架构

    1. 设计思想: 高内聚,低耦合. 2. 优点 结构明确,开发人员只需关注其中某一层即可: 降低层与层之间的依赖,即低耦合性: 可以方便快捷地用新的实现替换原有的层次实现: 后期维护时,降低维护成本和 ...

  2. 浅谈springboot三层架构

    springboot 三层分层架构: Controller(UI)界面控制层 Service(BLL)业务逻辑服务层 Dao(DAL)数据访问层 U层,负责接受用户的请求,展示数据,获取用户通过界面所 ...

  3. 浅谈 MVC、MVP 和 MVVM 架构模式

    2019独角兽企业重金招聘Python工程师标准>>> 谈谈 MVX 中的 Model 谈谈 MVX 中的 View 谈谈 MVX 中的 Controller 浅谈 MVC.MVP ...

  4. [原创] 浅谈ETL系统架构如何测试?

    [原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...

  5. javascript的MVC三层架构(案例之分页插件)

    javascript的MVC三层架构(案例之分页插件) 作者:田想兵 博客地址:http://www.cnblogs.com/tianxiangbing 最近很少写博文,一是比较忙,二是没啥心情,好, ...

  6. 阿里为什么建议给MVC三层架构多加一层Manager层?

    MVC三层架构 我们在刚刚成为程序员的时候,就会被前辈们 "教育" 说系统的设计要遵循 MVC(Model-View-Controller)架构.它将整体的系统分成了 Model( ...

  7. java三层 开源_java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源...

    [实例简介] java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源 [实例截图] [核心代码] java山寨qq聊天工具(基于mvc三层架构,附mvc架构模式p ...

  8. 浅谈MVC设计模式和SSH框架的关系

    一.MVC:是指Model-View-Controler,是程序的一种分层模式,是一种思想. MVC是Model-View-Controler的简称.即模型-视图-控制器.MVC是一种设计模式,它强制 ...

  9. mvc三层架构_Java架构-代码分层的设计之道

    分层思想,是应用系统最常见的一种架构模式,我们会将系统横向切割,根据业务职责划分.MVC 三层架构就是非常典型架构模式,划分的目的是规划软件系统的逻辑结构便于开发维护.MVC:英文即 Model-Vi ...

最新文章

  1. 苹果7信号天线内部位置_新专利显示未来Apple Watch Wi-Fi及无线天线或将嵌入显示屏中...
  2. java 获取本机ip_linux获取本机IP
  3. Qt文档阅读笔记-QScopedPointer解析及实例
  4. php unserialize 返回false的解决方法
  5. 没车牌也能开上国产特斯拉:北京3年租赁每月1万1,全国最低7千
  6. 利用多线程提高程序性能(for Android)
  7. 关闭多个activity
  8. size_t和size_type类型
  9. 【图文详解】RE文件管理器手工精简Android系统
  10. 利用uDig 快速生成 GeoServer 可用的 SLD 渲染文件
  11. 计算机放音乐声音小在吗调,用电脑在网上看电影时配乐音量太大,请问怎么只把配乐音量调小,而说话声不调小。...
  12. WARNING: too many parse errors
  13. python短信验证码_Python如何实现手机验证码
  14. JESD204标准概述
  15. 苹果切换输入法_轻松搞定缅甸语手机输入法(苹果篇)
  16. python隐秘的角落——笛卡尔之心
  17. 实现MapX的移屏测距功能
  18. Java web 服务器 搭建_搭建一个java web服务端
  19. Win10右键清空剪贴板
  20. 梦想热气球创意手绘PPT模板

热门文章

  1. 霜皮剥落紫龙鳞,下里巴人再谈数据库SQL优化,索引(一级/二级/聚簇/非聚簇)原理
  2. 二进制小数转16进制
  3. Android动画(实现抛物线运动)
  4. 22.10.20补卡 CF-1749C
  5. 小小祝福—祝全天下教师节日快乐!
  6. 自动创建计划任务之删除7天以前的备份文件批处理
  7. LabVIEW下拉列表和枚举控件
  8. Android 扩展屏幕 实现主屏副屏同步或者异步显示
  9. kali配置网络和安全通信
  10. Windows系统安装Qt保姆级教程