Xml與JAVA編程開發(fā)方法_第1頁
Xml與JAVA編程開發(fā)方法_第2頁
Xml與JAVA編程開發(fā)方法_第3頁
Xml與JAVA編程開發(fā)方法_第4頁
Xml與JAVA編程開發(fā)方法_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 目 錄摘要- 1 -abstract- 1 -1、 xml技術概述- 1 -1.1 xml技術背景介紹- 1 -1.2 xml的優(yōu)點- 1 -1.3 xml基礎- 2 -1.3.1 xml的術語- 2 -1.3.2 xml語法- 2 -1.3.3 用xsl顯示xml文檔- 6 -1.3.4 dom技術- 6 -1.4 xml與數據庫- 8 -2、 web編程開發(fā)方法- 10 -2.1 結構化開發(fā)方法- 10 -2.1.1 基本思想- 10 -2.1.2 java與結構化開發(fā)方法- 10 -2.2 面向對象開發(fā)方法- 11 -2.2.1 基本思想- 11 -2.2.2 java與面向對象開發(fā)方

2、法- 11 -2.3 基于組件的開發(fā)方法- 12 -2.3.1 基本思想- 12 -2.3.2 框架規(guī)則- 12 -2.3.3 mvc框架- 13 -2.3.4 struts框架- 14 -3、 結論- 14 -參考文獻- 15 -xml與web編程開發(fā)方法摘要:本文主要對xml技術和基于組件驅動的web編程技術進行了說明和分析。xml技術作為現(xiàn)今最流行的可擴展置標語言,基于xml的系統(tǒng),具有方便、靈活和擴展性強等優(yōu)點?;诮M件的開發(fā)是現(xiàn)今軟件復用理論實用化的研究熱點,在組件的支持下,通過復用已有的構件,軟件開發(fā)者可以“即插即用”地快速構造應用軟件。這樣不僅可以節(jié)省時間和經費,提高工作效率,而

3、且可以產生更加規(guī)范、更加可靠的軟件。而基于組件驅動的web編程,開發(fā)web應用的過程中最常用的框架是模型視窗控制器(mvc)框架,它減弱了業(yè)務邏輯接口和數據接口之間的耦合程度,讓視圖層更加富于變化。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 syste

4、m 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 ri

5、chly varied view layer.1、 xml技術概述1.1 xml技術背景介紹“可擴展標記語言”(xml)提供一種描述結構化數據的方法。與主要用于控制數據的顯示和外觀的html標記不同,xml標記用于定義數據本身的結構和數據類型。xml使用一組標記來描繪數據元素。每個元素封裝可能十分簡單也可能十分復雜的數據。您可以定義一組無限制的xml標記。xml是一種簡單、與平臺無關并被廣泛采用的標準。xml相對于html的優(yōu)點是它將用戶界面與結構化數據分隔開來。1.2 xml的優(yōu)點使用xml來交換信息有很多好處,包括下列方面:使用人的語言而不是計算機語言。xml便于閱讀且容易理解,即使對于初

6、學者亦是如此,它與html編碼一樣容易。與java完全兼容且完全可以移植。(在任何操作系統(tǒng)上)可以何應用程序都可以使用您的信息??蓴U展。創(chuàng)建您自己的標記或使用別人創(chuàng)建的標記,這些標記使用您的域的基本語言、具有您需要的屬性,且對您和您的用戶都很有意義。xml標記名便于閱讀,且表達了數據的含義。每個xml標記就位于相關聯(lián)數據的前面,這樣人和計算機都可以容易地識別信息結構。數據結構遵循顯而易見且有用的模式,使得處理和交換數據更容易。1.3 xml基礎1.3.1 xml的術語1.element(元素)元素在html我們已經有所了解,它是組成html文檔的最小單位,在xml中也一樣。一個元素由一個標識來

7、定義,包括開始和結束標識以及其中的內容,就像這樣:john。唯一不同的就是在html中,標識是固定的,而在xml中,標識需要你自己創(chuàng)建。2.tag(標識)標識是用來定義元素的。在xml中,標識必須成對出現(xiàn),將數據包圍在中間。標識的名稱和元素的名稱是一樣的。例如這樣一個元素:john其中就是標識。3.attribute(屬性)屬性是對標識進一步的描述和說明,一個標識可以有多個屬性。xml中的屬性與html中的屬性是一樣的,每個屬性都有它自己的名字和數值,屬性是標識的一部分,就像這樣:john。xml中屬性也是自己定義的,我們建議你盡量不使用屬性,而將屬性改成子元素,原因是屬性不易擴充和被程序操作

8、。4.declaration(聲明)在所有xml文檔的第一行都有一個xml聲明。這個聲明表示這個文檔是一個xml文檔,它遵循的是哪個xml版本的規(guī)范。一個xml的聲明語句就像這樣:。1.3.2 xml語法 xml語法規(guī)則規(guī)則1:必須有xml聲明語句聲明是xml文檔的第一句,其格式如下:聲明的作用是告訴瀏覽器或者其它處理程序:這個文檔是xml文檔。聲明語句中的version表示文檔遵守的xml規(guī)范的版本;standalone表示文檔是否附帶dtd文件,如果有,參數為no;encoding表示文檔所用的語言編碼,默認是utf-8。規(guī)則2:是否有dtd文件如果文檔是一個有效的xml文檔

9、,那么文檔一定要有相應dtd文件,并且嚴格遵守dtd文件制定的規(guī)范。dtd文件的聲明語句緊跟在xml聲明語句后面,格式如下:其中:“!doctype”是指你要定義一個doctype;“type-of-doc”是文檔類型的名稱,由你自己定義,通常與dtd文件名相同;“system/public”這兩個參數只用其一。system是指文檔使用的私有dtd文件的網址,而public則指文檔調用一個公用的dtd文件的網址?!癲td-name”就是dtd文件的網址和名稱。所有dtd文件的后綴名為“.dtd”。規(guī)則3:注意你的大小寫在xml文檔中,大小寫是有區(qū)別的。在寫元素時,前后標識大小寫要保持一致。規(guī)則

10、4:給屬性值加引號在html代碼里面,屬性值可以加引號,也可以不加。但是在xml中則規(guī)定,所有屬性值必須加引號(可以是單引號,也可以是雙引號),否則將被視為錯誤。規(guī)則5:所有的標識必須有相應的結束標識在html中,標識可能不是成對出現(xiàn)的。而在xml中規(guī)定,所有標識必須成對出現(xiàn),有一個開始標識,就必須有一個結束標識,否則將被視為錯誤。規(guī)則6:所有的空標識也必須被關閉空標識就是標識對之間沒有內容的標識。在xml中,規(guī)定所有的標識必須有結束標識,針對這樣的空標識,xml中處理的方法是在原標識最后加/,就可以了。元素的語法元素由一對標識以及其中的內容組成。元素的名稱和標識的名稱是一樣的。

11、標識可以用屬性來進一步描述。在xml中沒有任何保留字,所以可以用任何詞語來作為元素名稱。但是必須遵守下列規(guī)范:1.名稱中可以包含字母、數字以及其它字母;2.名稱不能以數字或“_”(下劃線)開頭;3.名稱不能以字母xml(或xml或xml)開頭;4.名稱中不能包含空格;5.名稱中間不能包含“:”(冒號)。注釋的語法注釋是為了便于閱讀和理解,在xml文檔添加的附加信息,將不會被程序解釋或則瀏覽器顯示。注釋的語法如下: cdata的語法cdata全稱character data,翻譯為字符數據。我們在寫xml文檔時,有時需要顯示字母,數字和其它的符號本身,比如,而在xml

12、中,這些字符已經有特殊的含義,我們怎么辦呢?這就需要用到cdata語法格式如下:例如:!cdatajohn在頁面上顯示為:“john”。 namespaces的語法namespaces翻譯為名字空間。名字空間有什么作用呢?當我們在一個xml文檔中使用他人的或者多個dtd文件,就會出現(xiàn)這樣的矛盾:因為xml中標識都是自己創(chuàng)建的,在不同的dtd文件中,標識名可能相同但表示的含義不同,這就可能引起數據混亂。比如在一個文檔wood table中表示桌子,而在另一個文檔namelist中表示表格。如果我需要同時處理這兩個文檔,就會發(fā)生名字沖突。了解決這個問題,我們引進了namespaces

13、這個概念。namespaces通過給標識名稱加一個網址(url)定位的方法來區(qū)別這些名稱相同的標識。namespaces同樣需要在xml文檔的開頭部分聲明,聲明的語法如下:其中yourname是由你定義的namespaces的名稱,url就是名字空間的網址。假設上面的桌子文檔來自,我們就可以聲明為然后在后面的標識中使用定義好的名字空間:wood table這樣就將這兩個區(qū)分開來。注意的是:設置url并不是說這個標識真的要到那個網址去讀取,僅僅作為一種區(qū)別的標志而已。 entity的語法entity翻譯為實體。它的作用類似word中的宏,也可以理解為dw中的摸板,你可以預先定義一個

14、entity,然后在一個文檔中多次調用,或者在多個文檔中調用同一個entity。entity可以包含字符,文字等等,使用entity的好處在于:1.它可以減少差錯,文檔中多個相同的部分只需要輸入一遍就可以了。2.它提高維護效率。比如你有40個文檔都包含copyright的entity,如果需要修改這個copyright,不需要所有的文件都修改,只要改最初定義的entity語句就可以了。xml定義了兩種類型的entity。一種是我們這里說的普通entity,在xml文檔中使用;另一種是參數entity,在dtd文件中使用。entity的定義語法為:!doctype filename例如我要定義一

15、段版權信息:!doctype copyright如果我的版權信息內容和他人共享一個xml文件,也可以使用外部調用的方法,語法像這樣:!doctype copyright定義好的entity在文檔中的引用語法為:&entity-name;例如,上面定義的版權信息,調用時寫作?copyright;完整的例子如下,你可以copy下來存為copyright.xml觀看實例:!doctype copyrightxmlajieajie20010115©right; schema的語法xml schema是microsoft指定的技術規(guī)范它是基于xml-data和dcd的。dtd使用了

16、一種特殊的規(guī)范來定義在各種文件中使用xml標記的規(guī)范。但是,有些常用的限制不能用dtd來表述。這就需要使用schema,它的很多情況下的作用和dtd差不多。但它的功能要超過dtd。xml schema是用來描述xml元素和屬性的。它基本上包括屬性和元素類型說明,可以為xml元素和屬性提供內容模塊。schema相對與dtd的明顯不同是xml schema文檔本身也是xml文檔,而不像dtd一樣使用特殊格式。這給用戶帶來了三個好處:不需要知道兩種語法來編寫語法合格的xml schema。軟件工具可以利用xml文檔和schema之間的語法通用這一點為兩者提供支持。作為xml文檔,xml schema

17、能夠擴展出去。能向xml schema中加入元素和屬性。只要元素和屬性名域不同,它們在一個schema中是合法的,這個大大方便了用戶和開發(fā)者,因為他們可以使用相同的工具來處理xml schema和其它xml信息,而不必專門為schema使用特殊工具。schema定義的數據類型要比dtd全面。dtd值允許把內容類型定義為一個字符串。xml schema允許把內容類型定義為整型、浮點型、數據型、布爾型或者許多其它的簡單數據類型。如果想要編寫一個應用軟件來處理某個值為整型的元素內容,在dtd的例子中必須把它轉換為整型,而在schema例子中,可以直接得到那個整數值。xml schema集成了名域,允

18、許文檔的特殊節(jié)點與schema中的類型說明聯(lián)系起來。聯(lián)系xml節(jié)點和dtd的唯一方法是通過doctype說明。這是有限的,因為每個文檔實例只能用一個dtd。多個schema可以來描述一個xml文檔,因為xml schema自身不描述xml文檔,它描述xml元素。schema的優(yōu)勢以及它的可以擴充的能力使它成為描述數據的最佳的選擇之一。下面列出了schema的一些例子:/表示該元素出現(xiàn)次數大于1/表示該元素僅包括文本不含有子元素/表示所列的子元素必須安升序出現(xiàn)1.3.3 用xsl顯示xml文檔xml是一種元標記語言,沒有許多固定的標記,為web開發(fā)人員提供了更大的靈活性。使用xml我們可以做到自

19、定義標記,用標記表明內容的含義。這樣在internet上交流資料時,為用計算機處理文檔提供了極大的方便。然而,由于xml并沒有為標記規(guī)定顯示方式,我們無法在瀏覽器中看到以諸如表格方式顯示的xml文檔。為了解決這個問題,xml可以采用以下兩種技術:css與xsl。但使用css來格式化xml文檔的效果交不令人滿意,而xsl則是專門為了xml所設計的樣式表。xsl包含兩大部分:xslt和xsl formatting object。xslt(xsl31 transformations)一種用來轉換文件的語言。xsl formatting object:一組用來格式化(排版)語意的詞匯。xsl轉換xml

20、分為兩個步驟:(1)xsl處理器首先要做的是通過分析器(dom或sax)技術讀取xml標記及數據。當瀏覽器通過xml dom對象讀取到xml的樹狀結構與數據后,將xml樹狀結構重新排行組合后產生一個暫時的數狀結構,這個樹狀結構稱為結果樹。在這個結果樹產生后,若又出現(xiàn)了新的標記或數據,必須把它一起并入結果樹。(2)結果樹也是樹狀結構,可以利用dom技術訪問結果樹的數據,其中數據以節(jié)點方式顯示,并且預留一個記錄樣式的位置。xsl處理其中的程序將這些數據轉換為另一種well-formed xml文件(如:wml、html、voicexml等)。1.3.4 dom技術dom是對xml開發(fā)者相當重要的,

21、對于xml應用開發(fā)來說就是一個對象化的xml數據接口。最基本的xml開發(fā)通常都要使用它。簡單說,dom就是一組對象的集合,通過操縱這些對象,我們就能操縱xml和html數據。dom全稱是document object model,人如其名,dom就是一個文檔對象組成的模型,它不光用于xml,最先是起于html的。對作過web開發(fā)的人,特別是寫過動態(tài)dhtml的人,應該對html中的文檔對象有一定概念,dom就是這樣一個對象模型的標準。dom另外又是一個接口,一個與語言無關的接口,應用通過這個接口來和xml或html內的數據打交道。無論是在瀏覽器里,還是在瀏覽器外,在服務器上,還是客戶端,我們只

22、要用xml就會碰到dom。1.dom的來由為什么要定義這樣一個接口呢?這樣講吧,我們知道數據庫有標準的odbc/jdbc這樣的接口規(guī)范,那么我們使用xml數據如果沒有一個統(tǒng)一的接口,我們寫程序是不是要每個人都要自己去處理xml的語法細節(jié),如果我們手頭有xml的語法分析器(有人譯為解析器),它也必然有一個接口讓我們通過它訪問xml數據,所有語法分析器的接口如果都不相同,我們開發(fā)就必須針對某一個分析器,如果換了分析器,程序就必須重寫。到這里,又和數據庫有可比性了,我們編數據庫應用可以不管后面的數據庫系統(tǒng)究竟是oracle還是sybase,或informix,是因為有了odbc,所以要是我們做xml

23、應用開發(fā),就應該有一個統(tǒng)一的xml數據接口,這個接口就是dom。2.dom的三部分目前的dom分為核心(core)、html、xml三部分。核心:這部分是結構化文檔比較底層的對象的集合,但他們就已經可以表達出任何html和xml文件了。html和xml:這兩部分是專為xml和html提供的另外的高級接口,使操縱者兩類文件更方便。3.dom組成圖1.1是dom的整體組成圖,給出了dom模型基本組成的概念。圖1.1 dom整體組成4.文件樹dom中的最基本對象應該就是node了。從它又派生出許多類型的node。所有這些node組成一棵文件樹,它包含了xml或html文檔的幾乎全部信息。在結構化文檔

24、中,信息是按層次化的樹形結構組織的。所以結構化文檔的模型的組織也必然是樹形的。node簡單的說,就是上面樹形結構中的節(jié)點,但對xml來說還包括其他xml語法相關的節(jié)點,包括xml聲明,文件類型聲明,處理指令等等。node提供一些基本屬性和操作,各種類型的node則繼承node的屬性和操作,同時有各自特殊的屬性和操作。比如elementnode。5.基本對象上面已經講了dom中最基本的對象就是節(jié)點,它的接口定義如下:從node派生出的幾個比較重要的節(jié)點類型有document、element、attribute、text。document是dom樹的根,它代表一個完整的xml文檔。它會有一些自己的

25、子節(jié)點,至少應該有一個文檔元素的子節(jié)點,這個節(jié)點類型為element,是xml文件最外層的根元素,此外他還可能有documenttype(唯一),processinginstruction,comment這幾種作為子節(jié)點。element代表xml元素,是最常用的節(jié)點,它可以組成以它為根的dom的子樹。他還可以有element子節(jié)點,以及attribut,text,processinginstruction,cdatasection,comment子節(jié)點。attribute是xml元素的屬性,它的父節(jié)點必然是element,它的子節(jié)點有text和entityreference。除了node,do

26、m里還有兩個比較重要的對象:nodelist它實現(xiàn)的一個節(jié)點的序列,用于表示有順序關系的一組節(jié)點,比如某個節(jié)點的孩子節(jié)點序列,它還出現(xiàn)在一些方法的返回值中,例如getnodebyname。namednodemap它表示的是一組節(jié)點和其唯一的名字的對應關系,這個對象主要用在屬性節(jié)點的表示上。1.4 xml與數據庫xml的特性使之成為在線和離線數據的共同語言。現(xiàn)在的問題是,怎樣管理xml標記的數據。一種可行的方法是用數據庫對xml進行存儲、檢索和操作,即把xml標記的數據收入一個框架中,在一種更容易管理、更系統(tǒng)化、更為人們所熟悉的環(huán)境中完成搜索、分析、更新和成果輸出工作。目前有兩種不同的觀點:一種

27、觀點認為,只有以xml原始的格式存儲xml的數據庫才能稱為xml數據庫;另一種觀點認為,只要能存入和檢出xml,且它本身又是一個數據庫,那它就是一個xml數據庫,而不必考慮數據是怎樣存入的。而我們認為,凡內部不是以xml格式存儲的xml數據庫,叫做“xml-enabled數據庫”;如果內部以xml格式存儲數據,就稱為“native-xml數據庫”。使用現(xiàn)有的數據庫類型和產品而不是以原始格式來存儲xml,是出自以下幾種考慮:首先,普通的關系數據庫和面向對象數據庫己盡人皆知,而native-xml數據庫是新的;其次,人們熟知現(xiàn)有的關系數據庫和面向對象數據庫,也了解它們的行為和性能,因此他們不愿意轉

28、向native-xml數據庫,因為其性能,特別是可伸縮性尚未經過檢驗;最后,在企業(yè)看來,選擇關系數據庫和面向對象數據庫是比較安全的,使用新的native-xml數據庫具有一定的風險。現(xiàn)在己經有一些能夠很好地處理xml的xml-enabled數據庫,并且是由久經考驗的關系數據庫和面向對象數據庫擔此重任。這些數據庫在收到xml后,將其分解為字段并按通常的方式存儲它們,當檢索xml時,這些字段再被拼接成原狀。在關系數據庫中處理xml數據時,可用第三方中間件進行轉換,如xml-dbms,這是一種基于java database connectivity(jdbc)的工具,可以在xml文檔和數據庫之間傳輸

29、數據。但是,利用關系數據庫和面向對象數據庫存儲xml也有很大的缺點,例如,xml最具吸引力的特性之一是其分層結構,而關系數據庫卻將xml映射成關系表,從而將xml結構變成了平面的行和列。另外,遇到大型或復雜文檔時,在xml與數據庫之間進行來回轉換要耗費相當多的處理時間,從而降低了web頁面的生成速度。目前,native-xml數據庫已經開始出現(xiàn),盡管人們還不能完全信任它,但的確有一些native-xml數據庫開始在實際應用中受到得青睞。另外,主流的數據庫廠商也可能在適當的時機推出自己的native-xml數據庫產品。第一個,可能也是最有名的商用native-xml數據庫是位于美國加州的soft

30、wareag公司開發(fā)的tamino。除了可以存儲和訪問xml外,tamino多項功能,包括open database connectivity、符合unicode要求、http通信以及處理非xml數據的能力。gartner group的一份報告指出:“tamino特別適用于需要從多種不同平臺和格式整合信息并向業(yè)務伙伴或客戶散發(fā)這些信息的機構?!睋榻B,tamino擁有直接xml檢索和特殊檢索的能力,其查詢語言強大而簡短,可進入任意深度,使sql相形見絀。其它native-xml數據庫包括dbxml、excelon和xhive/db,分別由美國的dbxml group llc公司、excelon

31、公司和荷蘭的the connectionfactory公司研制。奇怪的是,對native-xml數據庫的主要批評之一是性能問題。有人預見到,當所搜尋的信息位于大文檔的末尾時,由于缺乏其它機制native-xml數據庫只能艱苦跋涉到最后,而關系數據庫和面向對象數據庫則可以將文檔分成小塊同時進行搜索,速度當然要快得多。當然,上述困難并非無法克服,只要在存儲時給各文檔分別加上索引就行了。tamino就具有這種索引能力,從而彌補了大型文檔搜索的不足,另外native-xml存儲消除了不必要的轉換操作。目前,tamina有windowsnt、windows 2000、solaris和sco unix等版

32、本,將來還要出linux和一些大型機版本。目前,許多主流的數據庫廠商都在把xml支持結合到其產品中,或者提供可在其數據庫中使用xml的工具。ibm提供了xml extender fordb2,以允許用戶在db2中存儲xml文檔,并提供一些新功能協(xié)助用戶處理xml文檔;microsoft的sql server 6.5和7.0也進行了xml擴充,據悉sql將來要加入xml輸出選項,用以向其它系統(tǒng)傳送信息。oracle也擁有功能強大的xml索引引擎。這些數據庫廠商不久將推出自己的native-x ml數據庫,以滿足基web的電子商務對xml數據處理的需求??傊?,xml的需求正在擴大,新的應用包括采用

33、xml標簽的internet搜索引擎、必須快速輸出結果的電子商務系統(tǒng)、電子政務系統(tǒng)、帶xml標簽的電子數據交換、數據重復使用和內容個性化。作為處理上述應用的一環(huán),xml數據庫的需求也將快速增長。2、 web編程開發(fā)方法實現(xiàn)一個web應用的發(fā)布要經歷很多個發(fā)布的過程,包括原始內容、設計、建立原型、編程、測試以及最終的發(fā)布。設計是個非常重要的過程,這是一個非常重要的過程,因為糟糕的設計過程所導致的問題只有在發(fā)布以后才能顯現(xiàn)出來,而那時己經太晚了。相反一個好的考慮周到的設計可以使可能出現(xiàn)的問題盡早被發(fā)現(xiàn),并且使web應用更容易進行維護和修改。有三種常見的設計方法:結構化、面向對象、基于組件。2.1

34、結構化開發(fā)方法2.1.1 基本思想結構化系統(tǒng)開發(fā)方法(structured system analysis and design ,ssa&d,)又稱結構化生命周期法,是系統(tǒng)分析員、軟件工程師、程序以及最終用戶按照用戶至上的原則,自頂向下分析與設計和自底向上逐步實施的建立計算機信息系統(tǒng)的一個過程,是組織、管理和控制信息系統(tǒng)開發(fā)過程的一種基本框架。結構化系統(tǒng)開發(fā)方法由管理策略和開發(fā)策略兩個部分組成:.管理策略部分強調系統(tǒng)開發(fā)的規(guī)劃、進程安排、評估、監(jiān)控和反饋。.開發(fā)策略部分任務分解結構(work breakdown structure優(yōu)先級結構、開發(fā)經驗、開發(fā)標準,簡稱wbs)。2.1.2 ja

35、va與結構化開發(fā)方法使用jsp腳本來開發(fā)web應用時,如果只是用jsp而不使用任何benas或者自定義標記,當web應用的規(guī)模比較小的時候不會出現(xiàn)太多的問題,但是在web應用的規(guī)模增大時,肯定會出現(xiàn)前面的問題。開發(fā)人員就很難修改它在體系上的問題,或是進行功能的擴展。在大多數情況下,這個程序中很少有文檔可以幫助用戶增加對它的理解,更重要的是,應用程序的每個部分是緊密聯(lián)系在一起的,這個意味著開發(fā)所需要的時間會增加,對開發(fā)進行的管理時間也必然會增加。結構化的設計有一下幾個問題:1.html與java代碼的結合,這個需要web開發(fā)人員有java的知識。2.在客戶端的javascript和jsp代碼可能

36、會產生混淆。3.為了理解應用程序內在的邏輯,開發(fā)人員必須查看應用程序調用的所有網頁,這對用上百個網頁的web來說是很難做的。4.一個包含了html、jsp代碼和java腳本的網頁查看起來是比較困難的,也會帶來調試方面的問題,并且不容易維護。在上述幾個問題中,有些可以使用面向對象的開發(fā)方法得到解決。2.2 面向對象開發(fā)方法2.2.1 基本思想面向對象開發(fā)方法認為,客觀世界是由各種各樣的對象組成的,每種對象都有各自的內部狀態(tài)和運動規(guī)律,不同的對象之間的相互作用和聯(lián)系就構成了各種不同的系統(tǒng)。當我們設計和實現(xiàn)一個客觀系統(tǒng)時,如能在滿足需求的條件下,把系統(tǒng)設計成由一些不可變的(相對固定)部分組成的最小集

