MVC 模式

MVC 模式是一种软件框架模式,被广泛应用在 JavaEE 项目的开发中。MVC 模式很好理解,但也十分重要,在今后的 Web 应用开发中,我们都离不开它。

之前,我们学习过了 Servlet、JSP,看起来它们都可以独立完成许多功能,却各有特点,MVC 就提供了一种扬长避短,双剑合璧的方法。

1.什么是 MVC

MVC 即模型(Model) 、视图(View)、控制器(Controller)。

模型(Model)

模型是用于处理数据逻辑的部分。

所谓数据逻辑,也就是数据的映射以及对数据的增删改查,Bean、DAO(data access object,数据访问对象)等都属于模型部分。

视图(View)

视图负责数据与其它信息的显示,也就是给用户看到的页面。

html、jsp 等页面都可以作为视图。

控制器(controller)

控制器是模型与视图之间的桥梁,控制着数据与用户的交互。

控制器通常负责从视图读取数据,处理用户输入,并向模型发送数据,也可以从模型中读取数据,再发送给视图,由视图显示。

前面学到的 Servlet 便可以用作控制器。

2.为什么要用 MVC

窃以为,MVC 模式有以下三大好处。

看着舒服

前面学习 Servlet 和 JSP 的时候,我们发现这俩东西都是功能和显示混着来,可读性很差,而使用 MVC,Servlet 里都是逻辑代码,JSP 都是显示代码,一目了然。

写着容易

MVC 模式有利于人员的分工合作,不同的开发人员可各自发挥专长,同时开发不同的部分。

改着省心

MVC 可以在一个时间内专门关注一个方面,从而让应用程序的测试与迭代更加方便。所以,复杂的应用程序大都会选择使用 MVC 模式。

上述好处,用一句行话来说,就叫 “高内聚 低耦合”

3.设计模式与框架模式

在搜集资料的时候发现很多地方把 MVC 称为一种 “设计模式”,一开始我觉得没什么毛病,从字面上完全说地通,但是仔细一想,“设计模式” 这个词是一个术语,是指工厂模式、单例模式这些东西,是不能乱用的。而 MVC,应该被称作是 “框架模式”

那么两者有什么区别呢?

设计模式,是针对 “代码” 的,如同修筑房屋时砖瓦的层叠方式,是软件开发的基石。

框架模式,是针对 “框架” 的,是面向某些应用场景的可复用的方案,如同医院、商场等不同功能建筑的布局,是比设计模式更宏观一些的概念。

在今后的文章中,我将与大家共同学习当前的主流框架。

4.MVC 实践

在 JavaEE 中,最为经典的 MVC 模式即

Bean(Model) + JSP(View) + Servlet(Controller)

假如有一个需求:实现编辑网页上的信息并与数据库同步

在实现上,可以分为以下几步:

  1. 用 Bean 来映射数据表,并编写好 DAO

  2. 用负责查询的 Servlet 调用 DAO 查询需要编辑的内容并发送给用于编辑的 jsp 页面

  3. 把编辑页面进行修改后的值,再提交给负责更新的 Servlet 调用 DAO 更新数据库

  4. 使用另一个负责查询的 Servlet,把查询出来的更新过的内容发送给负责显示的 JSP

这个部分本来打算自己做一遍,但之前推荐的 Java 学习网站 How2J 上已经有很好的实践教程,我就不费劲了,直接戳下面的链接:

How2J 的 MVC教程

只是一个小练习,看过前面的内容的话一会儿工夫就可以做完。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