|
Xml与web编程开发方法
摘要:本文主要对XML技术和基于组件驱动的Web编程技术进行了说明和分析。 XML技术作为现今最流行的可扩展置标语言,基于XML的系统,具有方便、灵活和扩展性强等优点。 基于组件的开发是现今软件复用理论实用化的研究热点,在组件的支持下,通过复用已有的构件,软件开发者可以“即插即用”地快速构造应用软件。这样不仅可以节省时间和经费,提高工作效率,而且可以产生更加规范、更加可靠的软件。而基于组件驱动的Web编程,开发WEB应用的过程中最常用的框架是模型—视窗—控制器(MVC)框架,它减弱了业务逻辑接口和数据接口之间的耦合程度,让视图层更加富于变化。
Abstract:This paper mainly driven by XML technology and Web-based programming techniques for description and analysis. As of this moment, the most popular XML Extensible Markup Language, XML-based system is convenient, flexible and extensible etc. Web-based and driven programming, the process of Web application development framework is the most commonly used model-Windows-Controller (MVC) framework, it weakened the business logic and data adapter to the coupling between the adapters so that more richly varied View layer.
1、 XML技术概述 1.1 XML技术背景介绍 “可扩展标记语言”(XML)提供一种描述结构化数据的方法。与主要用于控制数据的显示和外观的HTML标记不同,XML标记用于定义数据本身的结构和数据类型。 XML使用一组标记来描绘数据元素。每个元素封装可能十分简单也可能十分复杂的数据。您可以定义一组无限制的XML标记。 XML是一种简单、与平台无关并被广泛采用的标准。XML相对于HTML的优点是它将用户界面与结构化数据分隔开来。 1.2 XML的优点 使用XML来交换信息有很多好处,包括下列方面: 使用人的语言而不是计算机语言。XML便于阅读且容易理解,即使对于初学者亦是如此,它与HTML编码一样容易。 与Java完全兼容且完全可以移植。(在任何操作系统上)可以何应用程序都可以使用您的信息。 可扩展。创建您自己的标记或使用别人创建的标记,这些标记使用您的域的基本语言、具有您需要的属性,且对您和您的用户都很有意义。 XML标记名便于阅读,且表达了数据的含义。每个XML标记就位于相关联数据的前面,这样人和计算机都可以容易地识别信息结构。数据结构遵循显而易见且有用的模式,使得处理和交换数据更容易。 1.3 XML基础 1.3.1 XML的术语 1.Element(元素) 元素在HTML我们已经有所了解,它是组成HTML文档的最小单位,在XML中也一样。一个元素由一个标识来定义,包括开始和结束标识以及其中的内容,就像这样:<author>John</author>。唯一不同的就是在HTML中,标识是固定的,而在XML中,标识需要你自己创建。 2.Tag(标识) 标识是用来定义元素的。在XML中,标识必须成对出现,将数据包围在中间。标识的名称和元素的名称是一样的。例如这样一个元素:<author>John</author>其中<author>就是标识。 3.Attribute(属性) 属性是对标识进一步的描述和说明,一个标识可以有多个属性。XML中的属性与HTML中的属性是一样的,每个属性都有它自己的名字和数值,属性是标识的一部分,就像这样:<author sex="male">John</author>。 XML中属性也是自己定义的,我们建议你尽量不使用属性,而将属性改成子元素,原因是属性不易扩充和被程序操作。 4.Declaration(声明) 在所有XML文档的第一行都有一个XML声明。这个声明表示这个文档是一个XML文档,它遵循的是哪个XML版本的规范。一个XML的声明语句就像这样:<?xml version="1.0"?>。 1.3.2 XML语法 1.3.2.1 XML语法规则 规则1:必须有XML声明语句 声明是XML文档的第一句,其格式如下: <?xml version="1.0"standalone="yes/no” encoding="UTF-8"?> 声明的作用是告诉浏览器或者其它处理程序:这个文档是XML文档。声明语句中的version表示文档遵守的XML规范的版本;standalone表示文档是否附带DTD文件,如果有,参数为no;encoding表示文档所用的语言编码,默认是UTF-8。 规则2:是否有DTD文件 如果文档是一个"有效的XML文档",那么文档一定要有相应DTD文件,并且严格遵守DTD文件制定的规范。DTD文件的声明语句紧跟在XML声明语句后面,格式如下: <!DOCTYPE type-of-doc SYSTEM/PUBLIC"dtd-name"> 其中: “!DOCTYPE”是指你要定义一个DOCTYPE; “type-of-doc”是文档类型的名称,由你自己定义,通常与DTD文件名相同; “SYSTEM/PUBLIC”这两个参数只用其一。SYSTEM是指文档使用的私有DTD文件的网址,而PUBLIC则指文档调用一个公用的DTD文件的网址。 “dtd-name”就是DTD文件的网址和名称。所有DTD文件的后缀名为“.dtd”。 规则3:注意你的大小写 在XML文档中,大小写是有区别的。在写元素时,前后标识大小写要保持一致。 规则4:给属性值加引号 在HTML代码里面,属性值可以加引号,也可以不加。但是在XML中则规定,所有属性值必须加引号(可以是单引号,也可以是双引号),否则将被视为错误。 规则5:所有的标识必须有相应的结束标识 在HTML中,标识可能不是成对出现的。而在XML中规定,所有标识必须成对出现,有一个开始标识,就必须有一个结束标识,否则将被视为错误。 规则6:所有的空标识也必须被关闭 空标识就是标识对之间没有内容的标识。在XML中,规定所有的标识必须有结束标识,针对这样的空标识,XML中处理的方法是在原标识最后加/,就可以了。
1.3.2.2元素的语法 元素由一对标识以及其中的内容组成。元素的名称和标识的名称是一样的。标识可以用属性来进一步描述。在XML中没有任何保留字,所以可以用任何词语来作为元素名称。但是必须遵守下列规范: 1.名称中可以包含字母、数字以及其它字母; 2.名称不能以数字或“_”(下划线)开头; 3.名称不能以字母xml(或XML或Xml……)开头; 4.名称中不能包含空格; 5.名称中间不能包含“:”(冒号)。
1.3.2.3注释的语法原文是www.bysj999.com提供整理设计 注释是为了便于阅读和理解,在XML文档添加的附加信息,将不会被程序解释或则浏览器显示。注释的语法如下: <!--这里是注释信息-->
1.3.2.4 CDATA的语法 CDATA全称character data,翻译为字符数据。我们在写XML文档时,有时需要显示字母,数字和其它的符号本身,比如"<",而在XML中,这些字符已经有特殊的含义,我们怎么办呢?这就需要用到CDATA 语法格式如下: <![CDATA[这里放置需要显示的字符]]> 例如:<![CDATA[<AUTHOR sex="male">John</AUTHOR>]]>在页面上显示为:“<AUTHOR sex="male">John</AUTHOR>”。
1.3.2.5 Namespaces的语法 Namespaces翻译为名字空间。名字空间有什么作用呢?当我们在一个XML文档中使用他人的或者多个DTD文件,就会出现这样的矛盾: 因为XML中标识都是自己创建的,在不同的DTD文件中,标识名可能相同但表示的含义不同,这就可能引起数据混乱。比如在一个文档<table>wood table</table>中<table>表示桌子,而在另一个文档<table>namelist</table>中<table>表示表格。如果我需要同时处理这两个文档,就会发生名字冲突。了解决这个问题,我们引进了namespaces这个概念。namespaces通过给标识名称加一个网址(URL)定位的方法来区别这些名称相同的标识。Namespaces同样需要在XML文档的开头部分声明, 声明的语法如下: <document xmlns:yourname='URL'> 其中yourname是由你定义的namespaces的名称,URL就是名字空间的网址。假设上面的"桌子<table>"文档来自http://www.zhuozi.com,我们就 可以声明为 <document xmlns:zhuozi='http://www.zhuozi.com'> 然后在后面的标识中使用定义好的名字空间: <zhuozi:table>wood table</table> 这样就将这两个<table>区分开来。注意的是:设置URL并不是说这个标识真的要到那个网址去读取,仅仅作为一种区别的标志而已。
1.3.2.6 entity的语法 entity翻译为"实体"。它的作用类似word中的"宏",也可以理解为DW中的摸板,你可以预先定义一个entity,然后在一个文档中多次调用,或者在多个文档中调用同一个entity。entity可以包含字符,文字等等,使用entity的好处在于:1.它可以减少差错,文档中多个相同的部分只需要输入一遍就可以了。2.它提高维护效率。比如你有40个文档都包含copyright的entity,如果需要修改这个copyright,不需要所有的文件都修改,只要改最初定义的entity语句就可以了。 XML定义了两种类型的entity。一种是我们这里说的普通entity,在XML文档中使用;另一种是参数entity,在DTD文件中使用。 entity的定义语法为: <!DOCTYPE filename[ <!ENTITY entity-name"entity-content"> ] > 例如我要定义一段版权信息: <!DOCTYPE copyright[ <!ENTITY copyright"Copyright 2001,John.All rights reserved"> ] > 如果我的版权信息内容和他人共享一个XML文件,也可以使用外部调用的方法,语法像这样: <!DOCTYPE copyright[ <!ENTITY copyright SYSTEM"http://www.exa.com/copyright.xml"> ] > 定义好的entity在文档中的引用语法为:&entity-name; 例如,上面定义的版权信息,调用时写作?Copyright; 完整的例子如下,你可以copy下来存为copyright.xml观看实例: <?xml version="1.0"encoding="GB2312"?> <!DOCTYPE copyright[ <!ENTITY copyright"Copyright 2001,John.All rights reserved"> ]> <myfile> <title>XML</title> <author>ajie</author> <email>ajie@aolhoo.com</email> <date>20010115</date> ©right; </myfile> 3.3.2.7 Schema的语法 XML Schema是Microsoft指定的技术规范它是基于XML-data和DCD的。 DTD使用了一种特殊的规范来定义在各种文件中使用XML标记的规范。但是,有些常用的限制不能用DTD来表述。这就需要使用Schema,它的很多情况下的作用和DTD差不多。但它的功能要超过DTD。 XML Schema是用来描述XML元素和属性的。它基本上包括属性和元素类型说明,可以为XML元素和属性提供内容模块。Schema相对与DTD的明显不同是XML Schema文档本身也是XML文档,而不像DTD一样使用特殊格式。这给用户带来了三个好处: 不需要知道两种语法来编写语法合格的XML Schema。 软件工具可以利用XML文档和Schema之间的语法通用这一点为两者提供支持。 作为XML文档,XML Schema能够扩展出去。能向XML Schema中加入元素和属性。只要元素和属性名域不同,它们在一个Schema中是合法的,这个大大方便了用户和开发者,因为他们可以使用相同的工具来处理XML Schema和其它XML信息,而不必专门为Schema使用特殊工具。 Schema定义的数据类型要比DTD全面。DTD值允许把内容类型定义为一个字符串。XML Schema允许把内容类型定义为整型、浮点型、数据型、布尔型或者许多其它的简单数据类型。如果想要编写一个应用软件来处理某个值为整型的元素内容,在DTD的例子中必须把它转换为整型,而在Schema例子中,可以直接得到那个整数值。 XML Schema集成了名域,允许文档的特殊节点与Schema中的类型说明联系起来。联系XML节点和DTD的唯一方法是通过DOCTYPE说明。这是有限的,因为每个文档实例只能用一个DTD。多个Schema可以来描述一个XML文档,因为XML Schema自身不描述XML文档,它描述XML元素。 Schema的优势以及它的可以扩充的能力使它成为描述数据的最佳的选择之一。 下面列出了Schema的一些例子: <ElementType name="SetId"minOccnrs="1"max0ccurs="*"> //表示该元素出现次数大于1 <ElementType name="Sehiame"Content="textOnly"> //表示该元素仅包括文本不含有子元素 <ElementType name="Price"order="seq"> //表示所列的子元素必须安升序出现 1.3.3 用XSL显示XML文档 XML是一种元标记语言,没有许多固定的标记,为WEB开发人员提供了更大的灵活性。使用XML我们可以做到自定义标记,用标记表明内容的含义。这样在Internet上交流资料时,为用计算机处理文档提供了极大的方便。然而,由于XML并没有为标记规定显示方式,我们无法在浏览器中看到以诸如表格方式显示的XML文档。为了解决这个问题,XML可以采用以下两种技术:CSS与XSL。但使用CSS来格式化XML文档的效果交不令人满意,而XSL则是专门为了XML所设计的样式表。 XSL包含两大部分:XSLT和XSL Formatting Object。XSLT(XSL31 Transformations)一种用来转换XML文件的语言。XSL Formatting Object:一组用来格式化(排版)语意的词汇。 XSL转换XML分为两个步骤: (1)XSL处理器首先要做的是通过分析器(DOM或SAX)技术读取XML标记及数据。当浏览器通过XML DOM对象读取到XML的树状结构与数据后,将XML树状结构重新排行组合后产生一个暂时的数状结构,这个树状结构称为结果树。在这个结果树产生后,若又出现了新的标记或数据,必须把它一起并入结果树。 (2)结果树也是树状结构,可以利用DOM技术访问结果树的数据,其中数据以节点方式显示,并且预留一个记录样式的位置。XSL处理其中的程序将这些数据转换为另一种Well-Formed XML文件(如:WML、HTML、VoiceXML等)。 1.3.4 DOM技术 DOM是对XML开发者相当重要的,对于XML应用开发来说就是一个对象化的XML数据接口。最基本的XML开发通常都要使用它。简单说,DOM就是一组对象的集合,通过操纵这些对象,我们就能操纵XML和HTML数据。 DOM全称是Document Object Model,人如其名,DOM就是一个文档对象组成的模型,它不光用于XML,最先是起于HTML的。对作过Web开发的人,特别是写过动态DHTML的人,应该对HTML中的文档对象有一定概念,DOM就是这样一个对象模型的标准。 DOM另外又是一个接口,一个与语言无关的接口,应用通过这个接口来和XML或HTML内的数据打交道。无论是在浏览器里,还是在浏览器外,在服务器上,还是客户端,我们只要用XML就会碰到DOM。 1.DOM的来由 为什么要定义这样一个接口呢?这样讲吧,我们知道数据库有标准的ODBC/JDBC这样的接口规范,那么我们使用XML数据如果没有一个统一的接口,我们写程序是不是要每个人都要自己去处理XML的语法细节,如果我们手头有XML的语法分析器(有人译为解析器),它也必然有一个接口让我们通过它访问XML数据,所有语法分析器的接口如果都不相同,我们开发就必须针对某一个分析器,如果换了分析器,程序就必须重写。 到这里,又和数据库有可比性了,我们编数据库应用可以不管后面的数据库系统究竟是ORACLE还是SYBASE,或INFORMIX,是因为有了ODBC,所以要是我们做XML应用开发,就应该有一个统一的XML数据接口,这个接口就是DOM。 2.DOM的三部分 目前的DOM分为核心(core)、HTML、XML三部分。 核心:这部分是结构化文档比较底层的对象的集合,但他们就已经可以表达出任何HTML和XML文件了。 HTML和XML:这两部分是专为XML和HTML提供的另外的高级接口,使操纵者两类文件更方便。 3.DOM组成 图1.1是DOM的整体组成图,给出了DOM模型基本组成的概念。

4.文件树 DOM中的最基本对象应该就是Node了。从它又派生出许多类型的node。所有这些node组成一棵文件树,它包含了XML或HTML文档的几乎全部信息。 在结构化文档中,信息是按层次化的树形结构组织的。所以结构化文档的模型的组织也必然是树形的。 Node简单的说,就是上面树形结构中的节点,但对XML来说还包括其他XML语法相关的节点,包括XML声明,文件类型声明,处理指令等等。 Node提供一些基本属性和操作,各种类型的Node则继承Node的属性和操作,同时有各自特殊的属性和操作。比如ElementNode。 5.基本对象 上面已经讲了DOM中最基本的对象就是节点,它的接口定义如下:从NODE派生出的几个比较重要的节点类型有Document、Element、Attribute、Text。Document是DOM树的根,它代表一个完整的XML文档。它会有一些自己的子节点,至少应该有一个文档元素的子节点,这个节点类型为Element,是XML文件最外层的根元素,此外他还可能有DocumentType(唯一),ProcessingInstruction,Comment这几种作为子节点。Element代表XML元素,是最常用的节点,它可以组成以它为根的DOM的子树。他还可以有Element子节点,以及Attribut,Text,ProcessingInstruction,CDATASection,Comment子节点。Attribute是XML元素的属性,它的父节点必然是Element,它的子节点有Text和EntityReference。 除了Node,DOM里还有两个比较重要的对象: NodeList它实现的一个节点的序列,用于表示有顺序关系的一组节点,比如某个节点的孩子节点序列,它还出现在一些方法的返回值中,例如GetNodeByName。NamedNodeMap它表示的是一组节点和其唯一的名字的对应关系,这个对象主要用在属性节点的表示上。 1.4 XML与数据库 XML的特性使之成为在线和离线数据的共同语言。 现在的问题是,怎样管理XML标记的数据。一种可行的方法是用数据库对XML进行存储、检索和操作,即把XML标记的数据收入一个框架中,在一种更容易管理、更系统化、更为人们所熟悉的环境中完成搜索、分析、更新和成果输出工作。 目前有两种不同的观点:一种观点认为,只有以XML原始的格式存储XML的数据库才能称为XML数据库;另一种观点认为,只要能存入和检出XML,且它本身又是一个数据库,那它就是一个XML数据库,而不必考虑数据是怎样存入的。而我们认为,凡内部不是以XML格式存储的XML数据库,叫做“XML-enabled数据库”;如果内部以XML格式存储数据,就称为“native-XML数据库”。使用现有的数据库类型和产品而不是以原始格式来存储XML,是出自以下几种考虑:首先,普通的关系数据库和面向对象数据库己尽人皆知,而native-XML数据库是新的;其次,人们熟知现有的关系数据库和面向对象数据库,也了解它们的行为和性能,因此他们不愿意转向native-XML数据库,因为其性能,特别是可伸缩性尚未经过检验;最后,在企业看来,选择关系数据库和面向对象数据库是比较安全的,使用新的native-XML数据库具有一定的风险。 现在己经有一些能够很好地处理XML的XML-enabled数据库,并且是由久经考验的关系数据库和面向对象数据库担此重任。这些数据库在收到XML后,将其分解为字段并按通常的方式存储它们,当检索XML时,这些字段再被拼接成原状。在关系数据库中处理XML数据时,可用第三方中间件进行转换,如XML-DBMS,这是一种基于Java Database Connectivity(JDBC)的工具,可以在XML文档和数据库之间传输数据。但是,利用关系数据库和面向对象数据库存储XML也有很大的缺点,例如,XML最具吸引力的特性之一是其分层结构,而关系数据库却将XML映射成关系表,从而将XML结构变成了平面的行和列。另外,遇到大型或复杂文档时,在XML与数据库之间进行来回转换要耗费相当多的处理时间,从而降低了Web页面的生成速度。 目前,native-XML数据库已经开始出现,尽管人们还不能完全信任它,但的确有一些native-XML数据库开始在实际应用中受到得青睐。另外,主流的数据库厂商也可能在适当的时机推出自己的native-XML数据库产品。 第一个,可能也是最有名的商用native-XML数据库是位于美国加州的SoftwareAG公司开发的Tamino。除了可以存储和访问XML外,Tamino多项功能,包括Open Database Connectivity、符合Unicode要求、HTTP通信以及处理非XML数据的能力。Gartner Group的一份报告指出:“Tamino特别适用于需要从多种不同平台和格式整合信息并向业务伙伴或客户散发这些信息的机构。” 据介绍,Tamino拥有直接XML检索和特殊检索的能力,其查询语言强大而简短,可进入任意深度,使SQL相形见绌。其它native-XML数据库包括dbXML、eXcelon和XHive/DB,分别由美国的dbXML Group LLC公司、eXcelon公司和荷兰的The ConnectionFactory公司研制。奇怪的是,对native-XML数据库的主要批评之一是性能问题。有人预见到,当所搜寻的信息位于大文档的末尾时,由于缺乏其它机制native-XML数据库只能艰苦跋涉到最后,而关系数据库和面向对象数据库则可以将文档分成小块同时进行搜索,速度当然要快得多。当然,上述困难并非无法克服,只要在存储时给各文档分别加上索引就行了。Tamino就具有这种索引能力,从而弥补了大型文档搜索的不足,另外native-XML存储消除了不必要的转换操作。目前,Tamina有WindowsNT、Windows 2000、Solaris和SCO Unix等版本,将来还要出Linux和一些大型机版本。 目前,许多主流的数据库厂商都在把XML支持结合到其产品中,或者提供可在其数据库中使用XML的工具。IBM提供了XML Extender forDB2,以允许用户在DB2中存储XML文档,并提供一些新功能协助用户处理XML文档;Microsoft的SQL Server 6.5和7.0也进行了XML扩充,据悉SQL将来要加入XML输出选项,用以向其它系统传送信息。Oracle也拥有功能强大的XML索引引擎。这些数据库厂商不久将推出自己的native-X ML数据库,以满足基Web的电子商务对XML数据处理的需求。 总之,XML的需求正在扩大,新的应用包括采用XML标签的Internet搜索引擎、必须快速输出结果的电子商务系统、电子政务系统、带XML标签的电子数据交换、数据重复使用和内容个性化。作为处理上述应用的一环,XML数据库的需求也将快速增长。
2、 WEB编程开发方法 实现一个WEB应用的发布要经历很多个发布的过程,包括原始内容、设计、建立原型、编程、测试以及最终的发布。设计是个非常重要的过程,这是一个非常重要的过程,因为糟糕的设计过程所导致的问题只有在发布以后才能显现出来,而那时己经太晚了。相反一个好的考虑周到的设计可以使可能出现的问题尽早被发现,并且使WEB应用更容易进行维护和修改。有三种常见的设计方法:结构化、面向对象、基于组件。 2.1 结构化开发方法 2.1.1 基本思想 结构化系统开发方法(Structured System Analysis And Design ,SSA&D,)又称结构化生命周期法,是系统分析员、软件工程师、程序以及最终用户按照用户至上的原则,自顶向下分析与设计和自底向上逐步实施的建立计算机信息系统的一个过程,是组织、管理和控制信息系统开发过程的一种基本框架。 结构化系统开发方法由管理策略和开发策略两个部分组成: .管理策略部分 强调系统开发的规划、进程安排、评估、监控和反馈。 .开发策略部分 任务分解结构(Work Breakdown Structure优先级结构、开发经验、开发标准,简称WBS)。 2.1.2 JAVA与结构化开发方法 使用JSP脚本来开发WEB应用时,如果只是用JSP而不使用任何BENAS或者自定义标记,当WEB应用的规模比较小的时候不会出现太多的问题,但是在WEB应用的规模增大时,肯定会出现前面的问题。开发人员就很难修改它在体系上的问题,或是进行功能的扩展。在大多数情况下,这个程序中很少有文档可以帮助用户增加对它的理解,更重要的是,应用程序的每个部分是紧密联系在一起的,这个意味着开发所需要的时间会增加,对开发进行的管理时间也必然会增加。 结构化的设计有一下几个问题: 1.HTML与Java代码的结合,这个需要WEB开发人员有Java的知识。 2.在客户端的JavaScript和JSP代码可能会产生混淆。 3.为了理解应用程序内在的逻辑,开发人员必须查看应用程序调用的所有网页,这对用上百个网页的WEB来说是很难做的。 4.一个包含了HTML、JSP代码和Java脚本的网页查看起来是比较困难的,也会带来调试方面的问题,并且不容易维护。 在上述几个问题中,有些可以使用面向对象的开发方法得到解决。 2.2 面向对象开发方法 2.2.1 基本思想 面向对象开发方法认为,客观世界是由各种各样的对象组成的,每种对象都有各自的内部状态和运动规律,不同的对象之间的相互作用和联系就构成了各种不同的系统。当我们设计和实现一个客观系统时,如能在满足需求的条件下,把系统设计成由一些不可变的(相对固定)部分组成的最小集合,这个设计就是最好的。而这些不可变的部分就是所谓的对象。 对象是面向对象开发方法的主体,对象至少应有以下特征: 模块性。即对象是一个独立存在的实体,从外部可以了解它的功能,但其内部细节是“隐蔽”的,它不受外界干扰。对象之间的相互依赖性很小,因而可以独立地被其它各个系统所选用。 继承和类比性。事物之间都有一定的相互联系,事物在整体结构中都会占有它自身的位置。在对象之间有属性关系的共同性,在面向对象开发方法学中称之为继承性,即子模块继承了父模块的属性。通过类比方法抽象出典型对象的过程称之为类比。 动态连接性。即各种对象之间统一、方便、动态的消息传送机制。因此,以对象为主体的面向对象开发方法就可以简单解释为: 客观事物都是由对象(object)组成的,对象是在原事物基础上抽象的结果。任何复杂的事物都可以通过对象的某种组合结构构成。 对象由属性和方法组成。属性(attribute)反映了对象的信息特征,如特点、值、状态等。而方法(method)则是用来定义改变属性状态的各种操作。 对象之间的联系主要是通过传递消息(message)来实现的,而传递的方式是通过消息模式(message pattern)和方法所定义的操作过程来完成的。 对象可按其属性进行归类(class)。类有一定的结构,类上可以有超类(superclass),类下可以有子类(subclass),这种对象或类之间的层次结构是靠继承关系维系着的。 对象是一个被严格模块化了的实体,称之为封装(encapsulation)。这种封装了的对象满足软件工程的一切要求,而且可以直接被面向对象的程序设计语言所接受。 2.2.2 JAVA与面向对象开发方法 Java Servlet技术为开发高级WEB应用提供了一个面向对象的框架。Servlet中包含了大量的逻辑和流程控件。Servlet技术对高级WEB开发提供了很多支持,然而HTML的代码内嵌在Java代码中,这个对于WEB开发人员来说不是很好。 另一方面,不适当的抽象不仅不能减少问题,反而会带来更多的问题。另外,在较大的或者复杂的系统中,对象的作用域需要跨越整个系统,这也是十分繁琐的,因此它需要额外的补充。在使用面向对象的开发方法时候,用Servlet和JSP进行开发还存在一些没有解决的问题,因此我们还需要面向组件的开发方法。 2.3 基于组件的开发方法 2.3.1 基本思想 组件技术进一步深化了抽象的层次。通过使用组件技术,复杂的系统可以有任意的具有结合性的小系统组成。每个组件都十分简单,从而可以设计的十分完善,如果要进行大的改动,我们可以改写某个组件。每个组件可以实现一组紧密相关的功能,它们被认为是自包含的,与其它的组件没有太多的关联,并且在很高的层次对接口进行抽象来减少关联。换句话,组件可以被认为是实现了一组接口的软件的单元。 组件的主要特性如下: (1)组件具有对象的所以特性:数据是封装的,有定义好的响应,有定义好的接口。 (2)组件独立与其它的组件,这样就可以在系统中减少关联的紧密度。 (3)基于组件的开发提高了重用性。 (4)复杂性得到了很好的控制,因此也提高了系统的性能。 (5)设计、实现和测试过程是独立,因此可以实现高度并行的开发过程。 (6)由于组件之间的关联很少,当系统需求发生改变或者增强功能时候,整个系统并不会受到太大的影响。 2.3.2 框架规则 组件通常设计为框架的组成部分,框架的作用是将独立的组件结合起来形成应用程序进行发布,它可以解决一系列的特定问题,或者简化问题的方法。大多数常用的框架包含一些通用的组件来解决一般的问题,这些组件包含了一些通用的类或者接口。可以进行扩展或者实现完成特定的功能。 下面是框架的一些类型:应用框架:用于各种应用程序。域框架:用来解决特定的域的问题。 支持框架:提供系统的服务。 Java Servlet API就是一个简单的应用程序框架的例子,它提供了: (1)一组工具类,这是由框架创建并且分发的对象,比如Session和Request。 (2)一组高级类,实现一般的功能,比如GenericServlet和HttpServlet。 (3)一组接口,使用户的类可以进行扩展以实现其它功能比如SingleThreadModel。所有这些功能都在servlet外壳组件的内部进行实现。 基于组件的开发具有以下优点: 易于解决开发方案中的问题。 提高产品的质量。 缩短开发的时间。 能够轻松地适应变化。 降低开发成本。 实现代码的高度重用。 2.3.3 MVC框架 MVC(模型-视窗-控制器)是在Web开发中最常用的框架模式,当用户和应用程序进行频繁交互时,这个模板十分有效。目前它已经成为了最适合Web程序的模板。它把程序分成三部分,简化了开发过程。 其体系结构如图2.1所示:

Model(模型)表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJB和ColdFusionComponents这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 View(视图)是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和像XHTML, XML/XSL, WML等一些标识语言,以及Web Service。如何处理应用程序的界面变得越来越有挑战性。 MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。Controller(控制器)接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后用确定用哪个视图来显示模型处理返回的数据。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图 如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化——传播机制。 2.3.4 Struts框架 Struts是Apache组织的一个项目,像其他的Apache组织的项目一样它也是开放源码项目。Struts是一个比较好的MVC框架提供了对开发MVC系统的底层支持,它采用的主要技术是Servlet,JSP和custom ta library。 作为一个MVC的框架,Struts对Model、View和Controller都提供了对应的实现组件,对应上面的UML图,分别进行介绍,并且看看它们是如何结合在一起的。 1.Controller:控制器的作用是从客户端接受请求,并且选择执行相应的业务逻辑,然后把响应结果送回到客户端。在Struts中Controller功能由图中ActionServlet和ActionMapping对象构成:核心是一个Servle类型的对象ActionServlet,它用来接受客户端的请求。ActionServlet包括一组基于配置的ActionMapping对象,每个ActionMapping对象实现了一个请求到一个具体的Model部分中Action处理器对象之间的映射。 2.Model:MVC系统中的Model部分从概念上可以分为两类,系统的内部状态和改变系统状态的动作。Struts为Model部分提供了Action和Action Form对象:所有的Action处理器对象都是开发者从Struts的Action类派生的子类。Action处理器对象封装了具体的处理逻辑,调用业务逻辑模块,并且把响应提交到合适的View组件以产生响应。Struts提供的Action Form组件对象,它可以通过定义属性描述客户端表单数据。 开发者可以从它派生子类对象,利用它和Struts提供的自定义标记库结合可以实现对客户端的表单数据的良好封装和支持,Action处理器对象可以直接对它进行读写,而不再需要和request、response对象进行数据交互通过Action Form组件对象实现了对View和Model之间交互的支持。 Struts通常建议使用一组JavaBeans表示系统的内部状态,根据系统的复杂度也可以使用像Entity EJB和Session EJB等组件来实现系统状态。Stru建议在实现时把"做什么"(Action)和"如何做"(业务逻辑)分离。这样可以实现业务逻辑的重用。3.View:Struts应用中的View部分是通过JSP技术实现的。Stru提供了自定义的标记库可以使用,通过这些自定义标记可以非常好地和系统的Model部分交互,通过使用这些自定义标记创建的JSP表单,可以实现和Model部分中的Action Form的映射,完成对用户数据的封装,同时这些自定义标记还提供了像模板定制等多种显示功能。 Struts框架的处理流程清楚的体现了MVC系统的特点,简单的Struts组件结构如图3.4所示。Struts Controller ActionServlet处理客户请求,利用配置的ActionMapping对象把请求映射到Action处理器对象进行处理。Action处理对象访问Action Form中的数据,处理和响应客户请求,它还调用后台的Bean组件,这些组件封装了具体的业务逻辑。Action处理器对象根据处理结果通知Controller,Controller进行下一步的处理。 3、 结论 在XML出现之前,Internet上的数据交换主要通过HTML,但是HTML有很的大局限性,XML技术带来了革新。 XML技术可以用来生成独立于平台和应用程序的数据,Java技术可以用来实现独立于平台和应用程序的事务逻辑。 本文分析了XML技术与Java技术相结合而构建的Web体系,但毕竟还有很多方面没有涉及,还有待于从以下几个方面进行进一步的研究: 1.开发有关XML文档的数据管理,即如何存储、建立索引、查询等相关内容的研究有待进一步地开展。 3.有关基XML的多媒体标准和应用研究需得到深入研究。同时WAP、Voice XML和Audio XML等应用的研究也应受到重视。 XML通过对数据表示方法的改进促进了相关技术的进步,加上业界主要厂商的支持,必将如HTML对于WWW一样,成为下一代网络应用的基石。所以XML将给Web注入一股新的生命,给整个IT行业带来一个全新的视野。
参考文献 [1][美]怀特著.XML从入门到精通.电子工业出版社,2002. [2]丁跃潮,张涛著.XML实用教程.北京大学出版社,2006. [3][英]布伯克等著;裴剑锋等译.XML高级编程(第二版).机械工业出版社, 2002. [4]吴洁著.XML应用教程.清华大学出版社,2005. [5][美]哈乐德著;徐罡,黄涛译.Effective XML:有效使用XML的50种方法 ——计算机专业人员书库.电子工业出版社,2005. [6][美]科耶尔著.XML、Web服务和数据革命.清华大学出版社,2003. [7][美]蔡斯著;刘利秋等译.从头学XML和Java编程一例通.机械工业出版 社,2003. [8][美]埃克马尔(Chaudhri,A.B.),[美]阿瓦斯(Rashid,A.),[美]罗伯托 (Zicari,R.)著;邢春晓,张志强,李骅竞等译.XML数据管理纯XML和支 持XML的数据库系统.清华大学出版社,2006. [9]XML工作室,陈锦辉,王景皓著.XML与JAVA程序设计大全.中国铁道出版社, 2002. [10]陈建勋著.XSLT从入门到精通.中国铁道出版社,2002. [11][美]乔伊等著;梁金昆译.面向对象的系统分析与设计.清华大学出版社, 2005. [12]伽玛等著;李英军等译.设计模式--可复用面向对象软件的基础.机械工业出版社,2005. [13][美]阿洛(Arlow,J.),[美]诺伊施塔特(Neustadt,I.)著.UML2和统一过程: 实用面向对象的分析与设计(第2版).人民邮电出版社,2006. [14]阎宏著.Java与模式.电子工业出版社,2002.
(如需购买该毕业论文的,请联系我们在线QQ:599057179)
|