浅谈MVC三层架构(通俗易懂)
"怕什么真理无穷,进一寸有一寸的欢喜" ----胡适
什么是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三层架构(通俗易懂)相关推荐
- 浅谈Java三层架构
1. 设计思想: 高内聚,低耦合. 2. 优点 结构明确,开发人员只需关注其中某一层即可: 降低层与层之间的依赖,即低耦合性: 可以方便快捷地用新的实现替换原有的层次实现: 后期维护时,降低维护成本和 ...
- 浅谈springboot三层架构
springboot 三层分层架构: Controller(UI)界面控制层 Service(BLL)业务逻辑服务层 Dao(DAL)数据访问层 U层,负责接受用户的请求,展示数据,获取用户通过界面所 ...
- 浅谈 MVC、MVP 和 MVVM 架构模式
2019独角兽企业重金招聘Python工程师标准>>> 谈谈 MVX 中的 Model 谈谈 MVX 中的 View 谈谈 MVX 中的 Controller 浅谈 MVC.MVP ...
- [原创] 浅谈ETL系统架构如何测试?
[原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...
- javascript的MVC三层架构(案例之分页插件)
javascript的MVC三层架构(案例之分页插件) 作者:田想兵 博客地址:http://www.cnblogs.com/tianxiangbing 最近很少写博文,一是比较忙,二是没啥心情,好, ...
- 阿里为什么建议给MVC三层架构多加一层Manager层?
MVC三层架构 我们在刚刚成为程序员的时候,就会被前辈们 "教育" 说系统的设计要遵循 MVC(Model-View-Controller)架构.它将整体的系统分成了 Model( ...
- java三层 开源_java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源...
[实例简介] java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源 [实例截图] [核心代码] java山寨qq聊天工具(基于mvc三层架构,附mvc架构模式p ...
- 浅谈MVC设计模式和SSH框架的关系
一.MVC:是指Model-View-Controler,是程序的一种分层模式,是一种思想. MVC是Model-View-Controler的简称.即模型-视图-控制器.MVC是一种设计模式,它强制 ...
- mvc三层架构_Java架构-代码分层的设计之道
分层思想,是应用系统最常见的一种架构模式,我们会将系统横向切割,根据业务职责划分.MVC 三层架构就是非常典型架构模式,划分的目的是规划软件系统的逻辑结构便于开发维护.MVC:英文即 Model-Vi ...
最新文章
- 苹果7信号天线内部位置_新专利显示未来Apple Watch Wi-Fi及无线天线或将嵌入显示屏中...
- java 获取本机ip_linux获取本机IP
- Qt文档阅读笔记-QScopedPointer解析及实例
- php unserialize 返回false的解决方法
- 没车牌也能开上国产特斯拉:北京3年租赁每月1万1,全国最低7千
- 利用多线程提高程序性能(for Android)
- 关闭多个activity
- size_t和size_type类型
- 【图文详解】RE文件管理器手工精简Android系统
- 利用uDig 快速生成 GeoServer 可用的 SLD 渲染文件
- 计算机放音乐声音小在吗调,用电脑在网上看电影时配乐音量太大,请问怎么只把配乐音量调小,而说话声不调小。...
- WARNING: too many parse errors
- python短信验证码_Python如何实现手机验证码
- JESD204标准概述
- 苹果切换输入法_轻松搞定缅甸语手机输入法(苹果篇)
- python隐秘的角落——笛卡尔之心
- 实现MapX的移屏测距功能
- Java web 服务器 搭建_搭建一个java web服务端
- Win10右键清空剪贴板
- 梦想热气球创意手绘PPT模板