一、MVC简介

  MVC(Model-View-Controller)模型-视图-控制器,最早由Trygve Reenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。

  • Model: 用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。模型有对数据直接访问的权力,例如对数据库的访问。模型不依赖视图和控制器,也就是说, M模型不关心它会被如何显示或是如何被操作。但是模型中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发生的改变。
  • View:能够实现数据有目的的显示。在视图中一般没有程序上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型,因此应该事先在被它监视的数据那里注册。
  • Controller:起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据模型上的改变

  在Smalltalk-80中的应用程序编程中:如何使用模型 - 视图 - 控制器(MVC) [Burbeck92],史蒂夫·伯贝克( Steve Burbeck)描述了MVC的两个变体:一个被动模型和一个主动模型。

  • 被动模型:当一个控制器专门操纵模型时,采用被动模型。控制器修改模型,然后通知视图模型已更改并应更新。这种情况下的模型完全独立于视图和控制器,这意味着模型无法报告其状态的变化。HTTP协议就是这个例子。在浏览器中没有简单的方法从服务器获取异步更新。浏览器显示视图并响应用户输入,但不检测服务器上数据的更改。只有当用户显式请求刷新时,服务器被询问才能进行更改。

  

  • 主动模型:当模型在没有控制器参与的情况下改变状态时,使用主动模型。当其他来源更改数据并且更改必须反映在视图中时,可能会发生这种情况。考虑股票代码显示。您可以从外部来源收到股票数据,并希望在股票数据发生变化时更新视图(例如,股票行情和警报窗口)。因为只有模型检测到它们发生时内部状态的变化,所以模型必须通知视图来刷新显示。

  

二、Java web 应用程序的常用组件

  1.Serverlet

    Servlet运行于Web容器中,如Tomcat,它可以被Web容器动态加载,接收浏览器请求,调用其他组件处理请求,然后把处理结果返回。当浏览器访问某个Servlet时,        Web容器将会创建一个ServletRequest对象和ServletResponse对象,并且把用户的请求信息封装在ServletRequest对象中。然后把这两个对象作为参数传输给Servlet的         特定方法中。在该方法中处理请求,把处理结果封装在ServletResponse对象中,返回给Web容器。最后Web容器把结果返回到浏览器去解析、显示。

  2.Jsp

    JSP是一种动态网页技术。它把HTML页面中加入Java脚本,以及JSP标签构成JSP文件。当浏览器请求某个JSP页面时,Tomcat会把JSP页面翻译为Java文件。然后将它         编译为class文件,接着执行它,把生成的HTML页面返回到客户端显示。

  3.JavaBean

    JavaBeans是Java中一种特殊的类,可以将多个对象封装到一个对象(bean)中。 特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属性。

  4.EJB

    企业级JavaBean(Enterprise JavaBean, EJB)是一个用来构筑企业级应用的服务器端可被管理组件。Java企业版API(Java Enterprise Edition)中提供了对EJB的   规范。EJB是一个封装有某个应用程序之业务逻辑服务器端组件。

  5.Web服务器和应用服务器

    Web服务器用来处理HTTP请求,并返回HTTP数据。它主要用来和浏览器进行交互,给用户提供服务。应用服务器可以被Web服务器调用,进行业务逻辑的处理。它返回      的数据被Web服务器组织为HTML格式,然后返回到浏览器去解析。

三、java web 的解决方案(开发方法)

  1.JSP+JavaBean:该模式将业务逻辑与页面表现进行分离,在一定程度上增加了程序的可调试性和维护性。简单,适合小型项目的快速构建与运行。

  2.JSP+javaBean+Serverlet:JSP作为视图,来表现页面;Servlet作为控制器,控制程序的流程并调用业务进行处理;JavaBean封装了业务逻辑。遵循了MVC设计模式。

  3.JSP+Struts:成熟的MVC开发框架。

  4.Spring:建立在核心模块之上,嫩够适应于多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑清晰的分离。

  5.JSP+Struts+Hibernate:利用Struts的MVC设计模式,与Hibernate持久化对象组成的开发方案。

  6.JSP+Struts+Spring+Hibernate:Struts负责表示层,Spring负责逻辑层的业务, Hibernate持久层中数据库的操作,组成的开发方案。

四、常用的java web的MVC框架

  1.Struts2:Struts 是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品.

  2.Spring MVC:Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts1,Struts2等.

  3.Grails:Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架。

  4.JSF:JavaServer Faces (JSF) 是一种用于构建Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。由于由Java Community Process (JCP) 推动,属于Java EE 5中的技术规范,而受到了厂商的广泛支持。

  5.Tapestry:Tapestry并不是一种单纯的MVC框架,它更像MVC框架和模板技术的结合,它不仅包含了前端的MVC框架,还包含了一种视图层的模板技术,使用Tapestry完全可以与Servlet/JSP API分离,是一种非常优秀的设计。 通过使用Tapestry,开发者完全不需要使用JSP技术,用户只需要使用Tapestry提供的模板技术即可,Tapestry实现了视图逻辑和业务逻辑的彻底分离。

 

 

    

转载于:https://www.cnblogs.com/Againzg/p/6753355.html

