`
rimoer
  • 浏览: 103411 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

用Struts建立MVC应用的介绍

 
阅读更多

1.Model 1 和Model 2简介

  我们在开发Web应用时经常提到的一个概念是Model 1/Model 2,那么到底它是什么意思呢?其实它是对采用JSP技术构成Web应用的不同模型的描述。下面对这个概念做一个简单的介绍。

  Model 1

  在使用JAVA技术建立Web应用的实例中,由于JSP技术的发展,很快这种便于掌握和可实现快速开发的技术就成了创建Web应用的主要技术。JSP页面中可以非常容易地结合业务逻辑(jsp:useBean)、服务端处理过程(jsp:scriplet)和HTML(<html>),在JSP页面中同时实现显示,业务逻辑和流程控制,从而可以快速地完成应用开发。现在很多的Web应用就是由一组JSP页面构成的。这种以JSP为中心的开发模型我们可以称之为Model 1。

  当然这种开发模式在进行快速和小规模的应用开发时,是有非常大的优势,但是从工程化的角度考虑,它也有一些不足之处:

  1. 应用的实现一般是基于过程的,一组JSP页面实现一个业务流程,如果要进行改动,必须在多个地方进行修改。这样非常不利于应用扩展和更新。
  2. 由于应用不是建立在模块上的, 业务逻辑和表示逻辑混合在JSP页面中没有进行抽象和分离。所以非常不利于应用系统业务的重用和改动。

  考虑到这些问题在开发大型的Web应用时必须采用不同的设计模式――这就是Model2

  Model 2

  Model 2 表示的是基于MVC模式的框架。MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。从而弥补了Model 1的不足。

  Model 2具有组件化的优点从而更易于实现对大规模系统的开发和管理,但是开发MVC系统比简单的JSP开发要复杂许多,它需要更多的时间学习和掌握。同时新东西的引入会带来新的问题(这让我想起来关于"自动计算"的一篇文章,中间提到为了降低系统的复杂度,却导致更高的复杂度)。

  1. 必须基于MVC组件的方式重新思考和设计应用结构。原来通过建立一个简单的JSP页面就能实现的应用现在变成了多个步骤的设计和实现过程。
  2. 所有的页面和组件必须在MVC框架中实现,所以必须进行附加地开发工作。

  MVC本身就是一个非常复杂的系统,所以采用MVC实现Web应用时,最好选一个现成的MVC框架,在此之下进行开发,从而取得事半功倍的效果。现在有很多可供使用的MVC框架,由于Struts有完整的文档并且相对来讲比较简单,所以用它开发MVC系统还是比较方便地。

  2.Struts的结构和处理流程简介

  Struts是Apache组织的一个项目,像其他的Apache组织的项目一样,它也是开放源码项目。Struts是一个比较好的MVC框架提供了对开发MVC系统的底层支持,它采用的主要技术是ServletJSP和custom tag library。获取它的使用版本和具体信息可以查阅http://jakarta.apache.org/网站。

  Struts框架的基本构成由下图所示:


图 1 struts uml图

  作为一个MVC的框架,Struts对Model、View和Controller都提供了对应的实现组件,对应上面的UML图,分别进行介绍,并且看看它们是如何结合在一起的。

  1. Controller:控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结果送回到客户端。在Struts中Controller功能由图中ActionServlet和ActionMapping对象构成:核心是一个Servlet类型的对象ActionServlet,它用来接受客户端的请求。ActionServlet包括一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个具体的Model部分中Action处理器对象之间的映射。
  2. Model: MVC系统中的Model部分从概念上可以分为两类――系统的内部状态,和改变系统状态的动作。Struts为Model部分提供了Action和ActionForm对象:所有的Action处理器对象都是开发者从Struts的Action类派生的子类。Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View组件以产生响应。Struts提供的ActionForm组件对象,它可以通过定义属性描述客户端表单数据。开发者可以从它派生子类对象,利用它和Struts提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action处理器对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互。通过ActionForm组件对象实现了对View和Model之间交互的支持。Struts通常建议使用一组JavaBean表示系统的内部状态,根据系统的复杂度也可以使用像Entity EJB 和 Session EJB等组件来实现系统状态。Struts建议在实现时把"做什么"(Action)和"如何做"(业务逻辑)分离。这样可以实现业务逻辑的重用。
  3. View:Struts应用中的View部分是通过JSP技术实现的。Struts提供了自定义的标记库可以使用,通过这些自定义标记可以非常好地和系统的Model部分交互,通过使用这些自定义标记创建的JSP表单,可以实现和Model部分中的ActionForm的映射,完成对用户数据的封装,同时这些自定义标记还提供了像模板定制等多种显示功能。

  Struts框架的处理流程清楚的体现了MVC系统的特点,简单的Struts组件结构如图2所示。Struts Controller ActionServlet处理客户请求,利用配置的ActionMapping对象把请求映射到Action处理器对象进行处理。Action处理对象访问ActionForm中的数据,处理和响应客户请求,它还调用后台的Bean组件,这些组件封装了具体的业务逻辑。Action处理器对象根据处理结果通知Controller,Controller进行下一步的处理。


图2 Struts框架的组件结构图

  3.利用Struts框架开发MVC系统要做的工作

  由于Struts已经为我们提供了一个非常好的MVC框架,我们利用Struts开发MVC系统时可以大大加快开发的速度。在开发时可以采用的一个开发流程如下(引自资料3):

  1. 收集和定义应用需求。
  2. 基于数据采集和显示的原则定义和开发"屏幕显示"需求 。
  3. 为每一个"屏幕显示"定义访问路径。
  4. 定义ActionMappings建立到应用业务逻辑之间的联系。
  5. 开发满足"屏幕显示"需求的所有支持对象。
  6. 基于每一个"屏幕显示"需求提供的数据属性来创建对应的ActionForm对象
  7. 开发被ActionMapping调用的Action对象。
  8. 开发应用业务逻辑对象 (Bean,EJB,等等)。
  9. 对应ActionMapping设计的流程创建JSP页面。
  10. 建立合适的配置文件struts-config.xml , web.xml。
  11. 开发/测试/部署

  具体在使用Struts框架时,对应各个部分的开发工作主要包括:

  1. Model部分:采用JavaBean和EJB组件,设计和实现系统的业务逻辑。根据不同的请求从Action派生具体Action处理对象。完成"做什么"的任务来调用由Bean构成的业务组件。创建由ActionForm 的派生类实现对客户端表单数据的封装。
  2. Controller部分:Struts为我们提供了核心控制部分的实现。我们只需要配置ActionMapping对象
  3. View部分:为了使用Model中的ActionForm 对象,我们必须用Struts提供的自定义标记创建HTML 表单。利用Struts提供的自定义标记库编写用户界面把应用逻辑和显示逻辑分离。Struts框架通过这些自定义标记建立了View和Model之间的联系。Struts的自定义标记还提供了很多定制页面的功能。
  4. 同时需要编辑两个配置文件:web.xml和struts-config.xml。通过它们配置Struts系统中的各个模块之间的交互。下面对这两个配置文件做一些介绍:

  web.xml文件的配置:

  web应用中的web.xml是第一个要配置的地方,它描述了系统的Controller对象。在web.xml中增加如下标记

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>application</param-name>
······
</servlet>

  说明:这个servlet对象就是Struts提供的Controller,还可以为它指定初始化参数,比如对系统应用属性的支持。

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servelt-mapping>

  说明:实现客户请求的url信息和服务器端具体处理的映射关系。

<taglib>
<taglib-url>/WEB-INF/struts-bean.tld</taglib-url>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
·······

  说明:添加对Struts提供的应用所使用的自定义标记库的引用。

  struts-config.xml文件的配置:

  struts-config.xml是用于建立Controller和Model之间的关系的。它描述了Controller所使用的把请求对应到具体处理的法则,同时它还描述了客户提供的数据与ActionForm组件的对应映射关系。

  在struts-config.xml中增加如下标记

<form-beans>
<form-bean name="loginForm" type="loginForm" />
</form-beans>

  说明:<form-bean>标记描述一个具体的ActionForm子类对象,通过它和JSP页面中的自定标记的结合使用可以实现ActionForm和View之间的数据映射。

<action-mappings>
<action
path="/login"
type="loginAction"
name="loginForm"
input="/login.jsp" ··· />
</action-mappings>

  说明:<action-mappings>标记描述了请求和处理的一对一映射关系。input和path属性唯一的标记了客户端的一个请求,name属性描述封装客户端的数据的ActionForm子类对象。Type属性描述处理这个请求的Action子类对象。

  通过对两个配置文件的配置,把Struts框架中MVC的各个部分联系起来,实现一个真正的MVC系统。

  4.可供参考的例子

  编写一个好的例子演示是比较占篇幅的,可以从http://jakarta.apache.org/ 下载Struts最新的发表包,在这个包中有详细的用户帮助和API文档,还有非常好的演示程序可供参考。具体的安装步骤可以参考附带的文档。参考这些例子可以很快地理解如何利用struts框架开发MVC系统。


1.Model 1 和Model 2简介
  我们在开发Web应用时经常提到的一个概念是Model 1/Model 2,那么到底它是什么意思呢?其实它是对采用JSP技术构成Web应用的不同模型的描述。下面对这个概念做一个简单的介绍。
  Model 1
  在使用JAVA技术建立Web应...
分享到:
评论

相关推荐

    用Struts建立MVC应用的介绍.doc

    在探讨如何利用Struts建立MVC(Model-View-Controller)应用之前,我们首先需要澄清两个概念——Model1和Model2,这是理解和运用Struts的关键。 ##### Model1:单一职责与局限性 Model1是最基本的Web开发模型,其...

    Struts基于MVC的Java Web设计的实例

    学习Struts框架,你需要理解MVC模式的基本原理,掌握如何创建Action类和ActionForm,编写struts-config.xml配置文件,以及如何使用JSP页面显示数据。此外,还需要了解Servlet和JSP的基础知识,因为Struts是建立在...

    Struts1.0 开发指南 多个文档

    Struts1.0学习文档-初学者入门.doc Struts,MVC 的一种开放源码实现.doc Struts.doc Struts标记库.doc Struts开发指南之J2EE n层结构.doc Struts开发指南之MVC架构.doc ...用Struts建立MVC应用的介绍.doc

    struts-MVC.zip_873322com

    以下将详细介绍Struts框架和MVC模式,以及它们在实际开发中的应用。 Struts框架是Apache软件基金会下的一个开源项目,它提供了构建动态、数据驱动的Web应用的结构。Struts将应用程序的控制逻辑从业务逻辑和表示层...

    Struts+Hibernate实现MVC_strutsmvc.rar

    在Java Web应用中,使用Struts作为前端控制器,处理用户请求,而Hibernate则作为ORM(对象关系映射)工具,管理数据库操作。下面将详细阐述这两个框架的结合以及在MVC架构中的作用。 **1. Struts框架** Struts是...

    [其他类别]Struts+Hibernate实现MVC_strutsmvc.zip

    在这个【其他类别]Struts+Hibernate实现MVC_strutsmvc.zip】文件中,我们可以看到一个利用这两个框架构建的MVC应用实例。 Struts是一个开源的MVC框架,它的主要职责是处理HTTP请求,控制应用程序的流程,并将数据...

    [其他类别]Struts+Hibernate实现MVC_strutsmvc.rar

    Struts和Hibernate是Java Web开发中的两个重要框架,它们在构建MVC(Model-View-Controller)架构的应用程序中起到关键作用。这个压缩包“[其他类别]Struts+Hibernate实现MVC_strutsmvc.rar”包含了一套使用Struts和...

    通信与网络中的浅谈STRUTS框架应用对于Web服务扩展的作用

    使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。  1 Struts框架应用模式  1)建立在MVC这种公认...

    基于Struts 2 MVC框架的新闻汇聚站的设计与开发-开题报告

    **实现方法**涉及使用SQL Server建立数据库,通过Visual Studio 2005和C#进行前端开发,使用ADO技术连接数据库,以及Struts 2 MVC框架和JAVA WEB技术进行后台逻辑处理。 开发环境包括PC机作为硬件基础,软件环境为...

    struts2.0开发环境的搭建及HelloWorld的演示

    Struts2.0 是一个基于 MVC(Model-View-Controller)设计模式的开源框架,用于构建企业级的Java Web应用程序。本教程将详细介绍如何在MyEclipse 6.5.0 GA环境中搭建Struts2.0开发环境并实现一个简单的"HelloWorld...

    基于Lucene的搜索引擎在Struts中的应用.pdf

    Struts是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,广泛应用于Java EE平台。它提供了高度可维护、可扩展、可移植和组件可复用的特性,使得开发人员能够构建出结构清晰、易于维护的企业级Web应用...

    Struts+Hibernate实现MVC

    在Java Web应用开发中,结合使用Struts和Hibernate可以构建出高效、可维护的系统。下面我们将深入探讨这两个框架的核心概念、工作原理以及如何协同工作来实现MVC模式。 **Struts框架** Struts是Apache软件基金会的...

    IntelliJ IDEA 2017建立简单的struts 2

    Struts2是一个基于MVC模式的开源Web应用框架,允许开发人员设计遵循MVC架构的应用程序。本文档详细阐述了如何使用IntelliJ IDEA 2017版本来创建一个基于Struts2的简单用户登录界面项目。 首先,文档指出在开始建立...

    struts资料

    9. **使用Struts建立MVC应用**: 创建一个基于Struts的MVC应用通常包括以下几个步骤:设置项目结构、配置struts-config.xml、编写Action和ActionForm、设计JSP页面、部署并测试应用。 总之,Struts作为一个成熟的...

    MyEclipse开发基于MVC 模式的WEB应用实例讲解

    本文档将详细介绍如何使用MyEclipse IDE开发一个基于MVC模式的Web应用,并以地址簿(Addressbook)应用为例,深入探讨其设计与实现过程。 #### 二、开发步骤 在MyEclipse中开发基于MVC模式的Web应用通常包括以下五个...

Global site tag (gtag.js) - Google Analytics