#一、MVC设计模式 所谓MVC,即Model-View-Controller
1)Model层:Model指模型部分,应用对象;一般在应用中Model层包括业务处理层和数据访问层。数据访问层主要是对数据库的一些操作的封装。业务处理层应用JavaBean构建, JavaBean主要是用作将从View层获取的数据和数据库的数据进行桥接。模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
2)Controller层:Controller指控制器部分,逻辑处理、控制实体数据在视图上展示、调用模型处理业务请求;一般是对View层提交的请求为其设置对应的Servlet进行特定功能的处理,接受用户的输入并调用模型和视图去完成用户的需求。Controller一般只是在Web应用中充当一个中介者的作用。
3)View层:View指视图部分,数据的展现;这一部分的内容是展示给用户实际进行交互的,通常使用JSP和HTML进行构建。
在 MVC 模式中,Web 用户向服务器提交的所有请求都由控制器接管。接受到请求之后,控制器负责决定应该调用哪个模型来进行处理;然后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并通过视图呈现给用户。优点:
- 低耦合性 视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码
- 高重用性和可适用性 改变视图层的实现方式,而控制层和模型层无需做任何改变
- 较低的生命周期成本 MVC使开发和维护用户接口的技术含量降低
- 快速的部署
- 可维护性 分离视图层和业务逻辑层也使得WEB应用更易于维护和修改
- 模型的可移植性 模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改
- 有利于软件工程化管理 由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码
- 潜在的框架结构 可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中
缺点:
- 增加了系统结构和实现的复杂性 对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率;
- 视图与控制器间的过于紧密的连接 视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用;
- 视图对模型数据的低效率访问 依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能;
MVC属于架构/框架设计模式,即观察者模式,策略模式,组合模式等JAVA面向对象设计模式的组装; 框架(Framework)是一组协同工作的类,它们为特定类型的软件构筑了一个可重用的设计
框架的特性:
- 在应用方面,框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;在目标方面,框架是可被应用开发者定制的应用骨架;
- 框架是一种软件,是应用程序的半成品。它可以供系统开发者选用,以完成系统的开发;
- 框架解决的是某个特定范围即领域的问题。每个框架都有自己的目标领域,它并不能满足所有人的所有需求;
#二、MVC框架 1)jsp+servlet+javabean:适用于比较小的项目
2)struts1,webWork(xwork1 ,webWork2),dwr3
3)struts2
工作原理图:参考文献:
4)springMVC 工作原理图:
参考文献:
对比
1)struts1和struts2
- struts2=struts1+webwork2
- Struts1的一个普遍问题是使用抽象类编程而不是接口,而struts2的Action是接口
- Struts1 Action是单例模式,Struts2 Action对象为每一个请求产生一个实例,因此没有线程安全问题
- Struts1 Action 依赖于Servlet API,Struts 2 Action不依赖于容器,允许Action脱离容器单独被测试
- Struts2 在请求对象捕获输入/绑定,表达式语言上,校验等方面要优于Struts1
2)struts2和springMVC
参考文献:#三、RESTFUL REST 是一种思维方式,而非协议或标准。它是设计基于命名资源而非消息的松耦合应用程序 — 通常指面向 Web 的应用程序 — 的一种风格;
REST “强调组件交互的可伸缩性、界面的普遍性、独立部署组件以及使用中间组件来减少交互延迟,增强安全性并封装遗留系统”。RESTful构建的系统具有高度的可伸缩性,同时与底层数据松散耦合;而且可以很好地利用缓存;
如果开发者在开发过程中能坚持 REST 原则,将可以得到一个使用了优质 Web 架构的系统,从而为系统提供更好的可伸缩性,并降低开发难度。关于 REST 架构的主要原则如下:
- 网络上的所有事物都可被抽象为资源(Resource)。
- 每个资源都有一个唯一的资源标识符(Resource Identifier)。
- 同一资源具有多种表现形式。
- 使用标准方法操作资源。
- 通过缓存来提高性能。
- 对资源的各种操作不会改变资源标识符。
- 所有的操作都是无状态的(Stateless)。
参考文献: