MVC模式
- MVC模式的概念
MVC模式的全称是Model View Controller,是模型(Model)-视图(View)-控制(Controller)的缩写,它是一种软件设计的典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
- MVC模式的由来
MVC模式是是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,而因为smalltalk语言和Java语言有很多相似性,都是面向对象语言,后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。
- MVC模式的三个组成部分的详细介绍
1.Model(模型层)
这一层封装的是一系列的实体类,用于封装业务逻辑和数据模型,通常对应这一层中的实体类对应于数据库中相应的表,而我们做的一些j2ee的网站所操作的对象就封装成实体放在这一层中。这也是MVC核心之所在。
2.View(视图层)
这一层主要是指用于和用户进行交互的界面,用户可以通过这一层来对数据进行一些增删改查的操作,在我们所编写的网站程序中,这一层通常对应的是jsp,asp,html等用于进行前台页面表现的数据层。
3.Controller(控制器层)
这一层是处理用户操作,对用户在视图层进行的操作进行接收,并通过相应的业务逻辑,完成对model层中数据的增删改查,更新数据库的数据。
- MVC的具体应用
应用MVC模式最典型就是j2ee中的 jsp + servlet +javaBean。它使应用程序的输入、处理和输出分开,降低程序的耦合性,增加了程序复用性。
Model层:实现系统的业务逻辑,即javaBean部分
View层:负责与用户交互,即在界面上展示数据对象给用户,即html,jsp
Control层:Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作,当然就是Servlet的职责了。
- MVC 模式的优缺点
优点:
1.降低耦合性
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
2.可重用性提高
随着技术的不断进步,需要用越来越多的方式来访问应用程序。MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。
3.可维护性高
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
缺点:
1.没有明确的定义
没有一家公司敢说自己的MVC是最标准的,MVC只是一种模式,并没有明确的定义。
2.不适合小型、中等规模的程序
花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
3.增加系统结构和实现的复杂性
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
- 基于MVC的框架
Struts2:Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品
SpringMVC:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还可以是 Struts 这样的 Web 框架。通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的视图,所以不会强迫您只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制