MVC即就是:模型(MODEL),视图(VIEW),控制器(CONTROLLER)。
M主要处理业务逻辑和数据。
V即界面,如用HTML做等,或其他 的,
C就是控制器,协调VIEW和MODEL。
具体细节,你可以找相关的资料看看。

解决方案 »

  1.   

    m ----model-----javabean写---提供访问和维护数据的方法
    v ----view-----jsp写  页面  显示层
    c ----controller------servlet写----逻辑控制
      

  2.   

    MVC设计模式早在面向对象语言Smalltalk-80中就被提出并在此后得到业界
    的广泛接受。它包括三类对象(1)模式(Model)对象:是应用程序的主
    体部分.(2)视图(View)对象:是应用程序中负责生成用户界面的部分。
    (3)控制器(Control)对象:根据用户的输入,控制用户界面数据显示及
    更新Model对象状态的部分。
        模型:封装应用程序状态,响应状态查询,应用程序功能,通知视图改变
        视图:解释模型,模型更新请求,发送用户输入给控制器,允许控制器选择视图
        控制器:定义应用程序行为,用户动作映射成模型更新,选择响应的视图
      

  3.   

    概述
    本文主要从概念上讲解什么是struts framework,它的框架结构,组件结构,以及简单的配置讲解。对于其应用请参考后面的“struts安装及应用”和“struts实用案例分析”。
    文章的包括了如下四大部分:
    一、 Framework的概念和体系简介 (Framework Conception and Architecture)
    二、 Struts的概念和体系结构(Struts Conception and Architecture)
    三、 Struts的工作原理和组件(Struts Componennts)
    四、 Struts配置文件简介(Struts Deployment Description)一、 Framework概念
    一直以来我们都说struts是一个web framework。那么让我么先来看看什么是Framework。(我想用“框架”一词来翻译framework,可是后来越来越发现不太理想和完备,所以就直接用Framework一词)
    Framework概念并不是很新了,伴随着软件开发的发展,在多层的软件开发项目中,可重用、易扩展的,而且是经过良好测试的软件组件,越来越为人们所青睐。这意味着人们可以将充裕的时间用来分析、构建业务逻辑的应用上,而非繁杂的代码工程。于是人们将相同类型问题的解决途径进行抽象,抽取成一个应用框架。这也就是我们所说的Framework。
    Framework的体系提供了一套明确机制,从而让开发人员很容易的扩展和控制整个framework开发上的结构。 通常,framework的结构中都有一个“命令和控制”组件("command and control" component)——Framework Factory and Manager。图片(2):Framework体系
    通过基于请求响应(Request-Response)模式的应用framework,基本上有如下几个表现逻辑结构组成。
    (1)控制器(Controller)——控制整个framework中各个组件的协调工作。
    (2)业务逻辑层(Business Logic)——这是framework所希望解决问题的关键。当然对framwork本身来说,这里仅仅只是概念和几个提够服务的基础组件,真正的实现与客户的业务逻辑接轨,还需要开发人员在framework上再次扩展。
    (3)数据逻辑层(Data Logic)——绝大应用系统都需要涉及到数据交互,这一层次主要包括了数据逻辑和数据访问接口。对于数据逻辑来说,如果你了解数据建模(Data Modeling)可能就很容易理解。 下面就进入我们的正题——Struts的结构二、 Struts的概念和体系结构
    Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。根据上面对framework的描述,我们很容易理解为什么说Struts是一个web framwork,而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。
    Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件想结合。2.1 Struts的与Web App的关系既然struts叫做web framework,那么其肯定主要基于web层的应用系统开发。按照J2EE Architecture的标准,struts应当和jsp/servlet一样,存在于web container一层。如图片(3)所显示
    图片(3): Struts与WebApp的关系2.2 Struts的体系结构
    我们说struts framework是MVC 模式的体现,下面我们就从分别从模型、视图、控制来看看struts的体系结构(Architecture)。图片(4)显示了struts framework的体系结构响应客户请求时候,各个部分工作的原理。
    图片(4):Struts体系结构2.2.1从视图角度(View)
    主要由JSP建立,struts自身包含了一组可扩展的自定义标签库(TagLib),可以简化创建用户界面的过程。目前包括:Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags 这几个Taglib。有关它们的详细资料请参考struts用户手册
    2.2.2从模型角度(Model)
    模型主要是表示一个系统的状态(有时候,改变系统状态的业务逻辑操作也也划分到模型中)。在Struts中,系统的状态主要有ActiomForm Bean体现,一般情况下,这些状态是非持久性的。如果需要将这些状态转化为持久性数据存储,Struts本身也提供了Utitle包,可以方便的与数据库操作
    2.2.3 从控制器角度(Controller)
    在Struts framework中, Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。其中,Action扮演了真正的业务逻辑的实现者,而ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行方向。2.3 Struts的基本组件包
    整个struts大约有15包,近200个类所组成,而且数量还在不断的扩展。在此我们不能一一介绍,只能列举几个主要的简要的介绍一下。下表说明了目前struts api中基本的几个组件包,包括action,actions,config,util,taglib,validator。图片(5)则显现了这几个组件包之间的关系。其中action是整个struts framework的核心
    org.apache.struts.action
    基本上,控制整个struts framework的运行的核心类、组件都在这个包中,比如我们上面提到的控制器ActionServlet。已经Action,ActionForm,ActionMapping等等。struts1.1比1.0多了 DynaActionForm 类。增加了动态扩展生成FormBean功能
    org.apache.struts.actions
    这个包是主要作用是提供客户的http请求和业务逻辑处理之间的特定适配器转换功能,而1.0版本中的部分动态增删FromBean的类,也在struts1.1中被Action包的DynaActionForm组件所取代
    org.apache.struts.config
    提供对配置文件struts-config.xml元素的映射。这也是sturts1.1中新增的功能
    org.apache.struts.util
    Strtuts为了更好支持web application的应用,体统了一个些常用服务的支持,比如Connection Pool和Message Source。详细信息请参考http://jakarta.apache.org/struts/api/org/apache/struts/util/package-summary.html
    org.apache.struts.taglib
    这不是一个包,而是是一个客户标签类的集合。下面包括Bean Tags,HTML Tags,Logic Tags,Nested Tags,Template Tags这几个用于构建用户界面的标签类。
    org.apache.struts.validator
    Struts1.1 framework中增加了validator framework,用于动态的配置from表单的验证。详细信息请参阅 http://home.earthlink.net/~dwinterfeldt/大家不妨把事情看得简单一下。Struts是基于MVC的,于是我们有:
    Controller---------------------Action,这个Struts提供了默认实现的几个类
    我们做的只不过实现action类中的execute()方法了事,所谓的控制请求流向,除了struts本身
    给我们做好的基础工作(也是最重要的)外,实际上如何控制这些request走向,还是我们自己来完成的,这就是在execute中体现出来,我们不是用return ActionForward来么?
    View---------------------------太简单了,我们都这么想,其实不是拉,好多人把ActionForm看作Model的一部分,实际上我觉得这个和view是密切相关的,因为它是一个容器,是用来暂时存储
    页面请求数据的小罐子罢了。是一个简单的静态bean。因此我们做的数据库操作等等,不在这个地方实现,也不再Action的execute中实现,而是在稍后所说的Model中实现。
    Model--------------------------我靠,struts居然什么都没有做,还自称可以支持什么ejb,jdo,corba等等,对,实际上就是这样。所谓的“商业逻辑”,靠,太文雅了,就是实现数据库操作,复杂的事物逻辑操作的“雅称”罢了。struts不提供model部分的任何实现,是显示给我们提供了一个设计的天地,因为我们的整个系统设计过程中,就是要实现“商业逻辑”的,不是么?所以呢,要做的话,Model部分就应该是重中之重了,不要小看他。
    因此,总结一句话,Action就是关门槛的,view管外交的,Model吗,份内事,搞好内部的安定团结,由action和view去吧。
      

  4.   

    cuihao(java_豆) 解释的不错!
      

  5.   

    MVC模式
    模型-视图-控制器(Model-View-Controller,MVC)模式比较的特别,含义比较的广,涉及的层面也不仅仅是设计这一块,不能简单的把它归为设计模式。当然,它主要还是作为一个设计的概念被提到的,在J2EE体系中,MVC有着至关重要的作用。所谓MVC,是一种划分系统功能的方法,它将一个系统划分为三个部分:
    模型(Model):封装的是数据源和所有基于对这些数据的操作。在一个组件中,Model往往表示组件的状态和操作状态的方法。
    视图(View):封装的是对数据源Model的一种显示。一个模型可以由多个视图,而一个视图理论上也可以同不同的模型关联起来。
    控制器(Controller):封装的是外界作用于模型的操作。通常,这些操作会转发到模型上,并调用模型中相应的一个或者多个方法。一般Controller在Model和View之间起到了沟通的作用,处理用户在View上的输入,并转发给Model。这样Model和View两者之间可以做到松散耦合,甚至可以彼此不知道对方,而由Controller连接起这两个部分。
    使用MVC的好处,一方面,数据和表示分离,使得添加或者删除一个用户视图变得很容易,甚至可以在程序执行时动态的进行。Model和View能够单独的开发,增加了程序了可维护性,可扩展性,并使测试变得更为容易。 另一方面,将控制逻辑和表现界面分离,允许程序能够在运行时根据工作流,用户习惯或者模型状态来动态选择不同的用户界面。
    在J2EE的几个核心技术中,EJB,JavaBean,JSP/Servlet,SessionBean,EntityBean
    构成了J2EE构架的基石。JSP能够生成HTML,WML甚至XML,它对应于Web应用程序中的View部分。EJB作为数据库与应用程序的中介,提供了对数据的封装。一般EntityBean封装的是数据,SessionBean是封装的是对数据的操作。这两个部分合起来,对应于Web应用程序的Model部分。在技术上,JSP能够直接对EJB进行存取,但这种方法会混淆程序中的显示逻辑和控制逻辑,使得JSP的重用性能降低。这通常有两种解决方法,通过JavaBean或者Servlet作为中介的控制逻辑,对EJB所封装的数据进行存取。这时,JavaBean或者Servlet对应于Web引用程序中的Controller部分。两种类型的Controller各有其优缺点:JSP同Servlet的交互不容易规范化,使得交互的过程变得复杂,但是Servlet可以单独同用户交互,实际上JSP的运行时状态就是Servlet;而由于JavaBean的规范性,JSP同JavaBean的交互变得容易,利用JavaBean的get/set方法,JSP不需要过多的语句就可以完成数据的存取,这能够让JSP最大限度的集中在其视图功能上。根据不同的问题背景,可以选取不同的Controller,有时候也可以两者混合使用,或者直接在Servlet中调用JavaBean。
    在实现中,用户请求被发送到一个控制器servlet上,该servlet决定请求的性质,并且根据请求的类型传送给适合的处理器。每个处理器都和一个特别的模型相关,里面封装有商业逻辑来执行一些特别的函数集合。处理完毕后,结果会发送回处理器,处理器选择适合的视图显示它。在J2EE中,MVC是一个大的框架,这时我们往往把它不再看作为设计模式,而是作为体系结构模式的一个应用了。