MVC模式html
MVC模式的全称是Model View Controller,是模型(Model)-视图(View)-控制(Controller)的缩写,它是一种软件设计的典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑汇集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不须要从新编写业务逻辑。java
MVC模式是是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,而由于smalltalk语言和Java语言有不少类似性,都是面向对象语言,后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,而且受到愈来愈多的使用ColdFusion和PHP的开发者的欢迎。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,而且使程序某一部分的重复利用成为可能。数据库
1.Model(模型层)编程
这一层封装的是一系列的实体类,用于封装业务逻辑和数据模型,一般对应这一层中的实体类对应于数据库中相应的表,而咱们作的一些j2ee的网站所操做的对象就封装成实体放在这一层中。这也是MVC核心之所在。设计模式
2.View(视图层)浏览器
这一层主要是指用于和用户进行交互的界面,用户能够经过这一层来对数据进行一些增删改查的操做,在咱们所编写的网站程序中,这一层一般对应的是jsp,asp,html等用于进行前台页面表现的数据层。服务器
3.Controller(控制器层)架构
这一层是处理用户操做,对用户在视图层进行的操做进行接收,并经过相应的业务逻辑,完成对model层中数据的增删改查,更新数据库的数据。框架
应用MVC模式最典型就是j2ee中的 jsp + servlet +javaBean。它使应用程序的输入、处理和输出分开,下降程序的耦合性,增长了程序复用性。 jsp
Model层:实现系统的业务逻辑,即javaBean部分
View层:负责与用户交互,即在界面上展现数据对象给用户,即html,jsp
Control层:Model与View之间沟通的桥梁,它能够分派用户的请求并选择恰当的视图以用于显示,同时它也能够解释用户的输入并将它们映射为模型层可执行的操做,固然就是Servlet的职责了。
优势:
1.下降耦合性
视图层和业务层分离,这样就容许更改视图层代码而不用从新编译模型和控制器代码,一样,一个应用的业务流程或者业务规则的改变只须要改动MVC的模型层便可。由于模型与控制器和视图相分离,因此很容易改变应用程序的数据层和业务规则。
2.可重用性提升
随着技术的不断进步,须要用愈来愈多的方式来访问应用程序。MVC模式容许使用各类不一样样式的视图来访问同一个服务器端的代码,由于多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),好比,用户能够经过电脑也可经过手机来订购某样产品,虽然订购的方式不同,但处理订购产品的方式是同样的。因为模型返回的数据没有进行格式化,因此一样的构件能被不一样的界面使用。
3.可维护性高
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
缺点:
1.没有明确的定义
没有一家公司敢说本身的MVC是最标准的,MVC只是一种模式,并无明确的定义。
2.不适合小型、中等规模的程序
花费大量时间将MVC应用到规模并非很大的应用程序一般会得不偿失。
3.增长系统结构和实现的复杂性
对于简单的界面,严格遵循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 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制