浅议MVC设计模式在JavaWeb中的作用

2018-10-21 15:07张雪敏
科技风 2018年22期

摘要:随着互联网的发展,基于B/S结构的Web开发技术的不断推广和应用,MVC设计模式在JavaWeb开发中的应用越来越广泛和成熟,本文从宏观的角度讨论了MVC设计模式在JavaWeb开发三层架构和开发框架中的影响,强调了MVC通过分层设计的理念,实现了分层解耦、代码复用,更方便维护和测试软件系统的目的。

关键词:MVC设计模式;javaWEB三层架构;javaWEB框架

随着Web页面在Internet上的普及,基于B/S架构的Web开发技术也越来越成熟,其中基于MVC设计模式的JavaWeb的开发技术发展迅速,应用也最为广泛。下面对MVC设计模式在JavaWeb开发中的影响和作用进行浅显的探讨。

1 设计模式的概念

设计模式:对于一类重复出现的问题的一种可以重用的解决方案;[1]在软件开发中应用设计模式的思想可以提供解决重复出现的相同或相似问题的思路和方案,从而减少重复的工作和加快开发的速度。

2 MVC设计模式

MVC设计模式简介:MVC设计模式是软件工程中的一种软件架构模式,把软件系统从逻辑上抽象成三个基本部分:模型(Model)、视图(View)和控制器(Controller),简称MVC。它是一种软件设计的典范,最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设计模式。[2]

2.1 MVC的功能作用

MVC通过分层设计的理念,将业务流程进行逻辑上的归类和分工,从而使处理流程清晰,达到了分层解耦、代码复用,更方便维护和测试软件系统的目的。[3]

2.2 MVC具體执行过程

(1)用户发送请求控制器;

(2)控制处理用户请求,调用业务相关模型处理数据;

(3)业务调用数据访问模型,验证请求的内容是否成功,如果成功则封装到数据模型中;

(4)数据访问模型到数据库中检索并操作数据。

3 MVC与JavaWeb的三层架构

3.1 JavaWeb开发中的三层架构思想

JAVA三层架构主要是指逻辑上划分的三层:表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。如图2所示,其中实体层独立于其他层,仅供其他层次进行引用。

下面简要说明一下JavaWeb三层架构中每一层的功能:

(1)表示层或用户界面层(User interface):展现给用户的最终界面;

(2)业务逻辑层(Business Logic Layer):对具体事务的业务逻辑操作,主要是对数据业务的逻辑处理;

(3)数据访问层(Data Access Layer):封装了对数据库的访问细节,为表示层或业务逻辑层提供数据服务。

3.2 MVC和JavaWeb三层架构的关系

三层架构是软件工程中的宏观设计,MVC是三层架构上具体实现的一种设计思想,再根据MVC的设计思想将不同作用的代码进行分类归纳,从而来具体实现软件项目工程。[4]

通过图3、图4的展现,可以清晰的理解MVC和JavaWeb三层架构之间的关系。

4 MVC在JavaWeb框架中的应用

MVC模式被广泛用于Java的各种框架中,如Struts、Spring、Hibernate、Spring MVC、Mybatis等等,都用到了这种思想。JavaWeb开发框架是MVC设计模式思想从抽象到具体功能代码实现的高效集成化组件集。[5]

4.1 常用JavaWeb框架简介

JavaWeb框架种类较多,下面列举常用的框架来简要说明:

4.1.1 Strust1

Struts1框架是一个实现了MVC模式的应用程序框架,它定义了通用的控制器(Controller),通过配置文件strutsconfig.xml隔离模型Model和视图View,以Action的概念对用户请求做了封装,同时还提供了自动将请求的数据填充到对象中以及页面标签等简化编码的工具。

4.1.2 Strust2

Struts2是基于MVC的轻量级的web应用框架。基于MVC,说明基于Struts2开发的Web应用自然就能实现MVC,也说明Struts2着力于在MVC的各个部分为我们的开发提供相应帮助。

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。[6]Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

4.1.3 Spring

Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。[7]

4.2 MVC模式的Java主流框架整合简介

为了更好的实现MVC设计模式的分层思想,适应不同软件开发的具体情况,建立框架结构清晰、代码低耦合高内聚的软件系统成为了业内追求的目标,为了更好的达成这个目标推出了Java框架整合技术。[11]下面以主流的框架整合技术作简要说明。

最初是Struts+ Spring + Hibernate,接着演变为Struts2 + Spring + Hibernate,后来随着Spring的强大以及Struts框架上的漏洞等问题,演变成为了Spring + SpringMVC + Hibernate/Mybatis。上述几种框架整合方案中都实现了视图层、控制层、模型层的应用程序分层功能,Struts/Struts2/SpringMVC负责视图层,Spring框架负责控制层并整合其他框架,Hibernate/Mybatis框架負责模型层的数据操作功能,三大框架通过不的搭配方式都实现了MVC设计模式的低耦合、易维护和可扩展的分层思想。

5 结语

本文从抽象和宏观的角度讨论了MVC设计模式在JavaWeb开发中的影响和作用。从设计模式的概念谈起,引入MVC设计模式的概念、功能作用和执行过程,进而探讨了MVC设计模式思想在JavaWeb三层架构中的作用,在Java框架中具体应用的影响和渗透,从而实现了MVC设计模式分层设计的低耦合、高内聚、易维护和可扩展的核心思想。

参考文献:

[1]钟茂生,王明文.软件设计模式及其使用[J].计算机应用,2002(08):3235.

[2]任中方,张华,闫明松,陈世福.MVC模式研究的综述[J].计算机应用研究,2004(10):14+8.

[3]陈业恩.基于MVC模式的Web软件系统开发框架设计与实现[J].信息系统工程,2015(06):37.

[4]陈辉.软件工程中的解耦核心技术MVC和三层架构比较[J].廊坊师范学院学报(自然科学版),2014,14(04):4446.

[5]孙亚志.浅谈Java web技术structs2框架的MVC模式[J].数字技术与应用,2013(05):208.

[6]耿伟,刘振海,孙磊.Struts2框架技术的研究与分析[J].电脑知识与技术,2008(33):13121313+1317.

[7]张宇,王映辉,张翔南.基于Spring的MVC框架设计与实现[J].计算机工程,2010,36(04):5962.

[8]吴茂昌,阳玉琴.基于MVC模式的Java主流框架整合技术研究[J].计算机与数字工程,2009,37(10):9193+111.

作者简介:张雪敏(1981),男,汉族,江苏苏州人,在职研究生在读,讲师,研究方向为计算机软件开发。