37、合,這個設計就是最好的。而這些不可變的部分就是所謂的對象。對象是面向對象開發(fā)方法的主體,對象至少應有以下特征:模塊性。即對象是一個獨立存在的實體,從外部可以了解它的功能,但其內部細節(jié)是“隱蔽”的,它不受外界干擾。對象之間的相互依賴性很小,因而可以獨立地被其它各個系統(tǒng)所選用。繼承和類比性。事物之間都有一定的相互聯(lián)系,事物在整體結構中都會占有它自身的位置。在對象之間有屬性關系的共同性,在面向對象開發(fā)方法學中稱之為繼承性,即子模塊繼承了父模塊的屬性。通過類比方法抽象出典型對象的過程稱之為類比。動態(tài)連接性。即各種對象之間統(tǒng)一、方便、動態(tài)的消息傳送機制。因此,以對象為主體的面向對象開發(fā)方法就可以簡單解釋

38、為:客觀事物都是由對象(object)組成的,對象是在原事物基礎上抽象的結果。任何復雜的事物都可以通過對象的某種組合結構構成。對象由屬性和方法組成。屬性(attribute)反映了對象的信息特征,如特點、值、狀態(tài)等。而方法(method)則是用來定義改變屬性狀態(tài)的各種操作。對象之間的聯(lián)系主要是通過傳遞消息(message)來實現(xiàn)的,而傳遞的方式是通過消息模式(message pattern)和方法所定義的操作過程來完成的。對象可按其屬性進行歸類(class)。類有一定的結構,類上可以有超類(superclass),類下可以有子類(subclass),這種對象或類之間的層次結構是靠繼承關系維系著

39、的。對象是一個被嚴格模塊化了的實體,稱之為封裝(encapsulation)。這種封裝了的對象滿足軟件工程的一切要求,而且可以直接被面向對象的程序設計語言所接受。2.2.2 java與面向對象開發(fā)方法java servlet技術為開發(fā)高級web應用提供了一個面向對象的框架。servlet中包含了大量的邏輯和流程控件。servlet技術對高級web開發(fā)提供了很多支持,然而html的代碼內嵌在java代碼中,這個對于web開發(fā)人員來說不是很好。另一方面,不適當的抽象不僅不能減少問題,反而會帶來更多的問題。另外,在較大的或者復雜的系統(tǒng)中,對象的作用域需要跨越整個系統(tǒng),這也是十分繁瑣的,因此它需要額外

40、的補充。在使用面向對象的開發(fā)方法時候,用servlet和jsp進行開發(fā)還存在一些沒有解決的問題,因此我們還需要面向組件的開發(fā)方法。2.3 基于組件的開發(fā)方法2.3.1 基本思想組件技術進一步深化了抽象的層次。通過使用組件技術,復雜的系統(tǒng)可以有任意的具有結合性的小系統(tǒng)組成。每個組件都十分簡單,從而可以設計的十分完善,如果要進行大的改動,我們可以改寫某個組件。每個組件可以實現(xiàn)一組緊密相關的功能,它們被認為是自包含的,與其它的組件沒有太多的關聯(lián),并且在很高的層次對接口進行抽象來減少關聯(lián)。換句話,組件可以被認為是實現(xiàn)了一組接口的軟件的單元。組件的主要特性如下:(1)組件具有對象的所以特性:數據是封裝的

41、,有定義好的響應,有定義好的接口。(2)組件獨立與其它的組件,這樣就可以在系統(tǒng)中減少關聯(lián)的緊密度。(3)基于組件的開發(fā)提高了重用性。(4)復雜性得到了很好的控制,因此也提高了系統(tǒng)的性能。(5)設計、實現(xiàn)和測試過程是獨立,因此可以實現(xiàn)高度并行的開發(fā)過程。(6)由于組件之間的關聯(lián)很少,當系統(tǒng)需求發(fā)生改變或者增強功能時候,整個系統(tǒng)并不會受到太大的影響。2.3.2 框架規(guī)則組件通常設計為框架的組成部分,框架的作用是將獨立的組件結合起來形成應用程序進行發(fā)布,它可以解決一系列的特定問題,或者簡化問題的方法。大多數常用的框架包含一些通用的組件來解決一般的問題,這些組件包含了一些通用的類或者接口??梢赃M行擴展

