博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA-WEB
阅读量:6258 次
发布时间:2019-06-22

本文共 2328 字,大约阅读时间需要 7 分钟。

hot3.png

#一、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)。

参考文献:

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

你可能感兴趣的文章
Ajax核心技术之XMLHttpRequest
查看>>
使用T4模板生成不同部署环境下的配置文件
查看>>
如何把Json格式字符写进text文件中
查看>>
Linux: xclip,pbcopy,xsel用法 terminal 复制粘帖 (mac , ubuntu)
查看>>
[SVN(Ubuntu)] SVN 查看历史详细信息
查看>>
技术出身能做好管理吗?——能!
查看>>
抽象工厂模式
查看>>
如何折叠一段代码使整个代码看起来简洁
查看>>
Quartz2D绘制路径
查看>>
Java知多少(30)多态和动态绑定
查看>>
JDBC操作数据库
查看>>
Android中RelativeLayout的字符水平(垂直居中)对齐
查看>>
--@angularJS--独立作用域scope绑定策略之&符策略
查看>>
乾坤合一~Linux设备驱动之USB主机和设备驱动
查看>>
Python IDLE快捷键【转载合集】
查看>>
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound
查看>>
[C++] string与int, float, double相互转换
查看>>
ubuntu14.04安装chrome
查看>>
oracle中查询含字母的数据[正则表达式]
查看>>
1002. 写这个号码 (20)(数学啊 ZJU_PAT)
查看>>