MVC模式在Java web 应用程序的实现相关推荐

  1. MVC模式 在Java Web应用程序中的实现

    一.MVC简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分 ...

  2. MVC模式在Java Web应用程序中的实例分析

    结合六个基本质量属性: 可用性:网站出现异常时,能记录故障,且进行通知,能够在有限时间内重新恢复正常 可修改性:进行修改的情况下,能对其它组件减少影响,比如工具类的修改,只需要到这一个地方进行修改,且 ...

  3. java web里实现 mvc_MVC模式在Java Web应用程序中的实现

    一.MVC简介: MVC架构是一个复杂的架构,其实现也显得非常复杂..Views可以看作一棵树,可以用Composite Pattern来实现.Views和Models之间的关系可以Observer  ...

  4. java web mvc_构建Java Web应用程序时遵循MVC的三个步骤

    java web mvc 第1步 做 始终通过servlet / action bean处理URL(POST表单,单击链接等),而不是通过JSP处理 为什么 ActionBeans(无论某些框架调用那 ...

  5. 构建Java Web应用程序时遵循MVC的三个步骤

    步骤1 做 始终通过servlet / action bean处理URL(POST表单,单击链接等),而不是通过JSP处理 为什么 ActionBeans(无论某些框架调用那些类),而servlet很 ...

  6. 使用Hibernate和Spring构建Java Web应用程序

    这篇文章将展示如何在Spring环境中使用带有Hibernate ORM的MYSQL DB创建学生注册应用程序. 这是一个简单的应用程序,旨在在注册过程中从用户收集输入详细信息,将这些详细信息保存在M ...

  7. 使用MyBatis和Spring构建Java Web应用程序

    这篇文章将展示如何在Spring环境中使用带有MyBatis框架的MYSQL DB创建学生注册应用程序. 这是一个简单的应用程序,旨在在注册期间从用户收集输入详细信息,将详细信息保存在MYSQL DB ...

  8. 使用Spring的Hibernate构建Java Web应用程序

    这篇文章将展示如何在Spring环境中使用带有Hibernate ORM的MYSQL DB创建学生注册应用程序. 这是一个简单的应用程序,旨在在注册期间从用户收集输入详细信息,将详细信息保存在MYSQ ...

  9. 使用 Stripes、MyBatis 和 Derby 创建 Java Web 应用程序

    在本教程中,我们将使用 Stripes.MyBatis 和 Derby 创建一个 Java Web 应用程序.我们使用 NetBeans 来构建应用程序.Apache Tomcat 用作 JSP 和 ...

  10. Java Portlet 工具:将 Java Web 应用程序转换为自适型 Portlet--page1

    Java Portlet 工具:将 Java Web 应用程序转换为自适型 Portlet 作者 Andrew Lorek 05/30/2006 译者: 墩子 摘要 这篇文章介绍了如何将工作于门户以外 ...

最新文章

  1. MySQL5.5和MySQL5.6授权区别
  2. A - Supercentral Point CodeForces - 165A
  3. 标准W3C盒子模型和IE盒子模型CSS布局经典盒子模型(转)
  4. linux 自动备份脚本
  5. 简单的函数(也叫方法)
  6. 电大计算机应用基础试卷号2007,电大计算机应用基础(试卷版)计算机试卷7.doc...
  7. 借势炒作?巴菲特午宴中标者孙宇晨怼完王小川再怼王思聪:靠爹的骂靠自己的...
  8. 定位导航方案在特殊环境下的适用说明
  9. 北京大学联合复旦大学发布中文空间语义理解评测SpaCE2021
  10. NOD32 AntiVirus v2.70.16杀毒软件
  11. python利器的使用-python开发利器之ulipad的使用实践
  12. 超逼真AI设计师,谷歌大脑推出新的文本生成图像模型Imagen
  13. 网吧服务器是起什么作用的,网吧服务器的用途是什么?
  14. java 中英日期转换器_Java SimpleDateFormat中英文时间格式化转换详解
  15. 微信小程序—带qq表情的评论输入框
  16. 折半查找平均长度公式推导
  17. vos3000 更换ip具体操作方法
  18. 基于原生JS写的异形轮播图--效果如网易云、QQ音乐播放器中轮播图
  19. 前端文字下划线的模拟
  20. window系统使用 bash 新建 vue3+ts 项目以及 preset 模板使用

热门文章

  1. 求多个数最小公倍数的一种变换算法
  2. jquery name选择器_【百战程序员从开始到植发】之jquery
  3. mysql表不存在但实际存在_历史上有哪些实际上并不存在的人物但很多人相信他存在的?...
  4. 【CF1355E】Restorer Distance(整数三分)--附整数/浮点三分模板
  5. 【LA4992】Jungle Outpost(半平面交+二分)
  6. 画面逐渐放大_故宫一幅800年古画,放大55倍,4个老人喝醉了?
  7. 容器技术Docker K8s 5 容器技术在阿里巴巴落地历程
  8. 算法:螺旋矩阵算出N行N列的数组Spiral Matrix II
  9. centos6配置mysql5.7_CentOS 6.7 下 MYSQL 5.7 的安装与配置
  10. 在执行某个行为时,其大脑是否产生了对应的稳定脑神经模式映射?如果存在稳定映射,是否能运用机器学习方法发现未知行为神经回路?