MVC框架知识详解

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

✅作者简介热爱国学的Java后端开发者修心和技术同步精进。
🍎个人主页Java Fans的博客
🍊个人信条不迁怒不贰过。小知识大智慧。
💞当前专栏Java案例分享专栏
✨特色专栏国学周更-心性养成之路
🥭本文内容MVC框架知识详解

文章目录

在这里插入图片描述

1.1 MVC概念

  MVC开始是存在于桌面程序中的M是指业务模型V是指用户界面C则是控制器使用MVC的目的是将M和V的实现代码分离从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步一旦M改变V应该同步更新。

  MVC又称为编程模式是一种软件设计思想将数据操作、页面显示、业务逻辑分为三个层级模块独立完成相互调用

  • 模型层Mode
  • 视图View
  • 控制层Controller

1.2 MVC模式详解

MVC并不是Java独有的现在几乎所有的B/S的结构都采用了MVC模式

  • 视图View视图是用户看到并与之交互的界面比如HTML静态资源JSP动态资源等等
  • 控制器Controller控制器即使控制请求的处理逻辑对请求进行处理负责流程跳转转发和重定向
  • 模型Model对客观世界的一种代表和模拟业务模拟、对象模拟

在这里插入图片描述

  M 即model模型是指模型表示业务规则。在MVC的三个部件中模型拥有最多的处理任务。被模型返回的数据是中立的模型与数据格式无关这样一个模型能为多个视图提供数据由于应用于模型的代码只需写一次就可以被多个视图重用所以减少了代码的重复性。

  V 即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生它只是作为一种输出数据并允许用户操作的方式。

  C 即controller控制器是指控制器接受用户的输入并调用模型和视图去完成用户的需求控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求然后再确定用哪个视图来显示返回的数据。

1.3 框架内容

  MVC指MVC模式的某种框架它强制性地使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。

在这里插入图片描述

1.3.1 视图

  视图是用户看到并与之交互的界面。对老式的Web应用程序来说视图就是由HTML元素组成的界面在新式的Web应用程序中HTML依旧在视图中扮演着重要的角色但一些新的技术已层出不穷它们包括Adobe Flash和像XHTMLXML/XSL,WML等一些标识语言和Web services.
MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生不管这些数据是联机存储的还是一个雇员列表作为视图来讲它只是作为一种输出数据并允许用户操纵的方式。

1.3.2 模型

  模型表示企业数据和业务规则。在MVC的三个部件中模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库被模型返回的数据是中立的就是说模型与数据格式无关这样一个模型能为多个视图提供数据由于应用于模型的代码只需写一次就可以被多个视图重用所以减少了代码的重复性。

1.3.3 控制器

  控制器接受用户的输入并调用模型和视图去完成用户的需求所以当单击Web页面中的超链接和发送HTML表单时控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求然后再确定用哪个视图来显示返回的数据。

1.4 优缺点

1.4.1 优点

1.耦合性低
  视图层和业务层分离这样就允许更改视图层代码而不用重新编译模型和控制器代码同样一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离所以很容易改变应用程序的数据层和业务规则。

2.重用性高
  MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码因为多个视图能共享一个模型它包括任何WEBHTTP浏览器或者无线浏览器wap比如用户可以通过电脑也可通过手机来订购某样产品虽然订购的方式不一样但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化所以同样的构件能被不同的界面使用。

3.部署快生命周期成本低
  MVC使开发和维护用户接口的技术含量降低。使用MVC模式使开发时间得到相当大的缩减它使程序员Java开发人员集中精力于业务逻辑界面程序员HTML和JSP开发人员集中精力于表现形式上。

4.可维护性高
  分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。

1.4.2 缺点

1.完全理解MVC比较复杂。
  由于MVC模式提出的时间不长加上同学们的实践经验不足所以完全理解并掌握MVC不是一个很容易的过程。

2.调试困难。
  因为模型和视图要严格的分离这样也给调试应用程序带来了一定的困难每个构件在使用之前都需要经过彻底的测试。

3.不适合小型中等规模的应用程序
  在一个中小型的应用程序中强制性的使用MVC进行开发往往会花费大量时间并且不能体现MVC的优势同时会使开发变得繁琐。

4.增加系统结构和实现的复杂性
  对于简单的界面严格遵循MVC使模型、视图与控制器分离会增加结构的复杂性并可能产生过多的更新操作降低运行效率。

5.视图与控制器间的过于紧密的连接并且降低了视图对模型数据的访问
  视图与控制器是相互分离但却是联系紧密的部件视图没有控制器的存在其应用是很有限的反之亦然这样就妨碍了他们的独立重用。

  依据模型操作接口的不同视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问也将损害操作性能。

