MVC模式在Java web 应用程序的实现

一、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实现了视图逻辑和业务逻辑的彻底分离。

 

 

    

时间: 2024-11-09 16:09:09

MVC模式在Java web 应用程序的实现的相关文章

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

MVC简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创

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

MVC作为软件架构中及其重要的一种架构思想,在实际的java web项目开发中被开发者们广泛的应用.遵循MVC思想的所产生的解决方法也可以因实际情况的不同来进行不同的选择.这里以一个应用struts+hibernate+jsp的实例来进一步认识MVC. 学生管理系统中添加学生模块的的MVC架构: Model(系统的业务逻辑):Hibernate进行管理的数据实体+定义的业务逻辑的体现--------数据库操作类,也就是通常所说的Dao层 数据实体(PO,Entity): package PO;

MVC模式在Java Web应用程序中的实例

1.可用性 使用SimpleMappingExceptionResolver实现异常处理 只需要在Spring的配置文件applicationContext.xml中增加以下内容: <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">        <property name="defaultErrorView" value=&q

MVC在Java Web应用程序中的实现

一.MVC简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑. Model(模型)是应用程序中用于处理应用程序数据逻辑的部分. 通常模型对象负责在数据库中存取数据. View(视图)是应用程序中处理数据显示的部分. 通常视图是依据模型数据创建的. C

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

Tomcat中部署Java Web应用程序的方式

Tomcat中部署Java Web应用程序的几种方式: #PetWeb是工程名 1.在TOMCAT_HOME\conf\server.xml文件的HOST节点中加入 <Context docBase="F:/workspaces/PetWeb" reloadable="false" path="/Pet"/> 其中reloadable="false"表示当应用程序中的内容发生更改之后服务器不会自动加载,这个属性在开

Java Web 应用程序的字符编码问题

  Java Web 应用程序经常会出现乱码的情况,这里可以通过 Servlet API 中的标准 Filter 来实现,也可以在 Web 容器配置 URIEncoding.这些都依赖于浏览器的请求方式. 在 Web 容器的配置文件中配置 URIEncoding = "UTF-8" 使用 Servlet API 的标准 Filter 结果 地址栏中直接输入链接(含汉字) √ × 失败(编码成功) 地址栏中直接输入链接(含汉字) × √ 失败(编码成功) 地址栏中直接输入链接(含汉字)

java web start程序部署感慨

由于刚学习java,很多地方不懂,今天看到java web start方式部署程序然后就把自己的java程序打包成jar可执行的.新建了.jnlp文件,里面xml也写好了.然后把jar文件和jnlp文件放在了tomcat的webapps里面.在浏览器访问jnlp文件然后运行后发现程序无法运行,找了两个小时居然没找到.fuck!!!,最后实在是不知道咋解决了,问了下旁边同事,2秒钟告诉我哪里有问题了(我把utf-8写成了uft-8)我顿时想自杀的想法,大爷的,找了半天没找到问题原因,可能还是自己没

Tomcat中部署Java Web应用程序

在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署. 一.静态部署 静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问.以下3中方式都可以部署: 1.将PetWeb目录拷贝到$CATALINA_HOME\webapps下,然后启动服务器就可以了.这种方式比较简单,访问地址如下:http://localhost:8080/PetWeb/ 2.这种方式可以不必将PetWeb目录拷贝到webapps下,直接在F:\部署.方法如下