JAVA-WEB

#1、MVC设计模式 所谓MVC,即Model-View-Controllerhtml

1)Model层:Model指模型部分,应用对象;通常在应用中Model层包括业务处理层和数据访问层。数据访问层主要是对数据库的一些操做的封装。业务处理层应用JavaBean构建, JavaBean主要是用做将从View层获取的数据和数据库的数据进行桥接。模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。模型与数据格式无关,这样一个模型能为多个视图提供数据。因为应用于模型的代码只需写一次就能够被多个视图重用,因此减小了代码的重复性。java

2)Controller层:Controller指控制器部分,逻辑处理、控制实体数据在视图上展现、调用模型处理业务请求;通常是对View层提交的请求为其设置对应的Servlet进行特定功能的处理,接受用户的输入并调用模型和视图去完成用户的需求。Controller通常只是在Web应用中充当一个中介者的做用。web

3)View层:View指视图部分,数据的展示;这一部分的内容是展现给用户实际进行交互的,一般使用JSP和HTML进行构建。spring

输入图片说明
在 MVC 模式中,Web 用户向服务器提交的全部请求都由控制器接管。接受到请求以后,控制器负责决定应该调用哪一个模型来进行处理;而后模型根据用户请求进行相应的业务逻辑处理,并返回数据;最后控制器调用相应的视图来格式化模型返回的数据,并经过视图呈现给用户。数据库

优势:编程

  • 低耦合性
    视图层和业务层分离,这样就容许更改视图层代码而不用从新编译模型和控制器代码
  • 高重用性和可适用性
    改变视图层的实现方式,而控制层和模型层无需作任何改变
  • 较低的生命周期成本
    MVC使开发和维护用户接口的技术含量下降
  • 快速的部署
  • 可维护性
    分离视图层和业务逻辑层也使得WEB应用更易于维护和修改
  • 模型的可移植性
    模型是独立于视图的,因此能够把一个模型独立地移植到新的平台工做。须要作的只是在新平台上对视图和控制器进行新的修改
  • 有利于软件工程化管理
    因为不一样的层各司其职,每一层不一样的应用具备某些相同的特征,有利于经过工程化、工具化管理程序代码
  • 潜在的框架结构
    能够基于此模型创建应用程序框架,不只仅是用在设计界面的设计中

缺点:设计模式

  • 增长了系统结构和实现的复杂性
    对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增长结构的复杂性,并可能产生过多的更新操做,下降运行效率;
  • 视图与控制器间的过于紧密的链接
    视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是颇有限的,反之亦然,这样就妨碍了他们的独立重用;
  • 视图对模型数据的低效率访问
    依据模型操做接口的不一样,视图可能须要屡次调用才能得到足够的显示数据。对未变化数据的没必要要的频繁访问,也将损害操做性能;

MVC属于架构/框架设计模式,即观察者模式,策略模式,组合模式等JAVA面向对象设计模式的组装; 框架(Framework)是一组协同工做的类,它们为特定类型的软件构筑了一个可重用的设计缓存

框架的特性:安全

  • 在应用方面,框架是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;在目标方面,框架是可被应用开发者定制的应用骨架;
  • 框架是一种软件,是应用程序的半成品。它能够供系统开发者选用,以完成系统的开发;
  • 框架解决的是某个特定范围即领域的问题。每一个框架都有本身的目标领域,它并不能知足全部人的全部需求;

#2、MVC框架 1)jsp+servlet+javabean:适用于比较小的项目springboot

2)struts1,webWork(xwork1 ,webWork2),dwr3

3)struts2
工做原理图:
输入图片说明

参考文献:http://blog.csdn.net/laner0515/article/details/27692673/

4)springMVC 工做原理图:
输入图片说明

输入图片说明

参考文献:http://blog.csdn.net/zuoluoboy/article/details/19766131

对比
输入图片说明

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
参考文献:
http://blog.csdn.net/gstormspire/article/details/8239182
http://blog.csdn.net/chenleixing/article/details/44570681

#3、RESTFUL REST 是一种思惟方式,而非协议或标准。它是设计基于命名资源而非消息的松耦合应用程序 — 一般指面向 Web 的应用程序 — 的一种风格;

REST “强调组件交互的可伸缩性、界面的广泛性、独立部署组件以及使用中间组件来减小交互延迟,加强安全性并封装遗留系统”。RESTful构建的系统具备高度的可伸缩性,同时与底层数据松散耦合;并且能够很好地利用缓存;

若是开发者在开发过程当中能坚持 REST 原则,将能够获得一个使用了优质 Web 架构的系统,从而为系统提供更好的可伸缩性,并下降开发难度。关于 REST 架构的主要原则以下:

  • 网络上的全部事物均可被抽象为资源(Resource)。
  • 每一个资源都有一个惟一的资源标识符(Resource Identifier)。
  • 同一资源具备多种表现形式。
  • 使用标准方法操做资源。
  • 经过缓存来提升性能。
  • 对资源的各类操做不会改变资源标识符。
  • 全部的操做都是无状态的(Stateless)。

参考文献:http://www.ibm.com/developerworks/cn/java/j-lo-struts2rest/

springboot
play framework
webwork

相关文章
相关标签/搜索