1.5 MVC在框架中应用

1.5.1 Struts框架

  Struts是Apache软件基金下Jakarta项目的一部分。Struts框架的主要架构设计和开发者是Craig R.McClanahan。Struts 是Java Web MVC框架中不争的王者。经过长达九年的发展Struts已经逐渐成长为一个稳定、成熟的框架并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring MVC、Webwork2这些设计更精密扩展性更强的框架Struts受到了前所未有的挑战。但站在产品开发的角度而言Struts仍然是最稳妥的选择。

  Struts有一组相互协作的类组件、Servlet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准可以说是MVC设计模式的一种变化类型。根据上面对framework的描述很容易理解为什么说Struts是一个web framework而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。Struts有其自己的控制器Controller同时整合了其他的一些技术去实现模型层Model和视图层View。在模型层Struts可以很容易的与数据访问技术相结合包括EJBJDBC和Object Relation Bridge。在视图层Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件相结合。

1.5.2 Spring框架

  Spring实际上是Expert One-on-One J2EE Design and Development 一书中所阐述的设计思想的具体实现。在One-on-One 一书中Rod Johnson倡导J2EE实用主义的设计思想并随书提供了一个初步的开发框架实现interface21 开发包。而Spring 正是这一思想的更全面和具体的体现。Rod Johnson 在interface21 开发包的基础之上进行了进一步的改造和扩充使其发展为一个更加开放、清晰、全面、高效的开发框架。

  Spring是一个开源框架由Rod Johnson创建并且在他的著作《J2EE设计开发编程指南》里进行了描述。它是为了解决企业应用开发的复杂性而创建的。Spring使使用基本的JavaBeans来完成以前只可能由EJB完成的事情变得可能了。然而Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言任何Java应用都可以从Spring中受益。
简单来说Spring是一个轻量的控制反转和面向切面的容器框架。当然这个描述有点过于简单。但它的确概括出了Spring是做什么的。

1.5.3 ZF框架

  Zend Framework(简写ZF)是由 Zend 公司支持开发的完全基于 PHP5 的开源PHP开发框架可用于开发 Web 程序和服务ZF采用 MVC(Model–View-Controller) 架构模式来分离应用程序中不同的部分方便程序的开发和维护。

1.5.4 .NET框架

  .NET MVC是微软官方提供的以MVC模式为基础的.NET Web应用程序(Web Application)框架,它由Castle的MonoRail而来(Castle的MonoRail是由java而来),目前最新版本是.N 4.5。

1.6 三层架构与MVC

1.6.1 三层架构

  View层表示|页面层、Service层业务逻辑层、DAO层数据访问层

在这里插入图片描述

1.6.2 MVC与三层架构的区别

  • MVC强调的是视图和业务代码的分离。严格的说MVC其实关注的是Web层。View就是单独的页面如JSP、HTML等不负责业务处理只负责数据的展示。而数据封装到Model里有Controller负责在V和M之间传递。MVC强调业务和视图分离。
  • 三层架构是“数据访问层”、“业务逻辑层”、“表示层”指的是代码之间的解耦、方便维护和复用。

1.7 框架和设计模式的区别

MVC是一种设计模式。

  框架、设计模式这两个概念总容易被混淆其实它们之间还是有区别的。框架通常是代码重用而设计模式是设计重用架构则介于两者之间部分代码重用部分设计重用有时分析也可重用。在软件生产中有三种级别的重用内部重用即在同一应用中能公共使用的抽象块;代码重用即将通用模块组合成库或工具集以便在多个应用和领域都能使用应用框架的重用即为专用领域提供通用的或现成的基础结构以获得最高级别的重用性。

  框架与设计模式虽然相似但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述它比框架更抽象框架可以用代码表示也能直接执行或复用而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素一个框架中往往含有一个或多个设计模式框架总是针对某一特定应用领域但同一模式却可适用于各种应用。可以说框架是软件而设计模式是软件的知识。

框架模式有哪些
  MVC、MTV、MVP、CBD、ORM等等

框架有哪些
  C++语言的QT、MFC、gtkJava语言的SSH 、SSIphp语言的 smarty(MVC模式)python语言的django(MTV模式)等等

设计模式有哪些
  工厂模式、适配器模式、策略模式等等

  简而言之框架是大智慧用来对软件设计进行分工设计模式是小技巧对具体问题提出解决方案以提高代码复用率降低耦合度。


  码文不易本篇文章就介绍到这里如果想要学习更多Java系列知识点击关注博主博主带你零基础学习Java知识。与此同时对于日常生活有困扰的朋友欢迎阅读我的第四栏目《国学周更—心性养成之路》学习技术的同时我们也注重了心性的养成。

在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6