Web开发中MVC设计模式的研究与应用
- 格式:doc
- 大小:27.00 KB
- 文档页数:4
Web开发中MVC设计模式的研究与应用
摘 要:文章主要介绍了MVC设计模式的思想、处理过程和优缺点,并着重介绍了目前比较广泛使用的实现MVC设计模式的开发框架Struts2框架,对它的实现机制以及工作流程作了详细的分析。
关键词:MVC;设计模式;Struts2;web开发
MVC是Model(模型)-View(视图)-Controller(控制器)的简称。在MVC出现之前,在一个Web项目中,典型的模式是将模型层和控制层结合到视图层当中,使得各层之间的耦合性非常高,这样导致后续的维护和扩展工作极其困难,而利用MVC模式能够很好的解决这些问题,它将一个Web项目分成3个基本的部分,以最少的耦合工作,是目前应用最广泛的软件设计模式之一。运用MVC模式能大大减少开发时间,让开发人员将精力专注在主要的业务逻辑上,而界面程序员则主要专注于表现形式上,很大程度的提高开发效率,降低开发成本,提高Web应用的扩展性及维护性。
1 MVC设计模式
随着互联网的流行和发展,近年来,Web在企业信息化的过程中日益扮演着越来越重要的角色,很多公司将B/S体系结构作为它们的首选的开发方式,与C/S结构不同,它将数据和应用程序放在了Server(服务器)上,Client(客户端)则运用Web浏览器,如果逻辑业务发生改变,只需要对服务器进行修改,而不需要对客户端进行更改,通过这样的分层,使得Web应用的安全、性能和扩展性得到了大大的提高。
但是现流行的Web项目开发中还存在问题,如缺乏优秀的开发框架,程序易读性差,开发效率低、代价高等。针对这种情况,为了解决目前软件开发中遇到的这些问题,亟需一种新的开发模式,因此MVC模式应运而生了。
1.1 MVC思想
MVC是一个设计模式,它将一个Web项目的输入、输出和处理分开。在交互式系统中,MVC设计模式将它分解成3个主要的部分,即模型(Model)、视图(View)和控制器(Controller)。它们分工明确,各自处理自己的工作,各部分的功能如下:
①模型部分:模型是Web应用的核心。它代表业务数据和业务逻辑,可以为多个视图提供数据。由于同一个Model可以被多个View重用,所以增加了Model的可重用性。
②控制器部分:控制器主要负责所有的用户请求参数,确定应用程序的行为,决定应该调用哪个模型来处理。它是视图和模型之间交互的工具。
③视图部分:视图是用户和系统之间交流的媒介,它主要从模型中取出用户需要的数据,同时还接受用户的输入,但自身不做跟业务逻辑有关的事物。视图通过模型查询模型的状态,但不能对模型进行修改。视图可以接受来自模型发出的数据更新命令,根据命令修改相应的视图。
1.2 MVC处理过程
第一步:用户在视图上发出命令,控制器接收用户的命令,同时确定调用哪个模型来处理用户命令;第二步:模型根据用户的命令并执行对应的逻辑业务操作,同时返回操作结果;第三步:控制器调用对应的视图并对返回的操作结果做适当的处理,然后在视图上显示。
1.3 MVC设计模式的优缺点
1.3.1 MVC的优点
①耦合性低。在目前用户需求快速变化的情况下,将View和业务层分离,如果系统的需求发生了改变,不需要改动业务层和视图层,而只需要改变模型层,大大降低了代码的维护工作。
②重用性高。不同的用户视图可以共享相同的服务器端代码,多个视图共享相同的模型,很大程度的增加了代码的可重用性。
③可移植性。模型不依赖于视图,可以把模型移植到新的平台。而只需要在移植后的平台上对Control(控制器)和View(视图)作简单的修改,无需改变模型。
1.3.2 MVC的缺点
①因为MVC将整个应用程序分层,实现机制复杂,运用它需要程序员专门去学习它的知识。所以业务简单的应用程序会让结构变得复杂,还会产生不必要的数据更新,使得系效率低,所以小型Web应用程序不适合MVC模式。
②View与Control之间相互依赖。视图和控制器虽然是分开的,但是双方却又是紧密联系在一起的,离开了控制器,视图的功能受到限制,所以他们之间依赖性大。所以它们很难单独重用。
③View对Model访问效率低。由于模型操作的不同接口,视图一般情况需要调用多次才能获得所要的数据,这样对于没有变化的数据造成多余的访问,降低了系统的性能。
④目前,有些比较流行工具不能很好的支持MVC模式。如果要使用这些工具来适应MVC模式,那需要付出很大的代价。
2 MVC设计模式的实现—Struts2
2.1 Struts2实现MVC的机制
Struts是一个开源项目,是典型的基于MVC的Web应用框架,在struts中,Model由javabean或EJB组成,控制器由FilterDispatcher和Action来完成,视图由JSP文件组成。各部分功能如下:
①视图。负责系统的视图实现,由jsp组成。这些jsp文件只实现页面的显示,没有涉及到具体的业务逻辑。
②模型。在一些大型的Web应用中,业务逻辑的实现一般让EJB和JavaBean来完成。Struts为模型层提供了Action和ActionForm组件。
③控制器。控制器一般由Action类和FilterDispatcher类实现。FilterDispatcher类在MVC设计模式中主要起到中央控制器的作用,它接受来自用户的HTTP请求的信息,根据struts.xml,把信息发送到相应的Action,如果相应的操作对象找不到,那么FilterDispatcher负责创建相应的对象。
④Struts的配置文件struts.xml。Struts.xml是struts的默认配置文件。主要实现View与model之间的对应关系。
2.2 Struts2的工作流程
采用Struts框架的应用程序,在服务启动之前,会加载并初始化FilterDispatcher。它接收到一个请求时,将执行以下步骤:
①第一步是搜索和用户请求相对应的Action,如果没有搜索到,系统将先创建这个实例。
②第二步是用第一步中对应的方法来调用模型中的有关组件来处理业务逻辑,并返回一个字符串,表示下一步负责处理请求的模板组件的逻辑名称。
③第三步是FilterDispatcher从Struts配置文件中获取和Action的对应方法返回逻辑名字对应的实际URL,然后再把请求转发给目标组件。如果这个目标组件是jsp文件,这个jsp文件就会把包含了响应结果的视图展现给用户。
3 结 语
一个成功的应用软件不仅在良好的技术支持,还需要有成功的模式和框架予以指导。MVC设计模式作为一种框架模式在web开发应用当具有重要的意义,它具有独特的优势,通过将View(表示层)、Service(业务层)和Action(控制层)分离,降低了每个层间的耦合度,降低了各层之间的依赖,提高了系统的可维护性和重用性。
参考文献:
[1] 吴刚珂,倪红美.基于浏览器/服务器结构的LIS开发与应用[J].现代检验医学杂志,2012,(6).
[2] 韩明.基于Struts-Spring-Hibernate的Java应用开发[M].北京:电子工业出版社,2006.
[3] 孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社,2004.
[4] 涂婷婷,段凡丁.MVC设计模式在B/S开发中的研究与应用[J].计算机技术与发展,2007,(5).