版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 畢業(yè)設(shè)計(jì)(論文)</b></p><p> 基于JAVA的**市的公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 目 錄</b></p><p><b> 摘 要I</b></p><p> ABSTRA
2、CTII</p><p><b> 1 緒 論1</b></p><p> 1.1 數(shù)據(jù)庫(kù)技術(shù)1</p><p> 1.1.1 數(shù)據(jù)庫(kù)體系結(jié)構(gòu)1</p><p> 1.1.2 數(shù)據(jù)庫(kù)管理信息系統(tǒng)(DBMS)1</p><p> 1.2
3、 公交查詢系統(tǒng)2</p><p> 1.2.1 系統(tǒng)功能2</p><p> 1.2.2系統(tǒng)運(yùn)行環(huán)境2</p><p> 1.2.4 系統(tǒng)開(kāi)發(fā)工具2</p><p> 1.2.4現(xiàn)狀與前景2</p><p> 1.3 本文所作的工作3</p><p>
4、 2 基于Eclispe平臺(tái)下的開(kāi)發(fā)技術(shù)4</p><p> 2.1 Java語(yǔ)言介紹4</p><p> 2.1.1 Java 語(yǔ)言簡(jiǎn)介4</p><p> 2.1.2 Java技術(shù)平臺(tái)簡(jiǎn)介7</p><p> 2.1.3 Java 程序框架7</p><p> 2.1.4 Java 優(yōu)
5、點(diǎn)8</p><p> 2.1.4 J2EE技術(shù)簡(jiǎn)介8</p><p> 2.2 JSP技術(shù)介紹8</p><p> 2.2.1 JSP與ASP的簡(jiǎn)單比較8</p><p> 2.2.2 JSP運(yùn)行環(huán)境9</p><p> 2.2.3 JSP頁(yè)面示例9</p><p>
6、2.3 B/S結(jié)構(gòu)介紹12</p><p> 2.3.1 Java程序框架13</p><p> 2.3.2 B/S架構(gòu)具備極大的優(yōu)越性13</p><p> 2.4 J2EE所運(yùn)用到的數(shù)據(jù)庫(kù)技術(shù)14</p><p> 2.4.1關(guān)系模型的基本概念14</p><p> 2.4.2關(guān)系型數(shù)據(jù)庫(kù)16
7、</p><p> 2.4.3關(guān)系數(shù)據(jù)語(yǔ)言17</p><p> 2.5 SQL語(yǔ)言介紹18</p><p> 2.5.1 SQL的組成18</p><p> 2.5.2 SQL的數(shù)據(jù)查詢19</p><p> 2.5.3 SQL的數(shù)據(jù)更新19</p><p> 3公交查詢
8、系統(tǒng)設(shè)計(jì)分析21</p><p> 3.1應(yīng)用需求分析21</p><p> 3.2 系統(tǒng)功能模塊劃分21</p><p> 3.3 系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)24</p><p> 3.3.1概念設(shè)計(jì)24</p><p> 3.3.2 邏輯設(shè)計(jì)26</p><p> 3.
9、4 本章小結(jié)28</p><p> 4 公交查詢系統(tǒng)設(shè)計(jì)分析29</p><p> 4.1 查詢模塊的功能實(shí)現(xiàn)29</p><p> 4.2 管理更新的功能實(shí)現(xiàn)31</p><p> 4.3 公交線路管理33</p><p> 4.4 本
10、章小結(jié)35</p><p><b> 5總結(jié)35</b></p><p><b> 參考文獻(xiàn)35</b></p><p><b> 致 謝37</b></p><p><b> 摘 要</b></p>
11、<p> 如今計(jì)算機(jī)網(wǎng)絡(luò)發(fā)展非常迅速,時(shí)間的重要性對(duì)于人們來(lái)說(shuō)不言而喻,人們出行越來(lái)越注重時(shí)間的節(jié)約,城市公交已經(jīng)成為出行的一種主要的方式,本文結(jié)合公交運(yùn)行的實(shí)際來(lái)對(duì)公交查詢信息系統(tǒng)進(jìn)行可行性研究,通過(guò)詳實(shí)的問(wèn)題定義與需求分析并且進(jìn)行了合理的設(shè)計(jì),提出了在B/S模式下的三層體系結(jié)構(gòu),應(yīng)用了當(dāng)前最流行的Eclispe開(kāi)發(fā)環(huán)境,后臺(tái)采用了以目前最穩(wěn)定的SQL Server2005數(shù)據(jù)庫(kù)為開(kāi)發(fā)平臺(tái)。該系統(tǒng)可以幫助查詢?nèi)藛T找到能最
12、快到達(dá)目的地,并且節(jié)約費(fèi)用。通過(guò)瀏覽器查詢,通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)全面聯(lián)網(wǎng),實(shí)現(xiàn)中心控制、自動(dòng)更新、更多的查詢方式、和GIS系統(tǒng)的互聯(lián)互通等等更多更強(qiáng)大的功能。從這方面來(lái)說(shuō),此系統(tǒng)具有美好的應(yīng)用前景。</p><p> 關(guān)鍵詞:管理信息系統(tǒng);B/S結(jié)構(gòu);數(shù)據(jù)庫(kù);WEB服務(wù)器;JSP</p><p><b> ABSTRACT</b></p><p>
13、; Now computer network development very quickly,The importance of time for people to self-evident,People pay more and more attention to the travel time saving,City bus travel has become one of the main way,Combining wit
14、h the actual operation of the bus to query information system of public transport for feasibility study,Through detailed problem definition and demand analysis and the reasonable design,Put forward the B/S model with thr
15、ee layers of the system structure, the application of the most </p><p> Key words: the management information system; The B/S structure; Database; WEB server. JSP.</p><p><b> 1 緒
16、160; 論</b></p><p> 數(shù)據(jù)庫(kù)技術(shù)作為數(shù)據(jù)管理技術(shù),是計(jì)算機(jī)軟件領(lǐng)域的一個(gè)重要分支,產(chǎn)生于60年代末?,F(xiàn)已形成相當(dāng)規(guī)模的理論體系和實(shí)用技術(shù)。優(yōu)秀的數(shù)據(jù)庫(kù)設(shè)計(jì)是應(yīng)用成功的基石。萬(wàn)萬(wàn)丈高樓平地起,數(shù)據(jù)庫(kù)設(shè)計(jì)如同高樓的基石,是開(kāi)發(fā)高品質(zhì)應(yīng)用的前提。</p><p><b> 1.1 數(shù)據(jù)庫(kù)技術(shù)</b></p><p>
17、 1.1.1 數(shù)據(jù)庫(kù)體系結(jié)構(gòu)</p><p> 數(shù)據(jù)的體系結(jié)構(gòu)分成三級(jí):內(nèi)部級(jí)(Internal),概念級(jí)(Conceptual)和外部級(jí)(External)。這個(gè)三級(jí)結(jié)構(gòu)有時(shí)也稱為“三級(jí)模式結(jié)構(gòu)”。1 外部級(jí):最接近用戶,是單個(gè)用戶所能看到的數(shù)據(jù)特性。單個(gè)用戶使用的數(shù)據(jù)視圖的描述稱為“外模式”。2 概念級(jí):涉及到所有用戶的數(shù)據(jù)定義、是全局的數(shù)據(jù)視圖。全局視圖的描述稱為
18、“概念模式”。3 內(nèi)部級(jí):最接近于物理存儲(chǔ)設(shè)備,涉及到實(shí)際數(shù)據(jù)存儲(chǔ)的結(jié)構(gòu)物理存儲(chǔ)數(shù)據(jù)視圖的描述稱為“內(nèi)模式”。數(shù)據(jù)庫(kù)的三級(jí)模式結(jié)構(gòu)是數(shù)據(jù)的三個(gè)抽象級(jí)別。它把數(shù)據(jù)的具體組織留給DBMS去做,用戶只要抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的表示和存儲(chǔ),這樣就減輕了用戶使用系統(tǒng)的負(fù)擔(dān)。</p><p> 1.1.2 數(shù)據(jù)庫(kù)管理信息系統(tǒng)(DBMS)<
19、/p><p> 數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)是指數(shù)據(jù)庫(kù)系統(tǒng)中管理數(shù)據(jù)的軟件系統(tǒng)。DBMS是數(shù)據(jù)庫(kù)系統(tǒng)的核心組成部分。對(duì)數(shù)據(jù)庫(kù)的一切操作,包括定義、查詢、更新及各種控制,都是通過(guò)DBMS進(jìn)行的。在不同的計(jì)算機(jī)系統(tǒng)中,由于缺乏統(tǒng)一的標(biāo)準(zhǔn),即使同種數(shù)據(jù)模型的DBMS,它們?cè)谟脩艚涌?、系統(tǒng)功能方面也常常是不相同的。用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,是由DBMS把操作從應(yīng)用程序帶到外部級(jí)、概念級(jí)、再導(dǎo)向
20、內(nèi)部級(jí),進(jìn)而操作存儲(chǔ)器中的數(shù)據(jù)。DBMS的主要目標(biāo),是使數(shù)據(jù)作為一種可管理的資源處理。DBMS的主要功能為:1 數(shù)據(jù)庫(kù)定義功能:DBMS提供數(shù)據(jù)定義語(yǔ)言(DDL)定義數(shù)據(jù)庫(kù)的三級(jí)結(jié)構(gòu),包括外模式、概念模式、內(nèi)模式及基相互之間的映象,定義數(shù)據(jù)的完整性、安全控制等約束。因此,在DBMS中應(yīng)包括DDL的編譯程序。2 數(shù)據(jù)庫(kù)的操縱功能:DBMS提供數(shù)據(jù)操縱語(yǔ)言(DML
21、)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的操作?;镜臄?shù)據(jù)操作分成兩類四種:檢索(查詢)、更新(插入、刪除、修改)3 數(shù)據(jù)庫(kù)的保護(hù)功能:數(shù)據(jù)庫(kù)中的數(shù)據(jù)</p><p> 4 數(shù)據(jù)庫(kù)的恢復(fù):在數(shù)據(jù)庫(kù)被破壞或數(shù)據(jù)不正確時(shí),系統(tǒng)有能力把數(shù)據(jù)庫(kù)恢復(fù)到正確的狀態(tài)。5 數(shù)據(jù)庫(kù)的并發(fā)控制:DBMS的并發(fā)控制子系統(tǒng)能防止錯(cuò)誤發(fā)生,正確處理好多用戶、多任務(wù)環(huán)境下的并發(fā)操作。
22、6 數(shù)據(jù)庫(kù)的完整性控制:保證數(shù)據(jù)庫(kù)中數(shù)據(jù)及語(yǔ)義的正確性和有效性,防止任何對(duì)數(shù)據(jù)造成錯(cuò)誤的操作。7 數(shù)據(jù)庫(kù)的安全性控制:防止未經(jīng)授權(quán)的用戶蓄謀或無(wú)意地存取數(shù)據(jù)庫(kù)中的數(shù)據(jù),以免數(shù)據(jù)的泄露、更改或破壞。8 數(shù)據(jù)庫(kù)的存儲(chǔ)管理:把各種DML語(yǔ)句轉(zhuǎn)換成低層的文件系統(tǒng)命令,起到數(shù)據(jù)的存儲(chǔ)、檢索和更新的作用。9 數(shù)據(jù)庫(kù)的維護(hù)功能:它有許多實(shí)用程序提供給數(shù)據(jù)庫(kù)管理員:
23、</p><p> 數(shù)據(jù)裝載程序備份程序文件重組織程序性能監(jiān)控程序10 數(shù)據(jù)字典:數(shù)據(jù)庫(kù)系統(tǒng)中存放三級(jí)結(jié)構(gòu)定義的數(shù)據(jù)庫(kù)稱為數(shù)據(jù)字典(DD)。對(duì)數(shù)據(jù)庫(kù)的操作都要通過(guò)訪問(wèn)DD才能實(shí)現(xiàn),通常DD中還存放數(shù)據(jù)庫(kù)運(yùn)行時(shí)的統(tǒng)計(jì)信息。</p><p> 1.2
24、公交查詢系統(tǒng) </p><p> 1.2.1 系統(tǒng)功能</p><p> 1 基于瀏覽器(B/S模式)的公交線路分類查詢;</p><p> 2 數(shù)據(jù)的錄入、修改、添加、刪除。</p><p> 1.2.2系統(tǒng)運(yùn)行環(huán)境該系統(tǒng)采用Browse
25、r/Server模式進(jìn)行設(shè)計(jì): 在服務(wù)器上運(yùn)行Web發(fā)布服務(wù)器、數(shù)據(jù)庫(kù)程序,服務(wù)器操作系統(tǒng)為WindowsNT/2000/XP/2003 server,客戶機(jī)操作為Windows9×/ NT/2000/XP/2003,其上運(yùn)行瀏覽器程序,服務(wù)器和客戶機(jī)可為同一設(shè)備。</p><p> 1.2.4 系統(tǒng)開(kāi)發(fā)工具該系統(tǒng)采用JDK Java環(huán)境進(jìn)行開(kāi)
26、發(fā),數(shù)據(jù)庫(kù)服務(wù)器為MySQL,WEB發(fā)布服務(wù)器為T(mén)omcat Server;客戶端使用瀏覽器運(yùn)行程序,整個(gè)系統(tǒng)調(diào)試成功。</p><p> 1.2.4現(xiàn)狀與前景 </p><p> 公交查詢系統(tǒng)現(xiàn)狀分析:鑒于中國(guó)目前的經(jīng)濟(jì)發(fā)展?fàn)顩r,中國(guó)人出行還是以公交車為主,所以每個(gè)城市的公交系統(tǒng)都比較龐大發(fā)達(dá)。公交查詢系統(tǒng)是近兩年出現(xiàn)的新生事物,每個(gè)城市的發(fā)展?fàn)顩r也是良莠不齊。目前的公交查詢系統(tǒng),基
27、本上具備一下功能:采用車站站點(diǎn)查詢、車次查詢、路線分析查詢?nèi)N查詢形式,不僅能夠查詢到各條線路的起停站點(diǎn),同時(shí)還能夠分析出換乘車輛情況。 </p><p> 公交查詢系統(tǒng)的發(fā)展前景:未來(lái)的公交查詢系統(tǒng),將是基于B/S架構(gòu),通過(guò)瀏覽器查詢,通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)全面聯(lián)網(wǎng),實(shí)現(xiàn)中心控制、自動(dòng)更新、更多的查詢方式、和GIS系統(tǒng)的互聯(lián)互通等等更多更強(qiáng)大的功能。</p><p> 1.3
28、60;本文所作的工作</p><p> 本文首先介紹了城市公交查詢系統(tǒng)的應(yīng)用背景、開(kāi)發(fā)環(huán)境以及選用的開(kāi)發(fā)工具與數(shù)據(jù)庫(kù)的關(guān)系,闡明了計(jì)算機(jī)互聯(lián)網(wǎng)絡(luò)的概念。并對(duì)數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)、DBMS進(jìn)行了介紹;介紹關(guān)系型數(shù)據(jù)庫(kù)的基本概念,著重說(shuō)明了幾個(gè)關(guān)鍵概念的定義;然后對(duì)SQL語(yǔ)言作了一個(gè)介紹說(shuō)明;從特點(diǎn)和功能入手,介紹Java、JSP;并且介紹了B/S模式的概念、特點(diǎn);用軟件工程的方法分析城市公交查詢系統(tǒng),對(duì)整個(gè)系統(tǒng)進(jìn)行了
29、需求分析、功能模塊劃分,并通過(guò)ER圖對(duì)數(shù)據(jù)庫(kù)進(jìn)行概念設(shè)計(jì);對(duì)城市公交查詢系統(tǒng)的具體設(shè)計(jì),描述了查詢、錄入模塊的實(shí)現(xiàn)過(guò)程。 最后,在結(jié)束語(yǔ)的總結(jié)部分指出了系統(tǒng)的亮點(diǎn)以及不足之處,簡(jiǎn)單介紹了自己開(kāi)發(fā)過(guò)程中的體會(huì)與心得:在摸索中實(shí)踐,在實(shí)踐中摸索。</p><p> 2 基于Eclispe平臺(tái)下的開(kāi)發(fā)技術(shù)</p><p> Java是Sun Microsystems于1995年推出
30、的高級(jí)編程語(yǔ)言,Java 領(lǐng)域的JavaSE、JavaEE技術(shù)已發(fā)展成為同C#和.NET平分天下的應(yīng)用軟件開(kāi)發(fā)平臺(tái)和技術(shù)。</p><p> 在 Sun 正式發(fā)布 JSP(JavaServer Pages) 之后,這種新的 Web 應(yīng)用開(kāi)發(fā)技術(shù)很快引起了人們的關(guān)注。 JSP 為創(chuàng)建高度動(dòng)態(tài)的 Web 應(yīng)用提供了一個(gè)獨(dú)特的開(kāi)發(fā)環(huán)境。按照 Sun 的說(shuō)法, JSP 能夠適應(yīng)市場(chǎng)上包括 Apache WebServe
31、r,IIS4.0 在內(nèi)的 85% 的服務(wù)器產(chǎn)品。</p><p> 當(dāng)今比較流行的軟件技術(shù)研發(fā)模式是C/S和B/S的體系結(jié)構(gòu)。C/S(Client/Server)結(jié)構(gòu),即客戶機(jī)和服務(wù)器結(jié)構(gòu)。通過(guò)C/S可以充分利用兩端硬件環(huán)境的優(yōu)勢(shì),將任務(wù)合理分配到Client端和Server端來(lái)實(shí)現(xiàn),降低了系統(tǒng)的通訊開(kāi)銷。</p><p> Eclipse 這樣功能完整且成熟的開(kāi)發(fā)環(huán)境,是由藍(lán)色巨人I
32、BM 所釋出。IBM 花了4 千萬(wàn)美金來(lái)開(kāi)發(fā)這個(gè)IDE(Integrated Development Environment)。第一版1.0 在2001 年11 月釋出,隨后逐漸受到歡迎。Eclipse已經(jīng)成為開(kāi)放原始碼計(jì)劃(Open Source Project),大部分的開(kāi)發(fā)扔然掌握在IBM手中,但是有一部份由eclipse.org的軟件聯(lián)盟主導(dǎo)。</p><p> 2.1 Java語(yǔ)言介紹</p&g
33、t;<p> 2.1.1 Java 語(yǔ)言簡(jiǎn)介</p><p> Java不僅可以開(kāi)發(fā)桌面應(yīng)用程序如銀行軟件、商場(chǎng)結(jié)算軟件;還可以開(kāi)發(fā)面向Internet的應(yīng)用程序,如當(dāng)紅的網(wǎng)上數(shù)碼商城、阿里巴巴、易趣網(wǎng)等都是用java開(kāi)發(fā)出來(lái)的。</p><p> Java是一種跨平臺(tái),適合于分布式計(jì)算環(huán)境的面向?qū)ο缶幊陶Z(yǔ)言。具體來(lái)說(shuō),它具有如下特性: </p><
34、p> 簡(jiǎn)單性、面向?qū)ο?、分布式、解釋型、可靠、安全、平臺(tái)無(wú)關(guān)、可移植、高性能、多線程、動(dòng)態(tài)性等。 </p><p> 下面我們將重點(diǎn)介紹Java語(yǔ)言的面向?qū)ο?、平臺(tái)無(wú)關(guān)、分布式、多線程、可靠和安全等特性。 </p><p><b> 1 面向?qū)ο?</b></p><p> 面向?qū)ο笃鋵?shí)是現(xiàn)實(shí)世界模型的自然延伸?,F(xiàn)實(shí)世界中任何實(shí)體
35、都可以看作是對(duì)象。對(duì)象之間通過(guò)消息相互作用。另外,現(xiàn)實(shí)世界中任何實(shí)體都可歸屬于某類事物,任何對(duì)象都是某一類事物的實(shí)例。如果說(shuō)傳統(tǒng)的過(guò)程式編程語(yǔ)言是以過(guò)程為中心以算法為驅(qū)動(dòng)的話,面向?qū)ο蟮木幊陶Z(yǔ)言則是以對(duì)象為中心以消息為驅(qū)動(dòng)。用公式表示,過(guò)程式編程語(yǔ)言為:程序=算法+數(shù)據(jù);面向?qū)ο缶幊陶Z(yǔ)言為:程序=對(duì)象+消息。 </p><p> 所有面向?qū)ο缶幊陶Z(yǔ)言都支持三個(gè)概念:封裝、多態(tài)性和繼承,Java也不例外。現(xiàn)實(shí)世界
36、中的對(duì)象均有屬性和行為,映射到計(jì)算機(jī)程序上,屬性則表示對(duì)象的數(shù)據(jù),行為表示對(duì)象的方法(其作用是處理數(shù)據(jù)或同外界交互)。所謂封裝,就是用一個(gè)自主式框架把對(duì)象的數(shù)據(jù)和方法聯(lián)在一起形成一個(gè)整體??梢哉f(shuō),對(duì)象是支持封裝的手段,是封裝的基本單位。Java語(yǔ)言的封裝性較強(qiáng),因?yàn)镴ava無(wú)全程變量,無(wú)主函數(shù),在Java中絕大部分成員是對(duì)象,只有簡(jiǎn)單的數(shù)字類型、字符類型和布爾類型除外。而對(duì)于這些類型,Java也提供了相應(yīng)的對(duì)象類型以便與其他對(duì)象交互操作
37、。 </p><p> 多態(tài)性就是多種表現(xiàn)形式,具體來(lái)說(shuō),可以用“一個(gè)對(duì)外接口,多個(gè)內(nèi)在實(shí)現(xiàn)方法”表示。舉一個(gè)例子,計(jì)算機(jī)中的堆棧可以存儲(chǔ)各種格式的數(shù)據(jù),包括整型,浮點(diǎn)或字符。不管存儲(chǔ)的是何種數(shù)據(jù),堆棧的算法實(shí)現(xiàn)是一樣的。針對(duì)不同的數(shù)據(jù)類型,編程人員不必手工選擇,只需使用統(tǒng)一接口名,系統(tǒng)可自動(dòng)選擇。運(yùn)算符重載(operator overload)一直被認(rèn)為是一種優(yōu)秀的多態(tài)機(jī)制體現(xiàn),但由于考慮到它會(huì)使程序變得難以
38、理解,所以Java最后還是把它取消了。 </p><p> 繼承是指一個(gè)對(duì)象直接使用另一對(duì)象的屬性和方法。事實(shí)上,我們遇到的很多實(shí)體都有繼承的含義。例如,若把汽車看成一個(gè)實(shí)體,它可以分成多個(gè)子實(shí)體,如:卡車、公共汽車等。這些子實(shí)體都具有汽車的特性,因此,汽車是它們的“父親”,而這些子實(shí)體則是汽車的“孩子”。Java提供給用戶一系列類(class),Java的類有層次結(jié)構(gòu),子類可以繼承父類的屬性和方法。與另外一些
39、面向?qū)ο缶幊陶Z(yǔ)言不同,Java只支持單一繼承。 </p><p><b> 2 平臺(tái)無(wú)關(guān)性 </b></p><p> Java是平臺(tái)無(wú)關(guān)的語(yǔ)言是指用Java寫(xiě)的應(yīng)用程序不用修改就可在不同的軟硬件平臺(tái)上運(yùn)行。平臺(tái)無(wú)關(guān)有兩種:源代碼級(jí)和目標(biāo)代碼級(jí)。C和C++具有一定程度的源代碼級(jí)平臺(tái)無(wú)關(guān),表明用C或C++寫(xiě)的應(yīng)用程序不用修改只需重新編譯就可以在不同平臺(tái)上運(yùn)行。<
40、;/p><p> Java主要靠Java虛擬機(jī)(JVM)在目標(biāo)碼級(jí)實(shí)現(xiàn)平臺(tái)無(wú)關(guān)性。JVM是一種抽象機(jī)器,它附著在具體操作系統(tǒng)之上,本身具有一套虛機(jī)器指令,并有自己的棧、寄存器組等。但JVM通常是在軟件上而不是在硬件上實(shí)現(xiàn)。(目前,SUN系統(tǒng)公司已經(jīng)設(shè)計(jì)實(shí)現(xiàn)了Java芯片,主要使用在網(wǎng)絡(luò)計(jì)算機(jī)NC上。 </p><p> 另外,Java芯片的出現(xiàn)也會(huì)使Java更容易嵌入到家用電器中。)JVM
41、是Java平臺(tái)無(wú)關(guān)的基礎(chǔ),在JVM上,有一個(gè)Java解釋器用來(lái)解釋Java編譯器編譯后的程序。Java編程人員在編寫(xiě)完程序后,通過(guò)Java編譯器將Java源程序編譯為JVM的字節(jié)代碼。任何一臺(tái)機(jī)器只要配備了Java解釋器,就可以運(yùn)行這個(gè)程序,而不管這種字節(jié)碼是在何種平臺(tái)上生成的。另外,Java采用的是基于IEEE標(biāo)準(zhǔn)的數(shù)據(jù)類型。通過(guò)JVM保證數(shù)據(jù)類型的一致性,也確保了Java的平臺(tái)無(wú)關(guān)性。 </p><p>
42、Java的平臺(tái)無(wú)關(guān)性具有深遠(yuǎn)意義。首先,它使得編程人員所夢(mèng)寐以求的事情(開(kāi)發(fā)一次軟件在任意平臺(tái)上運(yùn)行)變成事實(shí),這將大大加快和促進(jìn)軟件產(chǎn)品的開(kāi)發(fā)。其次Java的平臺(tái)無(wú)關(guān)性正好迎合了“網(wǎng)絡(luò)計(jì)算機(jī)”思想。如果大量常用的應(yīng)用軟件(如字處理軟件等)都用Java重新編寫(xiě),并且放在某個(gè)Internet服務(wù)器上,那么具有NC的用戶將不需要占用大量空間安裝軟件,他們只需要一個(gè)Java解釋器,每當(dāng)需要使用某種應(yīng)用軟件時(shí),下載該軟件的字節(jié)代碼即可,運(yùn)行結(jié)果
43、也可以發(fā)回服務(wù)器。目前,已有數(shù)家公司開(kāi)始使用這種新型的計(jì)算模式構(gòu)筑自己的企業(yè)信息系統(tǒng)。 </p><p><b> 3 分布式 </b></p><p> 分布式包括數(shù)據(jù)分布和操作分布。數(shù)據(jù)分布是指數(shù)據(jù)可以分散在網(wǎng)絡(luò)的不同主機(jī)上,操作分布是指把一個(gè)計(jì)算分散在不同主機(jī)上處理。 Java支持WWW客戶機(jī)/服務(wù)器計(jì)算模式,因此,它支持這兩種分布性。對(duì)于前者,Java提供
44、了一個(gè)叫作URL的對(duì)象,利用這個(gè)對(duì)象,你可以打開(kāi)并訪問(wèn)具有相同URL地址上的對(duì)象,訪問(wèn)方式與訪問(wèn)本地文件系統(tǒng)相同。對(duì)于后者,Java的applet小程序可以從服務(wù)器下載到客戶端,即部分計(jì)算在客戶端進(jìn)行,提高系統(tǒng)執(zhí)行效率。 </p><p> Java提供了一整套網(wǎng)絡(luò)類庫(kù),開(kāi)發(fā)人員可以利用類庫(kù)進(jìn)行網(wǎng)絡(luò)程序設(shè)計(jì),方便得實(shí)現(xiàn)Java的分布式特性。 </p><p> 4 可靠性和安全性 &l
45、t;/p><p> Java最初設(shè)計(jì)目的是應(yīng)用于電子類消費(fèi)產(chǎn)品,因此要求較高的可靠性。Java雖然源于C++,但它消除了許多C++不可靠因素,可以防止許多編程錯(cuò)誤。首先,Java是強(qiáng)類型的語(yǔ)言,要求顯式的方法聲明,這保證了編譯器可以發(fā)現(xiàn)方法調(diào)用錯(cuò)誤,保證程序更加可靠;其次,Java不支持指針,這杜絕了內(nèi)存的非法訪問(wèn);第三,Java的自動(dòng)單元收集防止了內(nèi)存丟失等動(dòng)態(tài)內(nèi)存分配導(dǎo)致的問(wèn)題;第四,Java解釋器運(yùn)行時(shí)實(shí)施檢
46、查,可以發(fā)現(xiàn)數(shù)組和字符串訪問(wèn)的越界,最后,Java提供了異常處理機(jī)制,程序員可以把一組錯(cuò)誤代碼放在一個(gè)地方,這樣可以簡(jiǎn)化錯(cuò)誤處理任務(wù)便于恢復(fù)。 </p><p> 由于Java主要用于網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā),因此對(duì)安全性有較高的要求。如果沒(méi)有安全保證,用戶從網(wǎng)絡(luò)下載程序執(zhí)行就非常危險(xiǎn)。Java通過(guò)自己的安全機(jī)制防止了病毒程序的產(chǎn)生和下載程序?qū)Ρ镜叵到y(tǒng)的威脅破壞。當(dāng)Java字節(jié)碼進(jìn)入解釋器時(shí),首先必須經(jīng)過(guò)字節(jié)碼校驗(yàn)器的
47、檢查,然后,Java解釋器將決定程序中類的內(nèi)存布局,隨后,類裝載器負(fù)責(zé)把來(lái)自網(wǎng)絡(luò)的類裝載到單獨(dú)的內(nèi)存區(qū)域,避免應(yīng)用程序之間相互干擾破壞。最后,客戶端用戶還可以限制從網(wǎng)絡(luò)上裝載的類只能訪問(wèn)某些文件系統(tǒng)。 </p><p> 上述幾種機(jī)制結(jié)合起來(lái),使得Java成為安全的編程語(yǔ)言。 </p><p><b> 5 多線程 </b></p><p>
48、; 線程是操作系統(tǒng)的一種新概念,它又被稱作輕量進(jìn)程,是比傳統(tǒng)進(jìn)程更小的可并發(fā)執(zhí)行的單位。 </p><p> C和C++采用單線程體系結(jié)構(gòu),而Java卻提供了多線程支持。Java在兩方面支持多線程。一方面,Java環(huán)境本身就是多線程的。若干個(gè)系統(tǒng)線程運(yùn)行負(fù)責(zé)必要的無(wú)用單元回收,系統(tǒng)維護(hù)等系統(tǒng)級(jí)操作;另一方面,Java語(yǔ)言內(nèi)置多線程控制,可以大大簡(jiǎn)化多線程應(yīng)用程序開(kāi)發(fā)。Java提供了一個(gè)類Thread,由它負(fù)責(zé)
49、啟動(dòng)運(yùn)行,終止線程,并可檢查線程狀態(tài)。Java的線程還包括一組同步原語(yǔ)。這些原語(yǔ)負(fù)責(zé)對(duì)線程實(shí)行并發(fā)控制。利用Java的多線程編程接口,開(kāi)發(fā)人員可以方便得寫(xiě)出支持多線程的應(yīng)用程序,提高程序執(zhí)行效率。必須注意地是,Java的多線程支持在一定程度上受運(yùn)行時(shí)支持平臺(tái)的限制。例如,如果操作系統(tǒng)本身不支持多線程,Java的多線程特性可能就表現(xiàn)不出來(lái)。</p><p> 2.1.2 Java技術(shù)平臺(tái)簡(jiǎn)介</p>
50、<p> 1 JavaSE:Java Platform,Standard Edition</p><p> J2SE 包含那些構(gòu)成Java語(yǔ)言核心的類。比如:數(shù)據(jù)庫(kù)連接、接口定義、輸入/輸出、網(wǎng)絡(luò)編程,主要用于桌面應(yīng)用軟件的編程。</p><p> 2JavaME:Java 2 Micro Edition </p><p> J2ME是Java
51、2的一個(gè)組成部分,它與J2SE、J2EE并稱。根據(jù)Sun的定義:J2ME是一種高度優(yōu)化的Java運(yùn)行環(huán)境,主要針對(duì)消費(fèi)類電子設(shè)備的,例如蜂窩電話和可視電話、數(shù)字機(jī)頂盒、汽車導(dǎo)航系統(tǒng)等等。J2ME技術(shù)在1999年的JavaOne Developer Conference大會(huì)上正式推出,它將Java語(yǔ)言的與平臺(tái)無(wú)關(guān)的特性移植到小型電子設(shè)備上,允許移動(dòng)無(wú)線設(shè)備之間共享應(yīng)用程序。</p><p> 3JavaEE:Ja
52、va Platform,Enterprise Edition </p><p> J2EE是一種利用Java 2平臺(tái)來(lái)簡(jiǎn)化企業(yè)解決方案的開(kāi)發(fā)、部署和管理相關(guān)的復(fù)雜問(wèn)題的體系結(jié)構(gòu)。J2EE技術(shù)的基礎(chǔ)就是核心Java平臺(tái)或Java 2平臺(tái)的標(biāo)準(zhǔn)版,J2EE不僅鞏固了標(biāo)準(zhǔn)版中的許多優(yōu)點(diǎn),例如"編寫(xiě)一次、隨處運(yùn)行"的特性、方便存取數(shù)據(jù)庫(kù)的JDBC 、PI、CORBA技術(shù)以及能夠在Inte
53、rnet應(yīng)用中保護(hù)數(shù)據(jù)的安全模式等等,同時(shí)還提供了對(duì) EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技術(shù)的全面支持。其最終目的就是成為一個(gè)能夠使企業(yè)開(kāi)發(fā)者大幅縮短投放市場(chǎng)時(shí)間的體系結(jié)構(gòu)。</p><p> 2.1.3 Java 程序框架</p><p> public class Hello
54、SODI {//外層框架</p><p> public static void main(String[ ] args) {//Java入口程序框架</p><p> …這里填寫(xiě)代碼!...</p><p><b> }</b></p><p><b> }</b></p>
55、<p> 2.1.4 Java 優(yōu)點(diǎn)</p><p><b> 1 跨越平臺(tái)的限制</b></p><p> 盡管目前Windows桌面系統(tǒng)一統(tǒng)天下,但是服務(wù)器系統(tǒng)采用的操作系統(tǒng)卻具有多樣性,包括Linux、Unix、Windows NT/2000Server等系統(tǒng)都可以實(shí)現(xiàn)企業(yè)級(jí)應(yīng)用。即便是桌面系統(tǒng),中國(guó)政府出于安全和國(guó)家戰(zhàn)略的考慮,希望有自己的操作
56、系統(tǒng),Linux的出現(xiàn)使這種想法變成了現(xiàn)實(shí),不久也許國(guó)產(chǎn)的Linux系統(tǒng)將占據(jù)更多桌面系統(tǒng)的市場(chǎng)份額。</p><p> 傳統(tǒng)的C/S架構(gòu)的軟件需要針對(duì)不同的操作系統(tǒng)開(kāi)發(fā)不同版本的軟件,面對(duì)眾多的操作系統(tǒng)和軟件快速的升級(jí)換代, 采用這一架構(gòu)開(kāi)發(fā)軟件,對(duì)于企業(yè)的IT投資無(wú)疑是一種巨大的風(fēng)險(xiǎn)。而采用Java語(yǔ)言實(shí)現(xiàn)的B/S架構(gòu)的軟件產(chǎn)品真正做到了“一次編寫(xiě)處處運(yùn)行(Write Once, Run Anywhere)
57、” ,對(duì)企業(yè)而言,可以規(guī)避將來(lái)更換操作系統(tǒng)所帶來(lái)的風(fēng)險(xiǎn)。</p><p><b> 2 健壯的系統(tǒng)</b></p><p> Java語(yǔ)言實(shí)現(xiàn)的軟件具有天然的健壯性。這是Java語(yǔ)言自身的特性保證的。利用Java寫(xiě)成的軟件幾乎不可能造成系統(tǒng)崩潰,這正是安全性要求很高的企業(yè)級(jí)應(yīng)用所不可或缺的特性。</p><p> 2.1.4 J2EE技術(shù)
58、簡(jiǎn)介 </p><p> J2EE是純粹基于Java的解決方案。1998年,Sun發(fā)布了EJB 1.0標(biāo)準(zhǔn)。EJB為企業(yè)級(jí)應(yīng)用中必不可少的數(shù)據(jù)封裝、事務(wù)處理、交易控制等功能提供了良好的技術(shù)基礎(chǔ)。至此,J2EE平臺(tái)的三大核心技術(shù)Servlet、JSP和EJB都已先后問(wèn)世。1999年,Sun正式發(fā)布了J2EE的第一個(gè)版本。緊接著,遵循J2EE標(biāo)準(zhǔn),為企業(yè)級(jí)應(yīng)用提供支撐平臺(tái)的各類應(yīng)用服務(wù)軟件爭(zhēng)先恐后地涌現(xiàn)了出來(lái)。IB
59、M的WebSphere、BEA的WebLogic都是這一領(lǐng)域里最為成功的商業(yè)軟件平臺(tái)。隨著開(kāi)源運(yùn)動(dòng)的興起,JBoss等開(kāi)源世界里的應(yīng)用服務(wù)新秀也吸引了許多用戶的注意力。到2003年時(shí),Sun的J2EE版本已經(jīng)升級(jí)到了1.4版,其中三個(gè)關(guān)鍵組件的版本也演進(jìn)到了Servlet 2.4、JSP 2.0和EJB 2.1。至此,J2EE體系及相關(guān)的軟件產(chǎn)品已經(jīng)成為了Web服務(wù)端開(kāi)發(fā)的一個(gè)強(qiáng)有力的支撐環(huán)境。</p><p>
60、 2.2 JSP技術(shù)介紹:</p><p> 2.2.1 JSP與ASP的簡(jiǎn)單比較</p><p> JSP 與 Microsoft 的 ASP 技術(shù)非常相似。兩者都提供在 HTML 代碼中混合某種程序代碼、由語(yǔ)言引擎解釋執(zhí)行程序代碼的能力。在 ASP 或 JSP 環(huán)境下, HTML 代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來(lái)描述處理邏輯。普通的 HTML 頁(yè)面只依賴于 Web
61、 服務(wù)器,而 ASP 和 JSP 頁(yè)面需要附加的語(yǔ)言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到 HTML 代碼中,然后一起發(fā)送給瀏覽器。 ASP 和 JSP 都是面向 Web 服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。 ASP 的編程語(yǔ)言是 VBScript 之類的腳本語(yǔ)言, JSP 使用的是 Java ,這是兩者最明顯的區(qū)別。此外, ASP 與 JSP 還有一個(gè)更為本質(zhì)的區(qū)別:兩種語(yǔ)言引擎
62、用完全不同的方式處理頁(yè)面中嵌入的程序代碼。在 ASP 下, VBScript 代碼被 ASP 引擎解釋執(zhí)行;在 JSP 下,代碼被編譯成 Servlet 并由 Java 虛擬機(jī)執(zhí)行,這種編譯操作僅在對(duì) JSP 頁(yè)面的第一次請(qǐng)求時(shí)發(fā)生。 </p><p> 2.2.2 JSP運(yùn)行環(huán)境</p><p> Sun 公司的 JSP 主頁(yè)在 http://www.javasoft.co
63、m/products/jsp/index.html ,從這里還可以下載 JSP 規(guī)范,這些規(guī)范定義了供應(yīng)商在創(chuàng)建 JSP 引擎時(shí)所必須遵從的一些規(guī)則。在運(yùn)行 JSP 示例頁(yè)面之前,請(qǐng)注意一下安裝 JSWDK 的目錄,特別是“ work ”子目錄下的內(nèi)容。執(zhí)行示例頁(yè)面時(shí),可以在這里看到 JSP 頁(yè)面如何被轉(zhuǎn)換成 Java 源文件,然后又被編譯成 class 文件(即 Servlet )。 JSWDK 軟件包中
64、的示例頁(yè)面分為兩類,它們或者是 JSP 文件,或者是包含一個(gè)表單的 HTML 文件,這些表單均由 JSP 代碼處理。與 ASP 一樣, JSP 中的 Java 代碼均在服務(wù)器端執(zhí)行。因此,在瀏覽器中使用“查看源文件”菜單是無(wú)法看到 JSP 源代碼的,只能看到結(jié)果 HTML 代碼。所有示例的源代碼均通過(guò)一個(gè)單獨(dú)的“ examples ”頁(yè)面提供。 </p><p> 2.2.3 JSP頁(yè)面示例<
65、;/p><p> 下面我們分析一個(gè)簡(jiǎn)單的 JSP 頁(yè)面。您可以在 JSWDK 的 examples 目錄下創(chuàng)建另外一個(gè)目錄存放此文件,文件名字可以任意,但擴(kuò)展名必須為 .jsp 。從下面的代碼清單中可以看到, JSP 頁(yè)面除了比普通 HTML 頁(yè)面多一些 Java 代碼外,兩者具有基本相同的結(jié)構(gòu)。 Java 代碼是通過(guò) < % 和 %> 符號(hào)加入到 HTML 代碼中間的,它的主要功能是生成并顯示一個(gè)從
66、0 到 9 的字符串。在這個(gè)字符串的前面和后面都是一些通過(guò) HTML 代碼輸出的文本。 < html>< head>< title>JSP 頁(yè)面 < /title>< /head>< body>< %@ page language="jav
67、a" %>< %! String str="0"; %>< % for (int i=1; i < 10; i++) {str = str + i;</p><p> } %> JSP 輸出之前。
68、< p>< %= str %> </ p></p><p> JSP 輸出之后。 < /body> < /html></p><p> 這個(gè)
69、JSP 頁(yè)面可以分成幾個(gè)部分來(lái)分析: </p><p> 首先是 JSP 指令。它描述的是頁(yè)面的基本信息,如所使用的語(yǔ)言、是否維持會(huì)話狀態(tài)、是否使用緩沖等。 JSP 指令由 < %@ 開(kāi)始, %> 結(jié)束。在本例中,指令“ < %@ page language="java" %> ”只簡(jiǎn)單地定義了本例使用的是 Java 語(yǔ)言(當(dāng)前,在 JSP 規(guī)范中 Java 是唯一被
70、支持的語(yǔ)言)。 接下來(lái)的是 JSP 聲明。 JSP 聲明可以看成是定義類這一層次的變量和方法的地方。 JSP 聲明由 < %! 開(kāi)始, %> 結(jié)束。如本例中的“ < %! String str="0"; %> ”定義了一個(gè)字符串變量。在每一項(xiàng)聲明的后面都必須有一個(gè)分號(hào),就象在普通 Java 類中聲明成員變量一樣。 位于 < % 和 %> 之間的代碼塊是描述 JSP 頁(yè)面處理邏輯的
71、Java 代碼,如本例中的 for 循環(huán)所示。 最后,位于 < %= 和 %> 之間的代碼稱為 JSP 表達(dá)式,如本例中的“ < %= str %> ”所示。 JSP 表達(dá)式提供了一種將 JSP 生成的數(shù)值嵌入 HTML 頁(yè)面的簡(jiǎn)單方法。</p><p> 會(huì)話狀態(tài)維持是 Web 應(yīng)用開(kāi)發(fā)者必須面對(duì)的問(wèn)題。有多種方法可以用來(lái)解決這個(gè)問(wèn)題,如使用 Cookies 、隱藏的表單輸入域,或直
72、接將狀態(tài)信息附加到 URL 中。 Java Servlet 提供了一個(gè)在多個(gè)請(qǐng)求之間持續(xù)有效的會(huì)話對(duì)象,該對(duì)象允許用戶存儲(chǔ)和提取會(huì)話狀態(tài)信息。 JSP 也同樣支持 Servlet 中的這個(gè)概念。</p><p> 在 Sun 的 JSP 指南 中可以看到許多有關(guān)隱含對(duì)象的說(shuō)明(隱含的含義是,這些對(duì)象可以直接引用,不需要顯式地聲明,也不需要專門(mén)的代碼創(chuàng)建其實(shí)例)。例如 request 對(duì)象,它是 HttpServ
73、letRequest 的一個(gè)子類。該對(duì)象包含了所有有關(guān)當(dāng)前瀏覽器請(qǐng)求的信息,包括 Cookies , HTML 表單變量等等。 session 對(duì)象也是這樣一個(gè)隱含對(duì)象。這個(gè)對(duì)象在第一個(gè) JSP 頁(yè)面被裝載時(shí)自動(dòng)創(chuàng)建,并被關(guān)聯(lián)到 request 對(duì)象上。與 ASP 中的會(huì)話對(duì)象相似, JSP 中的 session 對(duì)象對(duì)于那些希望通過(guò)多個(gè)頁(yè)面完成一個(gè)事務(wù)的應(yīng)用是非常有用的。為說(shuō)明 session 對(duì)象的具體應(yīng)用,接下來(lái)我們用三個(gè)頁(yè)面模
74、擬一個(gè)多頁(yè)面的 Web 應(yīng)用。第一個(gè)頁(yè)面( q1.html )僅包含一個(gè)要求輸入用戶名字的 HTML 表單,代碼如下:< html>< body>< FORM METHOD=POST ACTION="q2.jsp">請(qǐng)輸入您的姓名:</p>
75、<p> 您喜歡吃什么 ?< input type=text name="food"></p><p> </p>< input type=submit value="SUBMIT"></p><p>
76、< /form>< /body>< /html>第三個(gè)頁(yè)面也是一個(gè) JSP 頁(yè)面( q3.jsp ),主要任務(wù)是顯示問(wèn)答結(jié)果。它從 session 對(duì)象提取 thename 的值并顯示它,以此證明雖然該值在第一個(gè)頁(yè)面輸入,但通過(guò) session 對(duì)象得以保留。 q3.jsp 的另外一個(gè)任務(wù)是提取在第
77、二個(gè)頁(yè)面中的用戶輸入并顯示它:< html>< body>< %@ page language="java" %>< %! String food=""; %>< %
78、food = request.getParameter("food");String name = (String) session.getValue("thename");%></p><p> 2.3 B/S結(jié)構(gòu)介紹</p><p> B/S(Browser/Ser
79、ver)結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。它是隨著Internet技術(shù)的興起而對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶工作界面通過(guò)WWW瀏覽器來(lái)實(shí)現(xiàn),極少部分事務(wù)邏輯在前端(Browser)實(shí)現(xiàn),主要事務(wù)邏輯在服務(wù)器端(Server)實(shí)現(xiàn)。大大簡(jiǎn)化了客戶端電腦載荷,減少了系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低了用戶的總體成本。B/S方式可以形成所謂三層以上的結(jié)構(gòu)。B/S結(jié)構(gòu)是一次到位開(kāi)發(fā),能實(shí)現(xiàn)不同人員,從不同地點(diǎn),以不同的接入方式
80、訪問(wèn)和操作共同的數(shù)據(jù)庫(kù);它能有效地保護(hù)數(shù)據(jù)平臺(tái)和管理訪問(wèn)權(quán)限,服務(wù)器數(shù)據(jù)庫(kù)也很安全。特別是在JAVA這樣的跨平臺(tái)語(yǔ)言出現(xiàn)之后,B/S架構(gòu)管理軟件更為方便、快捷、高效。B/S工作機(jī)制如圖3-1所示:</p><p> 傳統(tǒng)的C/S架構(gòu)(客戶機(jī)/服務(wù)器,Client/Server)方式中,業(yè)務(wù)邏輯位于客戶端,每完成一項(xiàng)事務(wù),都要頻繁地訪問(wèn)數(shù)據(jù)庫(kù),使得網(wǎng)絡(luò)上數(shù)據(jù)流量非常大,對(duì)于慢速連接的用戶,甚至無(wú)法使用。</
81、p><p> 圖 3.1 B/S工作機(jī)制</p><p> 2.3.1 Java程序框架</p><p> 為彌補(bǔ)上述C/S架構(gòu)的缺陷,人們發(fā)展出了三層或多層架構(gòu):客戶機(jī)—中間件(應(yīng)用服務(wù)器)—數(shù)據(jù)庫(kù)服務(wù)器(Client—Middle ware—Database Server)。在這種架構(gòu)中,業(yè)務(wù)邏輯放置于中間件服務(wù)器上,大量的數(shù)據(jù)流也位于中間件和數(shù)據(jù)庫(kù)之間,而
82、客戶機(jī)只是簡(jiǎn)單地發(fā)出請(qǐng)求,中間件接受請(qǐng)求后進(jìn)行事務(wù)處理并將處理的結(jié)果返回給客戶機(jī),這一類型的客戶機(jī)也稱之為“廋客戶”。B/S架構(gòu)實(shí)際上是三層架構(gòu)的一種,所不同的是客戶端就是目前幾乎每臺(tái)電腦中都有的網(wǎng)絡(luò)瀏覽器,而中間件則是Web應(yīng)用服務(wù)器。注意到主要的業(yè)務(wù)邏輯均由位于Web應(yīng)用服務(wù)器上的Servlet和JSP程序或EJB來(lái)處理。</p><p> 2.3.2 B/S架構(gòu)具備極大的優(yōu)越性</p>&l
83、t;p> 1 面向電子商務(wù)時(shí)代的技術(shù)</p><p> 將來(lái)所有的應(yīng)用系統(tǒng)幾乎都在互聯(lián)網(wǎng)或企業(yè)內(nèi)部廣域網(wǎng)上運(yùn)行,發(fā)展電子商務(wù)成為企業(yè)不可避免的信息化道路。B/S架構(gòu)的軟件正是電子商務(wù)的基石,正是這類軟件使得移動(dòng)辦公和分布式協(xié)同工作真正成為現(xiàn)實(shí)。無(wú)論在世界的那個(gè)角落,只需要一臺(tái)可以聯(lián)網(wǎng)的設(shè)備(計(jì)算機(jī)、PDA甚至手機(jī))都可以方便地與客戶聯(lián)系和與他人協(xié)同工作。</p><p> 2
84、軟件操作、維護(hù)和升級(jí)方式的革命</p><p> 軟件系統(tǒng)的改進(jìn)和升級(jí)越來(lái)越頻繁,B/S架構(gòu)的產(chǎn)品在維護(hù)和升級(jí)方面具備顯著的優(yōu)勢(shì)。無(wú)論用戶的規(guī)模有多大,有多少分支機(jī)構(gòu)都不會(huì)增加任何維護(hù)升級(jí)的工作量,所有的操作只對(duì)服務(wù)器進(jìn)行,通過(guò)遠(yuǎn)程連接服務(wù)器,異地的運(yùn)維人員甚至于可以做到遠(yuǎn)程維護(hù)和升級(jí),這對(duì)人力、時(shí)間、費(fèi)用的節(jié)省是相當(dāng)驚人的。所有的客戶端只是瀏覽器,所有的操作都和上網(wǎng)瀏覽網(wǎng)頁(yè)類似,使用者接受的培訓(xùn)也僅限于業(yè)務(wù)邏
85、輯而無(wú)需將大量精力浪費(fèi)學(xué)習(xí)軟件操作上。</p><p><b> 3 系統(tǒng)整合</b></p><p> 無(wú)論是辦公自動(dòng)化(OA)系統(tǒng),人力資源(HR)系統(tǒng),客戶關(guān)系管理(CRM)系統(tǒng),ERP等等,發(fā)展的趨勢(shì)是不斷融合。而采用統(tǒng)一的B/S結(jié)構(gòu)開(kāi)發(fā)的產(chǎn)品無(wú)論是現(xiàn)在還是將來(lái)都是最好的選擇,它提供了真正意義上無(wú)縫地與其它系統(tǒng)進(jìn)行整合的方案。</p><
86、;p> 2.4 J2EE所運(yùn)用到的數(shù)據(jù)庫(kù)技術(shù)</p><p> 關(guān)系數(shù)據(jù)庫(kù)應(yīng)用數(shù)學(xué)方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù),關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)是支持關(guān)系模型的數(shù)據(jù)庫(kù)系統(tǒng)。最早將這類方法用于數(shù)據(jù)處理的是1962年CODASYIL發(fā)表的“信息代數(shù)”,然而30多年來(lái),關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)的研究和開(kāi)發(fā)取得了輝煌的成就。關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)從實(shí)驗(yàn)室走向了社會(huì),成為最重要、應(yīng)用最廣泛的數(shù)據(jù)庫(kù)系統(tǒng),大大促進(jìn)了數(shù)據(jù)庫(kù)應(yīng)用領(lǐng)域的擴(kuò)大和深入。</p
87、><p> 關(guān)系數(shù)據(jù)庫(kù)的設(shè)計(jì)中,一個(gè)非常重要的被視為理論問(wèn)題的內(nèi)容是如何構(gòu)造合理的關(guān)系,使之能準(zhǔn)確地反應(yīng)現(xiàn)實(shí)世界,有利于應(yīng)用和具體的操作。這一問(wèn)題就是關(guān)系規(guī)范化要研究的問(wèn)題。主要包括:</p><p> 1函數(shù)依賴及Armstrong公理系統(tǒng);</p><p> 2為什么要對(duì)模式進(jìn)行分解,如何分解;</p><p> 3如何判斷關(guān)系模式達(dá)
88、到幾范式;</p><p> 4如何求屬性的閉包及如何求最小函數(shù)依賴集,這幾種理論信息構(gòu)成了關(guān)系數(shù)據(jù)庫(kù)的骨架。</p><p> 2.4.1關(guān)系模型的基本概念 </p><p> 用二維表格結(jié)構(gòu)表示實(shí)體集,外鍵表示實(shí)體間聯(lián)系的數(shù)據(jù)模型稱為關(guān)系模型。數(shù)據(jù)模型是對(duì)現(xiàn)實(shí)世界的模擬。 </p><p> 1 二維表格舉例--職
89、工登記表,如表2.1</p><p> 表2.1 職工登記表</p><p><b> 2 鍵(KEY)</b></p><p> 鍵由一個(gè)或幾個(gè)屬性組成,在實(shí)際使用中,有下列幾種鍵:</p><p> ?。?) 超鍵(Super Key):在關(guān)系中能惟一標(biāo)識(shí)元組的屬性集稱為關(guān)系模式的超鍵。
90、(2) 候選鍵(Candidate Key):不含有多余屬性的超鍵稱為候選鍵。也就是在候選鍵中,若要再刪除屬性,就不是鍵了。(3) 主鍵:(Primary Key):用戶選作元組標(biāo)識(shí)的一個(gè)侯選鍵稱為主鍵。一般,如不加說(shuō)明,則鍵是指主鍵。3 關(guān)系的定義和性質(zhì)我們可以用集合的觀點(diǎn)定義關(guān)系。關(guān)系是一個(gè)元數(shù)為
91、K(K>=1)的元組的集合。把關(guān)系看成是一個(gè)集合,集合中的元素是元組,每個(gè)元組的屬性個(gè)數(shù)應(yīng)相同。在關(guān)系模型中,對(duì)關(guān)系作了下列規(guī)范性限制:</p><p> ?。?)關(guān)系中每一個(gè)屬性值都是不可分解的。</p><p> ?。?)關(guān)系中允許出現(xiàn)相同的元組(沒(méi)有重復(fù)元組)</p><p> ?。?)由于關(guān)系是一個(gè)集合,因此不考慮元組間的順序,即沒(méi)有行序。</
92、p><p> ?。?) 元組中,屬性在理論上也是無(wú)序的,但在使用時(shí)按習(xí)慣考慮列的順序。</p><p> 關(guān)系數(shù)據(jù)庫(kù)的設(shè)計(jì)理論主要包括三個(gè)方面的內(nèi)容:數(shù)據(jù)依賴、范式,模式設(shè)計(jì)方法。其中數(shù)據(jù)依賴起著核心的作用。</p><p> 4 函數(shù)依賴(Functional dependency , FD)的定義</p><p>
93、 設(shè)R(U)是一個(gè)關(guān)系模式,U是R的屬性集合,X和Y是U的子集。對(duì)于R(U)的任何一個(gè)可能的關(guān)系r,如果r中不存在兩個(gè)元組,它們?cè)赬上的屬性值相同,而在Y上的屬性值不同,則稱“Y函數(shù)依賴于X” ,記作X→Y。如果X→Y,并且對(duì)于X的任一真子集X ’,都有Y 不函數(shù)依賴于X ’,則稱“Y完全函數(shù)依賴于X” ,記作X f Y 。若X→Y,但Y不完全函數(shù)依賴于X,則稱“Y部分函數(shù)依賴于X” ,記作X P Y 。如果X→Y,Y→Z,且Y≮ X,
94、 X不函數(shù)依賴于Y,則稱“Z傳遞函數(shù)依賴于X”。</p><p><b> 5 范式</b></p><p> 在對(duì)表的形式進(jìn)行了規(guī)范化定義后,數(shù)據(jù)結(jié)構(gòu)還有五種規(guī)范化定義,定名為規(guī)范化模式,稱為范式。在這五種范式中,一般只用前三種,對(duì)于常用系統(tǒng)就足夠了。而且這五種范式是“向上兼容”的,即滿足第五范式的數(shù)據(jù)結(jié)構(gòu)自動(dòng)滿足一、二、三、四范式,滿足第四范式的數(shù)
95、據(jù)結(jié)構(gòu)自動(dòng)滿足第一、二、三范式,……,依此類推。第一范式(first normal form,簡(jiǎn)稱1st NF)就是指在同一表中沒(méi)有重復(fù)項(xiàng)出現(xiàn),如果有則應(yīng)將重復(fù)項(xiàng)去掉。這個(gè)去掉重復(fù)項(xiàng)的過(guò)程就稱之為規(guī)范化處理。在本文所討論的開(kāi)發(fā)方法里,1st NF實(shí)際上是沒(méi)有什么意義的。因?yàn)槲覀儼匆?guī)范化建立的指標(biāo)體系和表的過(guò)程都自動(dòng)保證了所有表都滿足1st NF。 第二范式(second normal form,簡(jiǎn)稱
96、 2nd NF)是指每個(gè)表必須有一個(gè)(而且僅一個(gè))數(shù)據(jù)元素為主關(guān)鍵字(primary key),其它數(shù)據(jù)元素與主關(guān)鍵字一一對(duì)應(yīng)。例如,在圖l9.7中如果我們將合同號(hào)定義為主關(guān)鍵字(其它數(shù)據(jù)元素中的記錄數(shù)據(jù)都有可能重名,故不能作為主關(guān)鍵字),故只要知道了一個(gè)合同記錄的合同號(hào),就可以唯一地在同一行中找到該合同的任何一項(xiàng)具</p><p> 2.4.2關(guān)系型數(shù)據(jù)庫(kù) </p><p> 1 關(guān)
97、系數(shù)據(jù)庫(kù)簡(jiǎn)介</p><p> 提出關(guān)系模型的是美國(guó)IBM公司的E.F.Codd,1970年提出關(guān)系數(shù)據(jù)模型E.F.Codd, “A Relational Model of Data for Large Shared Data Banks”, 《Communication of the ACM》,1970;之后,提出了關(guān)系代數(shù)和關(guān)系演算的概念;1972年提出了關(guān)系的第一、第二、第三范式;1974年提出了關(guān)系的
98、BC范式。</p><p><b> 2 關(guān)系數(shù)據(jù)庫(kù)</b></p><p> 在一個(gè)給定的應(yīng)用領(lǐng)域中,所有關(guān)系的集合構(gòu)成一個(gè)關(guān)系數(shù)據(jù)庫(kù)。</p><p> 3 關(guān)系數(shù)據(jù)庫(kù)的型與值</p><p> 關(guān)系數(shù)據(jù)庫(kù)的型:關(guān)系數(shù)據(jù)庫(kù)模式,對(duì)關(guān)系數(shù)據(jù)庫(kù)的描述。</p><p> 關(guān)系數(shù)據(jù)庫(kù)模式
99、包括若干域的定義和在這些域上定義的若干關(guān)系模式。</p><p> 關(guān)系數(shù)據(jù)庫(kù)的值:關(guān)系模式在某一時(shí)刻對(duì)應(yīng)的關(guān)系的集合,簡(jiǎn)稱為關(guān)系數(shù)據(jù)庫(kù)。</p><p> 2.4.3關(guān)系數(shù)據(jù)語(yǔ)言 </p><p><b> 1 關(guān)系代數(shù)語(yǔ)言</b></p><p> ?。?)傳統(tǒng)的集合運(yùn)算</p><p>
100、; 包括并(Union),差(Difference), 交(Intersection),笛卡爾積(Cartesian Product)。</p><p> 集合R和S具有相同的目n(即兩個(gè)關(guān)系都有n個(gè)屬性)并且相應(yīng)的屬性取自同一個(gè)域,則:</p><p> 并:R∪S :仍為n目關(guān)系,由屬于R或?qū)儆赟的元組組成</p><p> R∪S = { t|t ?
101、R∨t ?S }</p><p> 差:R - S :仍為n目關(guān)系,由屬于R而不屬于S的所有元組組成</p><p> R -S = { t|t?R∧t?S }</p><p> 交:R∩S:仍為n目關(guān)系,由既屬于R又屬于S的元組組成</p><p> R∩S = { t|t ? R∧t ?S }</p><p&g
102、t;<b> 或</b></p><p> R∩S = R –(R-S)</p><p> 笛卡爾積:嚴(yán)格地講應(yīng)該是廣義的笛卡爾積(Extended Cartesian Product) </p><p> R: n目關(guān)系,k1個(gè)元組</p><p> S: m目關(guān)系,k2個(gè)元組</p><
103、p><b> R×S :</b></p><p> 列:(n+m)列元組的集合,元組的前n列是關(guān)系R的一個(gè)元組,后m列是關(guān)系S的一個(gè)元組</p><p> 行:k1×k2個(gè)元組</p><p> R×S = {tr ts |tr ?R ∧ ts?S }</p><p> ?。?
104、)專門(mén)的集合運(yùn)算</p><p> 選擇(Selection),投影(Projection),連接(Join),除(Division)。</p><p> 選擇:又稱為限制(Restriction)。</p><p><b> 選擇運(yùn)算符的含義:</b></p><p> 在關(guān)系R中選擇滿足給定條件的諸元組<
105、;/p><p> σF(R) = {t|t?R∧F(t)= '真'}。</p><p> 其中F:選擇條件,是一個(gè)邏輯表達(dá)式,基本形式為: X1θY1</p><p> 投影:從R中選擇出若干屬性列組成新的關(guān)系:</p><p> πA(R) = { t[A] | t ?R }。</p><p>
106、 其中,A:R中的屬性列</p><p><b> 連接:也稱為θ連接</b></p><p> 連接運(yùn)算的含義:從兩個(gè)關(guān)系的笛卡爾積中選取屬性間滿足一定條件的元組</p><p> R∞S = { tr ∈R∧ts∈S∧tr[A]θts[B] }</p><p> A和B:分別為R和S上度數(shù)相等且可比的屬性組
107、</p><p><b> θ:比較運(yùn)算符 </b></p><p> 連接運(yùn)算從R和S的廣義笛卡爾積R×S中選?。≧關(guān)系)在A屬性組上的值與(S關(guān)系)在B屬性組上值滿足比較關(guān)系θ的元組.</p><p> 除:給定關(guān)系R (X,Y) 和S (Y,Z),其中X,Y,Z為屬性組。</p><p>
108、 R中的Y與S中的Y可以有不同的屬性名,但必須出自相同的域集。</p><p> R與S的除運(yùn)算得到一個(gè)新的關(guān)系P(X),P是R中滿足下列條件的元組在 X 屬性列上的投影:元組在X上分量值x的象集Yx包含S在Y上投影的集合,記作:</p><p> R÷S = {tr [X] | tr∈ R∧πY (S)∩ Yx }</p><p> Yx:x在R
109、中的象集,x = tr[X]</p><p><b> 2 關(guān)系演算語(yǔ)言</b></p><p> 元組關(guān)系演算語(yǔ)言 ALPHA</p><p> 域關(guān)系演算語(yǔ)言 QBE</p><p> 2.5 SQL語(yǔ)言介紹</p><p> SQL(Structur
110、ed Query Language)即“結(jié)構(gòu)式查詢語(yǔ)言”。SQL雖然名為查詢語(yǔ)言,但實(shí)際上具有定義、查詢、更新和控制等多種功能。由于它使用方便、功能豐富、語(yǔ)言簡(jiǎn)單易學(xué),很快得到應(yīng)用和推廣。從20世紀(jì)70年代末起,在推出的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)產(chǎn)品ORACLE、SQL/DS、DB2、SYBASE上實(shí)現(xiàn)了SQL語(yǔ)言。很快,SQL語(yǔ)言被整個(gè)計(jì)算機(jī)界認(rèn)可。1987年6月,國(guó)際標(biāo)準(zhǔn)化組織(ISO)采納為國(guó)際標(biāo)準(zhǔn)。隨后,ISO對(duì)標(biāo)準(zhǔn)進(jìn)行了大量的修改和擴(kuò)充。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公交查詢系統(tǒng)畢業(yè)設(shè)計(jì)
- 城市公交查詢系統(tǒng)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)論文 公交查詢系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)--公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 公交查詢系統(tǒng)設(shè)計(jì)
- 公交查詢系統(tǒng)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 公交查詢系統(tǒng)畢業(yè)論文
- 畢業(yè)論文-城市公交查詢系統(tǒng)設(shè)計(jì)
- 計(jì)算機(jī)科學(xué)與技術(shù)畢業(yè)設(shè)計(jì)---公交查詢系統(tǒng)
- 公交查詢系統(tǒng)畢業(yè)論文 (2)
- 公交查詢系統(tǒng)開(kāi)題報(bào)告
- 智能公交查詢系統(tǒng)--論文
- 城市公交查詢系統(tǒng).doc
- 畢業(yè)設(shè)計(jì)----基于.net的城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 城市公交查詢系統(tǒng).doc
- 城市公交查詢系統(tǒng).doc
- 畢業(yè)設(shè)計(jì)--公交系統(tǒng)查詢
- jsp城市公交查詢系統(tǒng)
- 畢業(yè)論文---城市公交查詢系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論