42、或者實現(xiàn)完成特定的功能。下面是框架的一些類型:應用框架:用于各種應用程序。域框架:用來解決特定的域的問題。支持框架:提供系統(tǒng)的服務。java servlet api就是一個簡單的應用程序框架的例子,它提供了:(1)一組工具類,這是由框架創(chuàng)建并且分發(fā)的對象,比如session和request。(2)一組高級類,實現(xiàn)一般的功能,比如genericservlet和httpservlet。(3)一組接口,使用戶的類可以進行擴展以實現(xiàn)其它功能比如singlethreadmodel。所有這些功能都在servlet外殼組件的內部進行實現(xiàn)?;诮M件的開發(fā)具有以下優(yōu)點:易于解決開發(fā)方案中的問題。提高產品的質量。

43、縮短開發(fā)的時間。能夠輕松地適應變化。降低開發(fā)成本。實現(xiàn)代碼的高度重用。2.3.3 mvc框架mvc(模型-視窗-控制器)是在web開發(fā)中最常用的框架模式,當用戶和應用程序進行頻繁交互時,這個模板十分有效。目前它已經成為了最適合web程序的模板。它把程序分成三部分,簡化了開發(fā)過程。其體系結構如圖2.1所示: 圖2.1 mvc框架體系結構 model(模型)表示企業(yè)數據和業(yè)務規(guī)則。在mvc的三個部件中,模型擁有最多的處理任務。例如它可能用像ejb和coldfusioncomponents這樣的構件對象來處理數據庫。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據

44、。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性。 view(視圖)是用戶看到并與之交互的界面。對老式的web應用程序來說,視圖就是由html元素組成的界面,在新式的web應用程序中,html依舊在視圖中扮演著重要的角色,但一些新的技術已層出不窮,它們包括macromedia flash和像xhtml, xml/xsl, wml等一些標識語言,以及web service。如何處理應用程序的界面變得越來越有挑戰(zhàn)性。mvc一個大的好處是它能為你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發(fā)生,不管這些數據是聯(lián)機存儲的還是一個雇員列表,作為視圖來講,它只是作為

45、一種輸出數據并允許用戶操縱的方式。controller(控制器)接受用戶的輸入并調用模型和視圖去完成用戶的需求。所以當單擊web頁面中的超鏈接和發(fā)送html表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調用哪個模型構件去處理請求,然后用確定用哪個視圖來顯示模型處理返回的數據。模型、視圖與控制器的分離,使得一個模型可以具有多個顯示視圖如果用戶通過某個視圖的控制器改變了模型的數據,所有其它依賴于這些數據的視圖都應反映到這些變化。因此,無論何時發(fā)生了何種數據變化控制器都會將變化通知所有的視圖,導致顯示的更新。這實際上是一種模型的變化傳播機制。2.3.4 struts框架strut

46、s是apache組織的一個項目,像其他的apache組織的項目一樣它也是開放源碼項目。struts是一個比較好的mvc框架提供了對開發(fā)mvc系統(tǒng)的底層支持,它采用的主要技術是servlet,jsp和custom ta library。作為一個mvc的框架,struts對model、view和controller都提供了對應的實現(xiàn)組件,對應上面的uml圖,分別進行介紹,并且看看它們是如何結合在一起的。1controller:控制器的作用是從客戶端接受請求,并且選擇執(zhí)行相應的業(yè)務邏輯,然后把響應結果送回到客戶端。在struts中controller功能由圖中actionservlet和action

47、mapping對象構成:核心是一個servle類型的對象actionservlet,它用來接受客戶端的請求。actionservlet包括一組基于配置的actionmapping對象,每個actionmapping對象實現(xiàn)了一個請求到一個具體的model部分中action處理器對象之間的映射。2model:mvc系統(tǒng)中的model部分從概念上可以分為兩類,系統(tǒng)的內部狀態(tài)和改變系統(tǒng)狀態(tài)的動作。struts為model部分提供了action和action form對象:所有的action處理器對象都是開發(fā)者從struts的action類派生的子類。action處理器對象封裝了具體的處理邏輯,調用業(yè)務邏輯模塊,并且把響應提交到合適的view組件以產生響應。struts提供的action form組件對象,它可以通過定義屬性描述客戶端表單數據。開發(fā)者可以從它派生子類對象,利用它和struts提供的自定義標記庫結合可以實現(xiàn)對客戶端的表單數據的良好封裝和支持,action處理器對象可以直接對它進行讀寫,而不再需要和request、response對象進行數據交互通過action form組件對象實現(xiàn)了對view

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論