JAVA-WEB

#一、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
工作原理图:
输入图片说明

参考文献:http://blog.youkuaiyun.com/laner0515/article/details/27692673/

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

输入图片说明

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

#三、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

转载于:https://my.oschina.net/u/1446182/blog/789524

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值