MVC

MVC定义
MVC全名是Model View Controller,是模型(model)-视图(view) - 控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

MVC的优势

1、耦合性低
2、重用性高
3、可维护性高
4、有利于软件的工程化

基于JavaEE架构模式下的MVC
在这种架构模式下,模型层(Model)定义了数据模型和业务逻辑。为了将数据访问与业务逻辑分离,降低代码之间的耦合,提高业务精度,模型层又具体划分为了DAO层和业务层,DAO即Data Access Object,其主要职能是将访问数据库的代码封装起来,让这些代码不会在其它层出现或者暴露出来给其它层;业务层是整个系统最核心也是最具有价值的一层,该层封装应用程序的业务逻辑,处理数据,关注客户需求,在业务处理过程中会访问原始数据或产生新数据,DAO层提供的DAO类能很好地帮助业务层完成数据处理,业务层本身侧重于对客户需求的理解和业务规则的适应,总体说来,DAO层不处理业务逻辑,只为业务层提供辅助,完成获取原始数据或持久层数据等操作。
MVC 模式是一种软件框架模式,被广泛应用在 JavaEE 项目的开发中。MVC 模式很好理解,但也十分重要,在今后的 Web 应用开发中,我们都离不开它。
什么是 MVC
MVC中各个模块的职责:
MVC 即模型(Model) 、视图(View)、控制器(Controller)。
model模型:劳动者
-接受controller的指令。
-告诉model做什么,controller要拿到什么。
-通过自身功能实现和DAO去处理这个事情。
-以最快最准确的方式完成controller交给的任务。
model就是一直和控制器controller和数据库DB交互的中间件,:里边拿最原始的材料,经过适当的加工成半成品,将这个半成品交给控制器controller,controller对半成品做适当的封装交给一线的view进一步完善并表现到前端。并且model有很多种,数据封装;核心算法、核心业务、关键操作;工具集等。
模型是用于处理数据逻辑的部分。所谓数据逻辑,也就是数据的映射以及对数据的增删改查,Bean、DAO(data access object,数据访问对象)等都属于模型部分。
controller控制器:
协调model和view的中间件。
-从view拿数据给model。
-model处理并控制DAO和数据库交互。
-通过controller回馈给view显示告诉用户程序做了什么。
view->controller->model->db
db->model->controller->view
控制器是模型与视图之间的桥梁,控制着数据与用户的交互。控制器通常负责从视图读取数据,处理用户输入,并向模型发送数据,也可以从模型中读取数据,再发送给视图,由视图显示。
视图(View)
-负责从用户那里拿到controller想要获取到的数据
-人机交互。
视图负责数据与其它信息的显示,也就是给用户看到的页面。html、jsp 等页面都可以作为视图。
为什么要用 MVC
看着舒服:前面学习 Servlet 和 JSP 的时候,我们发现这俩东西都是功能和显示混着来,可读性很差,而使用 MVC,Servlet 里都是逻辑代码,JSP 都是显示代码,一目了然。
写着容易:MVC 模式有利于人员的分工合作,不同的开发人员可各自发挥专长,同时开发不同的部分。
改着省心:MVC 可以在一个时间内专门关注一个方面,从而让应用程序的测试与迭代更加方便。所以,复杂的应用程序大都会选择使用 MVC 模式。
上述好处,用一句行话来说,就叫 “高内聚 低耦合”。
设计模式与框架模式
在搜集资料的时候发现很多地方把 MVC 称为一种 “设计模式”,一开始我觉得没什么毛病,从字面上完全说地通,但是仔细一想,“设计模式” 这个词是一个术语,是指工厂模式、单例模式这些东西,是不能乱用的。而 MVC,应该被称作是 “框架模式”。
设计模式,是针对 “代码” 的,如同修筑房屋时砖瓦的层叠方式,是软件开发的基石。
框架模式,是针对 “框架” 的,是面向某些应用场景的可复用的方案,如同医院、商场等不同功能建筑的布局,是比设计模式更宏观一些的概念。在今后的文章中,我将与大家共同学习当前的主流框架。
MVC 实践
在 JavaEE 中,最为经典的 MVC 模式即
Bean(Model) + JSP(View) + Servlet(Controller)
假如有一个需求:实现编辑网页上的信息并与数据库同步
在实现上,可以分为以下几步:
用 Bean 来映射数据表,并编写好 DAO
用负责查询的 Servlet 调用 DAO 查询需要编辑的内容并发送给用于编辑的 jsp 页面
把编辑页面进行修改后的值,再提交给负责更新的 Servlet 调用 DAO 更新数据库
使用另一个负责查询的 Servlet,把查询出来的更新过的内容发送给负责显示的 JSP
JSP:JSP被用来产生Web的动态内容。这层把应用数据以网页的形式呈现给浏览器,然后数据按照在JSP中开发的预定的方式表示出来,这层也可以称之为布局层。
Servlet:JSP建立在Servlet之上,Servlet是J2EE的重要组成部分。Servlet负责处理用户请求,Java Web项目的所有配置都写在了web.xml配置文件里,当项目运行的时候,web.xml会将http请求映射给对应的Servlet类。
JavaBean:由一些具有私有属性的Java类组成,对外提供get和set方法。JavaBean负责数据,负责处理视图层和业务逻辑之间的通信。
Service:业务处理类,对数据进行一些预处理。
DAO:数据访问层,JDBC调用存储过程,从数据库(DataBase)那里获取到数据,再封装到Model实体类中去。