網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、校園網(wǎng)上訂餐系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)專業(yè)班級(jí): 電子商務(wù)1303班 學(xué) 號(hào): 2013004478 學(xué)生姓名: 李拯宇 指導(dǎo)教師: 張曉 2016 年10 月24日目 錄第一章 緒論11.1 課題的背景及意義11.2課題分析11.3技術(shù)方案的選取21.3.1 開發(fā)語言21.3.2 開發(fā)模式選擇31.3.3 數(shù)據(jù)庫3第二章 系統(tǒng)概述52.1運(yùn)行環(huán)境5軟件運(yùn)行環(huán)境52.2需求分析52.2.1 性能需求分析5產(chǎn)品質(zhì)量需求分析52.2.3 可行性分析62.3 總體設(shè)計(jì)原則72.4 系統(tǒng)體系結(jié)構(gòu)分析72.4.1 C/S結(jié)構(gòu)與B/S結(jié)構(gòu)72.4.2 B/S與C/S的優(yōu)越性8第三章程序設(shè)計(jì)103.1系統(tǒng)流程分析10

2、3.2系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)113.3系統(tǒng)結(jié)構(gòu)設(shè)計(jì)153.4 核心算法實(shí)現(xiàn)分頁顯示算法16第四章 系統(tǒng)實(shí)現(xiàn)主要技術(shù)184.1 JavaServer Pages(JSP)技術(shù)簡(jiǎn)介184.2 JSP 和其他類似或相關(guān)技術(shù)的一個(gè)簡(jiǎn)單比較194.3 最佳JSP應(yīng)用服務(wù)器Tomcat194.4 javaBean組件技術(shù)204.5 JSP中JavaBeans的應(yīng)用234.5.1 <jsp:useBean>操作指令234.5.2 JavaBeans的Scope屬性244.7 Tomcat配置264.7.1 Server.xml文件配置264.8 數(shù)據(jù)庫編程27數(shù)據(jù)庫編程基礎(chǔ)及語法274.8.2 本系統(tǒng)中

3、的連接方式30第五章 測(cè)試問題及解決315.1 java漢字處理問題及解決31結(jié) 論33結(jié)束語34參考文獻(xiàn)35第一章 緒論1.1 課題的背景及意義網(wǎng)上訂餐就是互聯(lián)網(wǎng)的深入應(yīng)用。用戶通過互聯(lián)網(wǎng),能足不出戶,輕松閑逸地實(shí)現(xiàn)自己訂購餐飲和食品(包括飯、菜、盒飯、便當(dāng)?shù)龋┑囊环N網(wǎng)絡(luò)訂餐形式。隨著網(wǎng)絡(luò)訂餐平臺(tái)的不斷涌現(xiàn),校園網(wǎng)上訂餐也開始變得火熱起來,相比于傳統(tǒng)的食堂采購,現(xiàn)如今外賣的出現(xiàn)更使學(xué)生的選擇多樣化。更好地滿足了學(xué)生的需求,也逐漸受到了學(xué)生的歡迎。其該系統(tǒng)使用JSP(Java語言)和SQL Server2012數(shù)據(jù)庫開發(fā), 實(shí)現(xiàn)了網(wǎng)上訂餐系統(tǒng)的動(dòng)態(tài)管理,使得網(wǎng)上訂餐的管理更加及時(shí)、高效,提高了

4、工作效率。該管理系統(tǒng)具有一般網(wǎng)上訂餐系統(tǒng)的功能,從大的方面來講主要包括資訊管理,餐飲管理,預(yù)定管理,用戶管理等幾個(gè)大的功能模塊。該系統(tǒng)是基于B/S(Browser/Server,瀏覽器/客戶端)模式實(shí)現(xiàn),基于Myeclipse平臺(tái)架構(gòu)開發(fā)設(shè)計(jì),主要實(shí)現(xiàn)對(duì)網(wǎng)上訂餐的使用、需求、以及用戶訂餐的動(dòng)態(tài)管理等。隨著Internet/Intranet技術(shù)的興起,將原本在單機(jī)或本地局域網(wǎng)上運(yùn)行的數(shù)據(jù)庫系統(tǒng)移植到因特網(wǎng)中,即開發(fā)基于B/S模式的新一代MIS(Management Information System,管理信息系統(tǒng))系統(tǒng),正成為技術(shù)發(fā)展的趨勢(shì)。為了保證系統(tǒng)性能的高效性、可擴(kuò)展性,以及達(dá)到數(shù)據(jù)共享

5、和網(wǎng)絡(luò)化管理的目的,本系統(tǒng)采用B/S體系結(jié)構(gòu)進(jìn)行設(shè)計(jì)開發(fā)。1.2課題分析該系統(tǒng)分為前臺(tái)和后臺(tái)兩個(gè)部分,前臺(tái)部分主要是用戶進(jìn)行資訊的瀏覽,以及訂餐,訂座管理等,主要是面向用戶的。而后臺(tái)主要是管理人員對(duì)前臺(tái)數(shù)據(jù)的維護(hù)和設(shè)置,主要是面向管理人員的。網(wǎng)上訂餐系統(tǒng)無論是在應(yīng)用的深度還是廣度都是一個(gè)逐步發(fā)展的過程。在開發(fā)一個(gè)局部系統(tǒng)時(shí)要充分考慮到局部系統(tǒng)和整個(gè)目標(biāo)系統(tǒng)之間的相容性和完整性,以利于今后整個(gè)系統(tǒng)的建立。該系統(tǒng)從總體上把握系統(tǒng)的設(shè)計(jì),在具體的設(shè)計(jì)實(shí)現(xiàn)上我們圍繞著三個(gè)方面的需求展開,即管理者、系統(tǒng)使用者、系統(tǒng)維護(hù)者。對(duì)于本系統(tǒng)的不同使用者,其功能與業(yè)務(wù)邏輯是不盡相同的。對(duì)于普通用戶而言,系統(tǒng)主要像

6、用戶展示一個(gè)美觀的界面,用戶在可以瀏覽各類資訊,查詢餐飲信息,訂餐,訂座等。而管理員則需要在后臺(tái)維護(hù)這些數(shù)據(jù)。本系統(tǒng)的主要功能應(yīng)是用戶的訂餐了,用戶可以查詢菜品信息,當(dāng)發(fā)現(xiàn)自己滿意的以后,可以將這些菜品添加到自己的購物車,此時(shí)用戶雖然選擇了要預(yù)定的商品,但是還不具備法律效用,當(dāng)用戶通過一定方式(此方式不屬編程范圍)得到預(yù)定許可后,管理員在后臺(tái)可以審核是否批準(zhǔn)該用戶的訂餐請(qǐng)求,當(dāng)管理員同意了該用戶的訂餐請(qǐng)求,即可將該用戶所預(yù)定的發(fā)送給客戶,此時(shí)客戶在客戶端可以看到自己購物車的狀態(tài)(此時(shí)是已經(jīng)通過審核),如果管理員沒有批準(zhǔn)或沒有處理等,該客戶都可以在前臺(tái)看見相關(guān)信息。1.3技術(shù)方案的選取1.3.1

7、 開發(fā)語言隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,基于瀏覽器/服務(wù)器(Browser/Server 簡(jiǎn)稱B/S)體系結(jié)構(gòu)的應(yīng)用程序得到了空前廣泛的應(yīng)用。但是服務(wù)器之間的通訊,尤其是在不同平臺(tái)上運(yùn)行的服務(wù)器之間的通訊仍然不是一件容易的事情。因?yàn)榇蠖鄶?shù)Internet應(yīng)用程序都是以數(shù)據(jù)庫為中心的,方便的訪問多種數(shù)據(jù)源的能力也比以往任何時(shí)候都更加重要。JSP無疑可以輕松地實(shí)現(xiàn)這類功能,JSP技術(shù)是一種服務(wù)器端的HTML頁面中嵌入JAVA代碼的腳本語言,它比一般腳本語言的執(zhí)行速度更快,由于JSP是基于JAVA語言的,所以它可以運(yùn)行在UNIX/LINUX和WINDOWS平臺(tái)上,是一種難得的動(dòng)態(tài)網(wǎng)頁開發(fā)語言。在動(dòng)態(tài)內(nèi)容

8、的解決問題中,還存在其他的解決方法,但是開發(fā)人員要掌握這些技術(shù)很難。例如,Java Servlets這樣的技術(shù)就可以使得用Java語言編寫交互式的應(yīng)用程序的服務(wù)器端的代碼變得更加簡(jiǎn)單。Java Servlets就是一個(gè)基于Java技術(shù)的運(yùn)行在服務(wù)器端的程序(與Applet不同,后者運(yùn)行在瀏覽器端)。開發(fā)人員編寫出Servlet程序,用來接收來自Web瀏覽器的HTTP請(qǐng)求,動(dòng)態(tài)地生成響應(yīng),然后發(fā)送包含HTML或XML文檔到瀏覽器。但是使用這種方法,整個(gè)網(wǎng)頁必須都在Java Servlet中制作。如果開發(fā)人員或者Web管理人員想要調(diào)整頁面的顯示,就不得不從新編輯并編譯Java Servlet程序。

9、采用這種方法,編寫帶有動(dòng)態(tài)內(nèi)容的頁面需要有很熟練的應(yīng)用程序開發(fā)技巧和經(jīng)驗(yàn)。很顯然,一個(gè)簡(jiǎn)單的創(chuàng)建動(dòng)態(tài)頁面的解決方案要能解決以下的問題: 1. 能夠在任何Web或應(yīng)用程序服務(wù)器上運(yùn)行2. 將應(yīng)用程序邏輯和頁面顯示分離3. 能夠快速地開發(fā)和測(cè)試4. 簡(jiǎn)化開發(fā)基于Web的交互式應(yīng)用程序的過程JavaServer Pages (JSP)滿足這些要求,它整合了存在的Java編程環(huán)境提供支持的技術(shù)和工具,產(chǎn)生了一種新的、開發(fā)基于Web應(yīng)用程序的方法,這個(gè)方法給予使用基于組件應(yīng)用的邏輯頁面的設(shè)計(jì)者提供了強(qiáng)大的功能。1.3.2 開發(fā)模式選擇JSP有兩中開發(fā)模式JSP+JavaBeans和JSP+Servlet

10、+JavaBeans,在模式一中,JSP頁面獨(dú)自響應(yīng)請(qǐng)求并將處理結(jié)果返回客戶。所有的數(shù)據(jù)通過Bean來處理JSP實(shí)現(xiàn)頁面的表現(xiàn)。模式一技術(shù)實(shí)現(xiàn)了頁面的表現(xiàn)-和頁面的商業(yè)邏輯相分離。大量使用模式一形式,常常會(huì)導(dǎo)致頁面被嵌入大量的腳本語言或JAVA代碼。當(dāng)需要處理的商業(yè)邏輯很復(fù)雜時(shí),這種情況會(huì)變得非常糟糕。大量的代碼會(huì)使整個(gè)頁面變得常復(fù)雜。對(duì)于前端界面設(shè)計(jì)人員來說,這簡(jiǎn)直不可想象。這種情況在大項(xiàng)目中最為常見,這也造成了代碼的開發(fā)和維護(hù)出現(xiàn)困難,造成了不必要的資源浪費(fèi),在任何項(xiàng)目中,這樣的模式總會(huì)導(dǎo)致多多少少的定義不清的響應(yīng)和項(xiàng)目管理的困難。 綜上所訴,模式一不能滿足大型項(xiàng)目的需要,但是可以較好的滿

11、足小型應(yīng)用,在簡(jiǎn)單的應(yīng)用中可以考慮模式一。模式二JSP+Servlet+JavaBeans中 ,Servlets技術(shù)是一種采用JAVA技術(shù)來實(shí)現(xiàn)CGI功能的一種術(shù)。Servlets技術(shù)是運(yùn)行在WEB服務(wù)器上,用來生成WEB頁面。Servlets技術(shù)非常實(shí)用于服務(wù)器端的處理和編程,并且Servlet會(huì)長(zhǎng)期駐留在他們所處的位置。 但是在實(shí)際的項(xiàng)目開發(fā)過程中,頁面設(shè)計(jì)者可以方便地使用普通HTML工具來開發(fā)JSP頁面,Servlet卻更適合于后端開發(fā)者使用,開發(fā)Servlet需要的是JAVA集成開發(fā)環(huán)境,也就是說Servlet技術(shù)更需要編程人員。 模式二技術(shù)結(jié)合了JSP和Servlet技術(shù)充分體現(xiàn)了兩

12、者的技術(shù)優(yōu)點(diǎn)。在此模式中通過JSP來表現(xiàn)頁面。通過Servlet來完成大量的事務(wù)處理。 Servlet充當(dāng)一個(gè)控制者的角色,并負(fù)責(zé)向客戶發(fā)送請(qǐng)求。Servlet創(chuàng)建JSP所需要的Bean和對(duì)象,然后根據(jù)用戶的請(qǐng)求行為,決定將哪個(gè)JSP頁面發(fā)送給客戶。 從開發(fā)的觀點(diǎn),模式二具有更清晰的頁面表現(xiàn),清楚的開發(fā)者角色劃分,可以充分利用開發(fā)小組的界面設(shè)計(jì)人員,這些優(yōu)勢(shì)在大型項(xiàng)目開發(fā)中表現(xiàn)的尤為突出,使用這一模式,可以充分發(fā)揮每個(gè)開發(fā)者各自的特長(zhǎng),界面設(shè)計(jì)人員可以充分發(fā)揮自己的表現(xiàn)力,設(shè)計(jì)出優(yōu)美的界面表現(xiàn)形式,設(shè)計(jì)人員可以充分發(fā)揮自己的商務(wù)處理思維,來實(shí)現(xiàn)項(xiàng)目中的業(yè)務(wù)處理。在大型項(xiàng)目中,模式二更被采用。但

13、是,本系統(tǒng)開發(fā)只是一個(gè)小型的JSP應(yīng)用,同時(shí)由于Servlet難于掌握,所以在本課題中采用了模式一開發(fā),既JSP+JavaBean。1.3.3 數(shù)據(jù)庫SQL Server 2012是一個(gè)分布式的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),具有客戶/服務(wù)器體系結(jié)構(gòu)。Mircrosoft SQL Server 2012是一個(gè)應(yīng)用廣泛的數(shù)據(jù)庫管理系統(tǒng),具有許多顯著特點(diǎn),例如,用戶喜歡的易用性、適合分布式組織的可伸縮性、用于決策支持的數(shù)據(jù)倉庫功能、與許多其他服務(wù)器軟件緊密關(guān)聯(lián)的集成性、良好的性能價(jià)格比等。SQL Server 2012系統(tǒng)中,數(shù)據(jù)庫的管理采取了先進(jìn)的動(dòng)態(tài)管理機(jī)制,數(shù)據(jù)庫的大小可以隨著數(shù)據(jù)量的變化而縮小或者擴(kuò)

14、大。另外,用戶數(shù)據(jù)都是非常重要的和保密的,這些數(shù)據(jù)存儲(chǔ)在Mircrosoft SQL Server 2012系統(tǒng)中有絕對(duì)的安全性保障,有完善的用戶帳戶策略和許可機(jī)制,只有經(jīng)過授權(quán)的用戶才能訪問系統(tǒng),并且執(zhí)行相應(yīng)的操作和訪問允許訪問的數(shù)據(jù)。未經(jīng)授權(quán)的用戶既不能執(zhí)行相應(yīng)的操作,也不能訪問數(shù)據(jù)庫中的相應(yīng)數(shù)據(jù)。SQL Server 2012系統(tǒng)具有強(qiáng)大的網(wǎng)上功能,可以在Internet上發(fā)布數(shù)據(jù)庫中的數(shù)據(jù)。在Mircrosoft SQL Server 2012系統(tǒng)中,允許用戶簡(jiǎn)單的使用一些向?qū)Ш凸ぞ甙褦?shù)據(jù)庫的數(shù)據(jù)發(fā)布到網(wǎng)絡(luò)上,并且可以根據(jù)需要來調(diào)度修改已經(jīng)發(fā)布的數(shù)據(jù)。第二章 系統(tǒng)概述2.1運(yùn)行環(huán)境2.

15、1.1軟件運(yùn)行環(huán)境服務(wù)器端:操作系統(tǒng):Windows 10操作系統(tǒng)數(shù)據(jù)庫:Microsoft SQL Server 2012網(wǎng)絡(luò)通信協(xié)議:TCP/IP支持軟件:tomcat,MyEclipse2.2需求分析網(wǎng)上訂餐管理系統(tǒng)無論是在應(yīng)用的深度還是廣度都是一個(gè)逐步發(fā)展的過程。在開發(fā)一個(gè)局部系統(tǒng)時(shí)要充分考慮到局部系統(tǒng)和整個(gè)目標(biāo)系統(tǒng)之間的相容性和完整性,以利于今后整個(gè)系統(tǒng)的建立。進(jìn)貨訂單管理系統(tǒng)從總體上把握系統(tǒng)的設(shè)計(jì),在具體的設(shè)計(jì)實(shí)現(xiàn)上我們圍繞著三個(gè)方面的需求展開,即管理者、系統(tǒng)使用者、系統(tǒng)維護(hù)者。2.2.1 性能需求分析該系統(tǒng)在性能功能上應(yīng)達(dá)到如下需求: 操作簡(jiǎn)單、界面友好: 完全控件式的頁面布局,

16、使得菜品,資訊,座位等信息的錄入工作更簡(jiǎn)便,許多選項(xiàng)包括餐廳信息,桌位,包房信息等只需要點(diǎn)擊鼠標(biāo)就可以完成;另外,跟蹤出現(xiàn)的提示信息也讓用戶隨時(shí)清楚自己的操作情況。對(duì)常見的類似網(wǎng)站的管理的各個(gè)方面:基本信息錄入、瀏覽、刪除、修改、搜索等方面都大體實(shí)現(xiàn),顧客對(duì)菜品的預(yù)定及支付方式; 即時(shí)可見:對(duì)客戶預(yù)定餐飲信息的處理(包括錄入、刪除)將立即在主頁的對(duì)應(yīng)欄目顯示出來,達(dá)到“即時(shí)發(fā)布、即時(shí)見效”的功能; 系統(tǒng)運(yùn)行應(yīng)該快速、穩(wěn)定、高效和可靠; 在結(jié)構(gòu)上應(yīng)具有很好的可擴(kuò)展性,便于將來的功能擴(kuò)展和維護(hù)。2.2.2產(chǎn)品質(zhì)量需求分析主要質(zhì)量屬性詳細(xì)要求正確性按照需求正確執(zhí)行任務(wù),完成各個(gè)模塊的相應(yīng)要求。健壯性

17、具有較高的容錯(cuò)能力和恢復(fù)能力。可靠性故障發(fā)生率每運(yùn)行1000小時(shí)低于3次性能,效率軟件的輸出結(jié)果更新周期應(yīng)該與系統(tǒng)的信息更新周期相同。在網(wǎng)絡(luò)情況良好的情況下,3秒內(nèi)可響應(yīng)用戶請(qǐng)求。易用性易理解性:軟件研制過程中形成的所有文檔語言簡(jiǎn)練、前后一致、易于理解以及語句無歧義。安全性防止軟件受到意外或蓄意的存取、使用、修改、毀壞或泄密的軟件屬性其數(shù)據(jù)應(yīng)能集中存放于總部的數(shù)據(jù)庫服務(wù)器,客戶端不保存任何業(yè)務(wù)數(shù)據(jù)和數(shù)據(jù)庫連接信息,也不應(yīng)進(jìn)行什么數(shù)據(jù)同步.可擴(kuò)展性能方便的進(jìn)行二次開發(fā),滿足對(duì)功能的擴(kuò)充或提高并能提高相應(yīng)的安全控制。兼容性不易與其他軟件起沖突。 可移植性可方便移植到其他系統(tǒng)環(huán)境中正常運(yùn)行。2.2.

18、3 可行性分析隨著經(jīng)濟(jì)的快速發(fā)展,B2C電子商務(wù)越來越受到人們的關(guān)注。網(wǎng)上訂餐類網(wǎng)站,已經(jīng)如雨后春筍般的出現(xiàn)在了個(gè)大城市。特別在公司,企業(yè)內(nèi)部,團(tuán)體訂餐已經(jīng)成為了趨勢(shì)。同時(shí),隨著全國人民的精神、物質(zhì)和文化生活高度的提高,人們已經(jīng)不在僅僅停留在吃飽的程度,不但要吃飽,還要吃好,而且口味也越來越挑刺,正因?yàn)槿绱司W(wǎng)絡(luò)訂餐業(yè)務(wù)的出現(xiàn),正迎合了這些人的口味,他們不但省去了自己做飯的麻煩,而且也能尋找和發(fā)現(xiàn)新的菜品,品嘗不同風(fēng)格的菜品,網(wǎng)絡(luò)訂餐業(yè)務(wù)在中國有著極大的發(fā)展空間以及良好的背景。而當(dāng)代大學(xué)生,白領(lǐng)工作人士作為社會(huì)中的重要群體,他們對(duì)飲食的要求都在不斷提高,飲食在他們生活中起著重要作用。因此,面向大

19、學(xué)生和都市白領(lǐng)人士的網(wǎng)絡(luò)訂餐網(wǎng)站的設(shè)計(jì)有著良好的現(xiàn)實(shí)意義。綜合以上兩點(diǎn)分析,此次畢業(yè)設(shè)計(jì)決定利用JSP和SQL技術(shù)設(shè)計(jì)網(wǎng)上訂餐管理系統(tǒng)。JSP可以創(chuàng)建和運(yùn)用動(dòng)態(tài)、交互的WEB服務(wù)器應(yīng)用程序。同時(shí),JSP具有向跨平臺(tái)跨服務(wù)器的優(yōu)點(diǎn)。SQL Server 2000是一個(gè)杰出的數(shù)據(jù)庫平臺(tái),具有功能強(qiáng)大,安全可靠等特點(diǎn),可用于大型聯(lián)機(jī)事務(wù)處理、數(shù)據(jù)倉庫及電子商務(wù)等。2.3 總體設(shè)計(jì)原則1、 開放性、可擴(kuò)充性、可靠性原則開放系統(tǒng)是生產(chǎn)各種計(jì)算機(jī)產(chǎn)品普遍遵循的原則,遵循這種標(biāo)準(zhǔn)的產(chǎn)品都符合一些公共的、可以相互操作的標(biāo)準(zhǔn),能夠融洽的在一起工作。開放系統(tǒng)使得各種類型的網(wǎng)絡(luò)和系統(tǒng)互連簡(jiǎn)單、標(biāo)準(zhǔn)統(tǒng)一,容易擴(kuò)展升級(jí)

20、。從而適應(yīng)廣大用戶需求的多變性和產(chǎn)品的更新?lián)Q代。2、良好的用戶操作界面用戶操作界面美觀、方便、實(shí)用,使用戶能在較短的時(shí)間內(nèi)掌握其使用方法。3、實(shí)用性原則任何系統(tǒng)的設(shè)計(jì)都要考慮其實(shí)用性,系統(tǒng)開發(fā)的目的是為了實(shí)現(xiàn)業(yè)務(wù)處理自動(dòng)化、規(guī)范化,提高工作效率,減輕工作人員的勞動(dòng)強(qiáng)度,減少開支。4、工作平臺(tái)設(shè)計(jì)原則能適應(yīng)不同的操作平臺(tái),不同的網(wǎng)絡(luò)。2.4 系統(tǒng)體系結(jié)構(gòu)分析2.4.1 C/S結(jié)構(gòu)與B/S結(jié)構(gòu)客戶/服務(wù)器(CLIENT/SERVER)結(jié)構(gòu),是將一個(gè)系統(tǒng)分解為前臺(tái)的客戶應(yīng)用程序和后臺(tái)的服務(wù)器部分,通過網(wǎng)絡(luò)連接應(yīng)用程序和服務(wù)器。這種結(jié)構(gòu)的核心是客戶應(yīng)用程序向服務(wù)器發(fā)送服務(wù)請(qǐng)求,服務(wù)器完成后端處理。服務(wù)

21、器是一臺(tái)管理數(shù)據(jù)資源并執(zhí)行數(shù)據(jù)庫引擎功能(加數(shù)據(jù)存儲(chǔ)、操作和保護(hù))的計(jì)算機(jī),處理結(jié)構(gòu)由服務(wù)器發(fā)回客戶應(yīng)用程序,由客戶應(yīng)用程序?qū)μ幚斫Y(jié)構(gòu)進(jìn)行顯示。這種結(jié)構(gòu)的優(yōu)點(diǎn)是只有處理后的數(shù)據(jù)在網(wǎng)絡(luò)中傳遞,大大減輕了網(wǎng)絡(luò)的負(fù)擔(dān),而且由于通過服務(wù)器端統(tǒng)一管理數(shù)據(jù),易于保證數(shù)據(jù)的一致性。B/S結(jié)構(gòu),即Browser/Server(瀏覽器/服務(wù)器)結(jié)構(gòu),是隨著Internet技術(shù)的興起,對(duì)C/S結(jié)構(gòu)的一種變化或者改進(jìn)的結(jié)構(gòu)。在這種結(jié)構(gòu)下,用戶界面完全通過WWW瀏覽器實(shí)現(xiàn),一部分事務(wù)邏輯在前端實(shí)現(xiàn),但是主要事務(wù)邏輯在服務(wù)器端實(shí)現(xiàn),形成所謂3層結(jié)構(gòu)。B/S結(jié)構(gòu)利用不斷成熟和普及的瀏覽器技術(shù)實(shí)現(xiàn)原來需要復(fù)雜專用軟件才能實(shí)

22、現(xiàn)的強(qiáng)大功能,并節(jié)約了開發(fā)成本,是一種全新的軟件系統(tǒng)構(gòu)造技術(shù)。這種結(jié)構(gòu)更成為當(dāng)今應(yīng)用軟件的首選體系結(jié)構(gòu),.net也是在這樣一種背景下被提出來的架構(gòu),JAVA技術(shù)已經(jīng)是很成熟的應(yīng)用了。2.4.2 B/S與C/S的優(yōu)越性C/S(Client/Server,客戶端/服務(wù)器)是建立在局域網(wǎng)的基礎(chǔ)上的,B/S是建立在廣域網(wǎng)的基礎(chǔ)上的。傳統(tǒng)的C/S體系結(jié)構(gòu)雖然采用的是開放模式,但這只是系統(tǒng)開發(fā)一級(jí)的開放性,在特定的應(yīng)用中無論是Client端還是Server端都還需要特定的軟件,沒能提供用戶真正期望的開放環(huán)境;B/S結(jié)構(gòu)則不同,它的前端是以TCP/IP協(xié)議為基礎(chǔ)的,企業(yè)內(nèi)的WWW服務(wù)器可以接受安裝有Web瀏

23、覽程序的Internet終端的訪問,作為最終用戶,只要通過Web瀏覽器,各種處理任務(wù)都可以調(diào)用系統(tǒng)資源來完成,這樣大大簡(jiǎn)化了客戶端,減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低了用戶的總體擁有成本。總的來說,兩者有如下差別:1硬件環(huán)境不同C/S 一般建立在專用的網(wǎng)絡(luò)上, 小范圍里的網(wǎng)絡(luò)環(huán)境, 局域網(wǎng)之間再通過專門服務(wù)器提供連接和數(shù)據(jù)交換服務(wù)。B/S 建立在廣域網(wǎng)之上的, 不必是專門的網(wǎng)絡(luò)硬件環(huán)境,例如電話上網(wǎng), 租用設(shè)備, 信息自己管理, 有比C/S更強(qiáng)的適應(yīng)范圍, 一般只要有操作系統(tǒng)和瀏覽器就行。2對(duì)安全要求不同 C/S 一般面向相對(duì)固定的用戶群, 對(duì)信息安全的控制能力很強(qiáng)。 一般高度機(jī)密的信息

24、系統(tǒng)采用C/S 結(jié)構(gòu)適宜, 可以通過B/S發(fā)布部分可公開信息。B/S 建立在廣域網(wǎng)之上, 對(duì)安全的控制能力相對(duì)弱, 面向是不可知的用戶群。3對(duì)程序架構(gòu)不同 C/S 程序可以更加注重流程, 可以對(duì)權(quán)限多層次校驗(yàn), 對(duì)系統(tǒng)運(yùn)行速度可以較少考慮。B/S 對(duì)安全以及訪問速度的多重的考慮, 建立在需要更加優(yōu)化的基礎(chǔ)之上。4軟件重用不同C/S 程序可以不可避免的整體性考慮, 構(gòu)件的重用性不如在B/S要求下的構(gòu)件的重用性好。B/S 對(duì)的多重結(jié)構(gòu),要求構(gòu)件相對(duì)獨(dú)立的功能。 能夠相對(duì)較好的重用。就如買來的餐桌可以再利用,而不是做在墻上的石頭桌子。5系統(tǒng)維護(hù)不同 系統(tǒng)維護(hù)是軟件生存周期中,開銷大,相當(dāng)重要C/S

25、程序由于整體性,必須整體考察,處理出現(xiàn)的問題以及系統(tǒng)升級(jí)難, 可能是再做一個(gè)全新的系統(tǒng)。B/S 構(gòu)件組成方面構(gòu)件個(gè)別的更換,實(shí)現(xiàn)系統(tǒng)的無縫升級(jí)。 系統(tǒng)維護(hù)開銷減到最小,用戶從網(wǎng)上自己下載安裝就可以實(shí)現(xiàn)升級(jí)。 6處理問題不同 C/S 程序可以處理用戶面固定,并且在相同區(qū)域, 安全要求高的需求,與操作系統(tǒng)相關(guān), 應(yīng)該都是相同的系統(tǒng)。B/S 建立在廣域網(wǎng)上, 面向不同的用戶群,分散地域, 這是C/S無法作到的,與操作系統(tǒng)平臺(tái)關(guān)系最小。 7用戶接口不同 C/S 多是建立在Window平臺(tái)上,表現(xiàn)方法有限,對(duì)程序員普遍要求較高。B/S 建立在瀏覽器上, 有更加豐富和生動(dòng)的表現(xiàn)方式與用戶交流, 并且大部分

26、難度減低,降低開發(fā)成本。8信息流不同 C/S 程序一般是典型的中央集權(quán)的機(jī)械式處理,交互性相對(duì)低。B/S 信息流向可變化。9成本降低,選擇更多軟件系統(tǒng)的改進(jìn)和升級(jí)越來越頻繁,B/S架構(gòu)的產(chǎn)品明顯體現(xiàn)的更方便的特性。無論用戶的規(guī)模有多大,有多少分支機(jī)構(gòu)都不會(huì)增加任何維護(hù)升級(jí)的工作量,所有的操作只需要針對(duì)服務(wù)器進(jìn)行,如果是異地只需要把服務(wù)器連接上網(wǎng)即可立即進(jìn)行維護(hù)和升級(jí),這對(duì)人力、時(shí)間、費(fèi)用的節(jié)省是相當(dāng)驚人的。傳統(tǒng)的C/S結(jié)構(gòu)的軟件需要針對(duì)不同的操作系統(tǒng)系統(tǒng)開發(fā)不同版本的軟件,由于產(chǎn)品的更新?lián)Q代十分快,這么高的代價(jià)和低效率已經(jīng)越來越不適應(yīng)了。在JAVA這樣的跨平臺(tái)語言出現(xiàn)之后B/S架構(gòu)更是飛快地普

27、及起來了。10面向電子商務(wù)時(shí)代的技術(shù)將來所有的應(yīng)用系統(tǒng)幾乎都在互聯(lián)網(wǎng)上運(yùn)行,企業(yè)發(fā)展電子商務(wù)也是不可避免的,而B/S架構(gòu)的軟件則代表了將來的技術(shù),只要連上互聯(lián)網(wǎng)或內(nèi)部廣域網(wǎng)就可以與全球的客戶相連,與各地的分支機(jī)構(gòu)相連。綜上所述,可以看出B/S結(jié)構(gòu)的眾多優(yōu)點(diǎn)5,比其他結(jié)構(gòu)的先進(jìn)性,無論是辦公自動(dòng)化管理系統(tǒng),人力資源管理系統(tǒng),客戶關(guān)系管理系統(tǒng),ERP等等,發(fā)展的趨勢(shì)是不斷融合,結(jié)合當(dāng)今這些方面的發(fā)展,我們可以得出這樣的結(jié)論:采用統(tǒng)一的B/S結(jié)構(gòu)開發(fā)的產(chǎn)品無論是現(xiàn)在還是將來都是最好的選擇,而在今后的實(shí)際工作開發(fā)中,則應(yīng)該首選B/S結(jié)構(gòu)。第三章程序設(shè)計(jì)3.1系統(tǒng)流程分析業(yè)務(wù)流程分析1、 瀏覽與選擇餐飲

28、信息:顧客進(jìn)入網(wǎng)站即刻自動(dòng)提供購物車,不需身份確認(rèn)就可以在網(wǎng)站上隨意瀏覽,登錄系統(tǒng)后則可挑選餐飲(可增加、刪除、修改購物車上餐飲的類型),網(wǎng)站提供餐飲信息列表,最先添加的餐飲信息優(yōu)先列表給顧客作為選購時(shí)的參考;2、 判斷:顧客確定所購餐飲信息后,系統(tǒng)將判斷該顧客是否注冊(cè),如果是,則可直接填寫訂單;否則,提示顧客登記注冊(cè);3、 提交訂單:已選購的餐飲信息需填寫訂單細(xì)節(jié)。4、 注冊(cè):顧客可在公司的網(wǎng)站上注冊(cè)后提交申請(qǐng);5、 確認(rèn):后臺(tái)管理將實(shí)時(shí)得到顧客的注冊(cè)信息,通過電話及其他方式確認(rèn),當(dāng)確認(rèn)后,系統(tǒng)管理員可對(duì)該顧客提交的預(yù)定信息進(jìn)行審核。6、送貨與付款:網(wǎng)上的每一份訂單都將實(shí)時(shí)存入后臺(tái)數(shù)據(jù)庫,后

29、臺(tái)操作人員通過電話及其他方式確認(rèn),確認(rèn)后將及時(shí)實(shí)施審核該訂單:向顧客送貨,貨到付款,完成網(wǎng)上交易。顧客登錄系統(tǒng)瀏覽菜品資訊獲得購物車瀏覽餐飲信息選擇餐飲信息管理員審核Y交易結(jié)束N數(shù)據(jù)流程分析該系統(tǒng)數(shù)據(jù)流程比較簡(jiǎn)單,管理員可以添加餐廳信息(包括餐桌,包房等),餐飲信息(包括菜品名等信息),資訊信息等,然而這些信息顧客是可以瀏覽的,但是顧客沒有權(quán)限對(duì)這些信息進(jìn)行修改,這些信息對(duì)于顧客而言是單向的。對(duì)于預(yù)定信息,管理員可以查看及審核預(yù)定信息,顧客可以增刪改預(yù)定信息,并將預(yù)定信息提交給管理員等待審核,因此預(yù)定信息對(duì)于顧客和管理員而言都是雙向的。.1數(shù)據(jù)流圖數(shù)據(jù)流圖簡(jiǎn)稱DFD,是SA方法中用于表示系統(tǒng)邏

30、輯模型的一種工具。它以圖形的方式描述數(shù)據(jù)在系統(tǒng)中流動(dòng)和處理的過程,由于它只反映系統(tǒng)必須完成的邏輯功能,所以它是一種功能模型。系統(tǒng)的數(shù)據(jù)流圖如下所示:系統(tǒng)DFD圖3.2系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)3.2.1 數(shù)據(jù)庫E-R圖Users(用戶表)用戶名密碼權(quán)限orders(訂單表)訂餐人時(shí)間備注電話應(yīng)收款地址發(fā)布Seat(訂座表)電話人數(shù)訂餐人發(fā)布Shop(訂單菜單表)菜名數(shù)量單價(jià)所屬st(訂座菜單表)類別名圖片單價(jià)菜名數(shù)量單價(jià)菜名點(diǎn)菜category (類別表)Food (菜單表)3.2.2 數(shù)據(jù)庫表設(shè)計(jì) 系統(tǒng)關(guān)鍵數(shù)據(jù)表如下:其關(guān)系見E-R圖1用戶表(users):用戶登錄是需要用戶名和密碼,所以用戶數(shù)據(jù)表中必

31、須包含用戶名(uname)、密碼(upass)兩個(gè)信息,還有些其他的用戶信息,比如power指的是用戶權(quán)限(管理員還是非管理員)。從功能上數(shù)據(jù)庫表設(shè)計(jì)如表3.1。表 3.1 用戶表列名數(shù)據(jù)類型長(zhǎng)度uidint4unamevarchar50upassvarchar50powerint42菜品信息表(food):菜品信息表主要描述菜品信息,如:菜品ID號(hào)(foodid),此ID號(hào)為系統(tǒng)自動(dòng)生成;菜品名稱(fname);菜品價(jià)格(price);所屬分類ID(categoryId);圖片信息(images)。商品信息表詳細(xì)描述如表3.2表3.2菜品信息表列名數(shù)據(jù)類型長(zhǎng)度foodIdint4pricem

32、oney8categoryId int4imagesvarchar503訂座菜單表(st):客戶訂餐的一些相關(guān)信息,如stId指的訂餐ID號(hào),此ID和是系統(tǒng)自動(dòng)生成的;菜品名稱(fname);訂購數(shù)量(num);價(jià)格(price);座位編號(hào)(seatId)等,具體描述表3.3表3.3供應(yīng)商表列名數(shù)據(jù)類型長(zhǎng)度stIdint4fnamevarchar50numint4pricemoney8seatIdint4fIdint44訂單表(orders): 訂單表有一下描述信息。訂單ID(ordersId),訂購人姓名(name),地址(address),聯(lián)系電話(tel),價(jià)格(price),備注信息(

33、context)等,具體描述如表3.4所示:表3.4訂單表列名數(shù)據(jù)類型長(zhǎng)度ordersIdint4namevarchar50addressvarchar50telvarchar50pricenumeric9uidint4contexttext165訂單菜單表(Shop)具體描述如表3.5所示:表3.5訂單菜單表列名數(shù)據(jù)類型長(zhǎng)度fIdint4fnamevarchar50numint4priceMoney8uidint4sidint46訂座表(Seat)具體描述如表3.6所示:表3.6訂座表列名數(shù)據(jù)類型長(zhǎng)度seatIdint4uidint50telvarchar50riqi varchar50nu

34、mint4namevarchar4xiaoshivarchar503.3系統(tǒng)結(jié)構(gòu)設(shè)計(jì)網(wǎng)上訂餐系統(tǒng)的模型結(jié)構(gòu)如下圖所示:客戶端瀏覽器客戶端瀏覽器客戶端瀏覽器Web層業(yè)務(wù)層數(shù)據(jù)訪問層系統(tǒng)配置數(shù)據(jù)庫從前面的需求分析中得知,可以將功能分為前臺(tái)和后臺(tái)兩類,因此模塊也分為兩大類:前臺(tái)模塊和后臺(tái)模塊。 下圖為系統(tǒng)模塊總圖:網(wǎng)上訂餐管理系統(tǒng)前臺(tái)模塊后臺(tái)模塊注冊(cè)登錄菜品查詢訂單查詢用戶權(quán)限管理菜品管理訂餐管理訂座管理用戶訂餐用戶訂座用戶管理系統(tǒng)模塊總圖3.4 核心算法實(shí)現(xiàn)分頁顯示算法int i;一頁顯示的記錄數(shù) = 10;取得待顯示頁碼PageSet : strPage 

35、= page;if(strPage=null)/page參數(shù)為空時(shí),此時(shí)顯示第一頁數(shù)據(jù)待顯示頁碼 = 1;else 待顯示頁碼 = Integer.parseInt(strPage); /將字符串轉(zhuǎn)換成整型if(待顯示頁碼<1) 待顯示頁碼 = 1;執(zhí)行SQL語句并獲取結(jié)果集ResultSet rs = sqlStmt.executeQuery("SQL”);獲取記錄總數(shù)rs.last();記錄總數(shù) = rs.getRow();記算總頁數(shù)總頁數(shù) =&

36、#160;(記錄總數(shù)+設(shè)置一頁顯示的記錄數(shù)-1) / 一頁顯示的記錄數(shù);調(diào)整待顯示的頁碼if(待顯示頁碼>總頁數(shù)) 待顯示頁碼 = 總頁數(shù);/ 分頁情況分類  /選擇向上翻if(待顯示頁碼>1)選擇向上翻一頁傳遞參數(shù)pageda=待顯示頁碼-1 goto PageSet;/選擇向下翻if(待顯示頁碼<總頁數(shù))選擇向下翻一頁傳遞參數(shù)pageda=待顯示頁碼+1 goto PageSet;If(選擇到尾頁)選擇到尾頁傳遞參數(shù)pageda=總頁數(shù) goto PageSet;頁次=待顯示頁碼 / 總頁數(shù)頁

37、   if(總頁數(shù)>0)將記錄指針定位到結(jié)果集的第一條記錄上(待顯示頁碼-1) * 一頁顯示的記錄數(shù) + 1);i = 0;while(i<一頁顯示的記錄數(shù) && 數(shù)據(jù)庫指針不在結(jié)果集尾部)輸出要分頁顯示的數(shù)據(jù)庫中的內(nèi)容;將數(shù)據(jù)庫指針移動(dòng)到當(dāng)前行的下一行;i+; 第四章 系統(tǒng)實(shí)現(xiàn)主要技術(shù)4.1 JavaServer Pages(JSP)技術(shù)簡(jiǎn)介在開發(fā)JSP規(guī)范的過程中,Sun 公司與許許多多主要的Web服務(wù)器、應(yīng)用服務(wù)器和開發(fā)工具供應(yīng)商,還有各種各

38、樣富有經(jīng)驗(yàn)的開發(fā)團(tuán)體進(jìn)行合作。最后找到了一種平衡了應(yīng)用和頁面開發(fā)的具有可移植性和易用性的開發(fā)方法,JSP技術(shù)特征在多個(gè)方面加速了動(dòng)態(tài)Web頁面的開發(fā):1) 將內(nèi)容的生成和顯示進(jìn)行分離使用JSP技術(shù),Web頁面開發(fā)人員可以使用HTML或者XML標(biāo)識(shí)來設(shè)計(jì)和格式化最終頁面。使用JSP標(biāo)識(shí)或者小腳本來生成頁面上的動(dòng)態(tài)內(nèi)容,這些內(nèi)容是根據(jù)請(qǐng)求來變化的,例如請(qǐng)求帳戶信息或者特定的一瓶酒的價(jià)格。生成內(nèi)容的邏輯部分被封裝在JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端運(yùn)行。如果核心邏輯被封裝在Beans中,那么其他人,如Web管理人員和頁面設(shè)計(jì)者,在編輯和使用JSP頁面的時(shí)候,將不會(huì)影響

39、到內(nèi)容的生成。在服務(wù)器端,JSP引擎解釋JSP標(biāo)識(shí)和小腳本,生成客戶端請(qǐng)求的內(nèi)容,例如,通過訪問JavaBeans組件,使用JDBC技術(shù)訪問數(shù)據(jù)庫或者其他文件,并且將結(jié)果以HTML(或者XML)頁面的形式發(fā)送回瀏覽器。這將有助于作者保護(hù)自己的代碼,并且又保證任何基于HTML的Web瀏覽器的完全可用性。2) 強(qiáng)調(diào)可重用的組件絕大多數(shù)JSP頁面依賴于可重用的,跨平臺(tái)的組件(JavaBeans或者Enterprise JavaBeansTM組件)來執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理問題。開發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者發(fā)布這些組件使更多的使用者或者客戶團(tuán)體能夠使用。3) 采用標(biāo)識(shí)簡(jiǎn)化頁

40、面開發(fā)Web頁面開發(fā)人員不會(huì)都是熟悉腳本語言的編程人員。JavaServer Page技術(shù)封裝了許多功能,這些功能是容易使用的、同時(shí)與JSP相關(guān)的XML標(biāo)識(shí)中進(jìn)行動(dòng)態(tài)內(nèi)容的生成時(shí)需要的。通過開發(fā)定制化標(biāo)識(shí)庫,JSP技術(shù)是可擴(kuò)展的。今后,第三方開發(fā)人員和其他人員可以將常用的功能創(chuàng)建到自己的標(biāo)識(shí)庫。這使得Web頁面開發(fā)人員能夠象使用熟悉的工具一樣來使用標(biāo)識(shí)來執(zhí)行特定功能的構(gòu)件來工作。JSP技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以便使用現(xiàn)存的工具和技巧,并且擴(kuò)展到能夠支持企業(yè)級(jí)的分布式應(yīng)用中。作為采用Java技術(shù)家族的一部分,以及Java 2(企業(yè)版體系結(jié)構(gòu))的一個(gè)組成部分,JSP技術(shù)能夠支持高度復(fù)雜

41、的基于Web的應(yīng)用開發(fā)。由于JSP頁面的內(nèi)置腳本語言是基于Java編程語言的,并且所有的JSP頁面都能被編譯成為Java Servlet,JSP頁面就具有Java技術(shù)的所有好處,包括健壯的存儲(chǔ)管理和安全性。作為Java平臺(tái)的一部分,JSP擁有Java編程語言“一次編寫,各處運(yùn)行”的特點(diǎn)。隨著越來越多的廠家將對(duì)JSP的支持添加到他們的產(chǎn)品中,我們可以選擇不同的服務(wù)器和工具,因?yàn)楦墓ぞ呋蚍?wù)器并不影響當(dāng)前的應(yīng)用。當(dāng)與Java 2平臺(tái),企業(yè)版(J2EE)8和Enterprise JavaBean技術(shù)整合時(shí),JSP頁面提了供企業(yè)級(jí)的擴(kuò)展性能,這對(duì)于在虛擬企業(yè)中部署基于Web的應(yīng)用是必需的。4.2 J

42、SP 和其他類似或相關(guān)技術(shù)的一個(gè)簡(jiǎn)單比較1) JSP和Active Server Pages(ASP)相比Microsoft的ASP是一種和JSP類似的技術(shù)。JSP和ASP相比具有兩方面的優(yōu)點(diǎn)。首先,動(dòng)態(tài)部分用Java編寫,而不是VB Script或其他Microsoft語言,不僅功能更強(qiáng)大而且更易于使用。第二,JSP應(yīng)用可以移植到其他操作系統(tǒng)和非Microsoft的Web服務(wù)器上。2) JSP和純Servlet相比JSP并沒有增加任何本質(zhì)上不能用Servlet實(shí)現(xiàn)的功能。但是,在JSP中編寫靜態(tài)HTML更加方便,不必再用 println語句來輸出每一行HTML代碼。更重要的是,借助內(nèi)容和外觀

43、的分離,頁面制作中不同性質(zhì)的任務(wù)可以方便地分開:比如,由頁面設(shè)計(jì)專家進(jìn)行HTML設(shè)計(jì),同時(shí)留出供Servlet程序員插入動(dòng)態(tài)內(nèi)容的空間。3) JSP和JavaScript相比JavaScript能夠在客戶端動(dòng)態(tài)地生成HTML。雖然JavaScript很有用,但它只能處理以客戶端環(huán)境為基礎(chǔ)的動(dòng)態(tài)信息。除了Cookie之外,HTTP狀態(tài)和表單提交數(shù)據(jù)對(duì)JavaScript來說都是不可用的。另外,由于是在客戶端運(yùn)行,JavaScript不能訪問服務(wù)器端資源,比如數(shù)據(jù)庫、目錄信息等等。4.3 最佳JSP應(yīng)用服務(wù)器Tomcat大多數(shù)人(大概29)都喜歡將Apache Tomcat當(dāng)作JSP應(yīng)用服務(wù)器使用

44、。有人可能會(huì)說,它之所以受歡迎是因?yàn)檫@個(gè)服務(wù)器是免費(fèi)和開放源代碼的,但是真正的原因遠(yuǎn)不止這些。Apache Tomcat能夠受歡迎,不僅是工作性能非常好,還有沒有初始的開發(fā)成本開銷等有力的競(jìng)爭(zhēng)因素,但這不是決定因素。Tomcat 結(jié)構(gòu)非常合理,更由于Tomcat 是Apache 組織的產(chǎn)品,這個(gè)組織有著雄厚的技術(shù)更新力量,并且Tomcat5.0 很好的支持了JSP2.0 規(guī)范,因此有著很好的發(fā)展前景。Tomcat是一個(gè)免費(fèi)的開源的Serlvet容器,它是Apache基金會(huì)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache,Sun和其它一些公司以及個(gè)人共同開發(fā)而成。由于有了Sun的參與和支持,

45、最新的Servlet和Jsp規(guī)范總能在Tomcat中得到體現(xiàn)。Tomcat被JavaWorld雜志的編輯選為2001年度最具創(chuàng)新的java產(chǎn)品,可見其在業(yè)界內(nèi)的地位。 Tomcat不僅僅是一個(gè)Servlet容器,它也具有傳統(tǒng)的Web服務(wù)器的功能:也處理Html頁面,但是與Apache相比,它的處理靜態(tài)Html的能力就不如Apache。JDK 是SUN 公司的JAVA應(yīng)用程序和組件的開發(fā)環(huán)境,是編譯、測(cè)試工具,也是提供JAVA 程序的 JAVA 虛擬機(jī)平臺(tái),是調(diào)試和運(yùn)行JSP 所不可缺少的工具9。4.4 javaBean組件技術(shù)1. 什么是JavaBean軟件開發(fā)的真正目的之一是利用在程序編碼方

46、面的投資,以便在同一公司或者不同公司的其他開發(fā)中重用程序編碼,近年來,編程人員投入大量精力以便建立可重用的軟件、可重用的軟件組件,早期用在面向?qū)ο缶幊谭矫嬷械耐顿Y已經(jīng)在Java、C#等編程語言的開發(fā)中充分實(shí)現(xiàn),很多軟件可以不用做很大的改變就可以運(yùn)行在各種平臺(tái)上。JavaBeans描述了Java的軟件組件模型,這個(gè)模型被設(shè)計(jì)成使第三方廠家可以生成和銷售能夠集成到其他開發(fā)廠家或者其他開發(fā)人員開發(fā)的軟件產(chǎn)品的Java組件。 應(yīng)用程序開發(fā)者可以從開發(fā)廠家購買現(xiàn)成的JavaBeans組件,拖放到集成開發(fā)環(huán)境的工具箱中,再將其應(yīng)用于應(yīng)用軟件的開發(fā),對(duì)于JavaBeans組件的屬性、行為可以進(jìn)行必要的修改、

47、測(cè)試和修訂而不必重新編寫和編譯程序。在JavaBeans模型中JavaBeans組件可以被修改或者與其他JavaBeans組件組合以生成新的JavaBeans組件或完整的Java應(yīng)用程序。Java應(yīng)用程序在運(yùn)行時(shí),最終用戶也可以通過JavaBeans組件設(shè)計(jì)者或應(yīng)用程序開發(fā)者所建立的屬性存取方法setXXX方法和getXXX方法修改JavaBeans組件的屬性。這些屬性可能是顏色和形狀等簡(jiǎn)單屬性,也可能是影響JavaBeans組件總體行為的復(fù)雜屬性。JavaBeans組件模型使得軟件可以設(shè)計(jì)成便于修改和便于升級(jí)。每個(gè)JavaBeans組件都包含了一組屬性、操作和事件處理器。將若干個(gè)JavaBe

48、ans組件組合起來就可以生成設(shè)計(jì)者、開發(fā)者所需要的特定運(yùn)行行為,JavaBeans組件存放于容器或工具庫中,供開發(fā)者開發(fā)應(yīng)用程序。 JavaBeans就是一個(gè)可以復(fù)用軟件模型。JavaBeans在某個(gè)容器中運(yùn)行提供具體的操作性能。JavaBeans是建立應(yīng)用程序的建筑模塊。大多數(shù)常用的JavaBeans通常是中小型控制程序,但我們也可以編寫包裝整個(gè)應(yīng)用程序運(yùn)行邏輯的JavaBeans組件,并將其嵌入到復(fù)合文檔中,以便實(shí)現(xiàn)更為復(fù)雜的功能。 一般來說JavaBeans可以表示為簡(jiǎn)單的GUI組件,可以是按鈕組件、游標(biāo)、菜單等等。這些簡(jiǎn)單的JavaBeans組件提供了告訴用戶什么是JavaBeans的

49、直觀方法。但我們也可以編寫一些不可見的JavaBeans,用于接受事件和在幕后工作,例如訪問數(shù)據(jù)庫執(zhí)行查詢操作的,JavaBeans它們?cè)谶\(yùn)行時(shí)刻不需要任何可視的界面。在JSP程序中所用的JavaBeans一般以不可見的組件為主。可見的JavaBeans一般用于編寫Applet程序或者Java應(yīng)用程序。2JavaBeans屬性JavaBeans的屬性與一般Java程序中所指的屬性,或者說與所有面向?qū)ο蟮某绦蛟O(shè)計(jì)語言中對(duì)象的屬性是同一個(gè)概念,在程序中的具體體現(xiàn)就是類中的變量在。JavaBeans的設(shè)計(jì)中,按照屬性的不同作用又細(xì)分為4類:Simple屬性、Index屬性、Bound屬性與Const

50、rained屬性。1) Simple屬性一個(gè)Simple類型的屬性表示一個(gè)伴隨有一對(duì)getXXX()、setXXX()方法的變量。屬性的名稱與和該屬性相關(guān)的getXXX()、setXXX()方法相對(duì)應(yīng)。例如:如果有setX()和getX()方法,則暗指有一個(gè)名為"X"的屬性,如果有一個(gè)方法名為isX()則通常暗指"X"是一個(gè)布爾類型的屬性。2) 4 Indexed屬性一個(gè)Indexed類型的JavaBeans屬性表示一個(gè)數(shù)組值。使用與該屬性相對(duì)應(yīng)的setXXX()方法和getXXX()方法可以存取數(shù)組中某個(gè)元素的數(shù)值。同時(shí),我們也可以使用另兩個(gè)同名方法一

51、次設(shè)置或取得整個(gè)數(shù)組的值(即屬性的值)。3) 5 Bound屬性一個(gè)Bound類型的JavaBean組件的屬性具有這樣的特性:當(dāng)該種屬性的值發(fā)生變化時(shí)必須通知其它的JavaBeans組件對(duì)象。每次JavaBeans組件對(duì)象的屬性值改變時(shí),這種屬性就引發(fā)一個(gè)PropertyChange事件(屬性改變事件,在Java程序中,事件也被看作是一個(gè)對(duì)象)。這個(gè)事件中封裝了發(fā)生屬性改變事件的屬性名、屬性的原值、屬性變化后的新值。這個(gè)事件將被傳遞到其它的JavaBeans組件中,至于接收事件的JavaBeans組件對(duì)象應(yīng)該做什么動(dòng)作由其自己定義。請(qǐng)看程序代碼:import java。beans。*; pub

52、lic class JavaBean3 String ourString= "Hello" private PropertyChangeSupport changes = new PropertyChangeSupport(this); public void setString(String newString) String oldString = ourString; ourString = newString; changes。firePropertyChange("ourString"oldStringnewString); public St

53、ring getString() return ourString; public void addPropertyChangeListener(PropertyChangeListener l) changes。addPropertyChangeListener(l); public void removePropertyChangeListener(PropertyChangeListener l) changes。removePropertyChangeListener(l); 程序首先創(chuàng)建了PropertyChangeSupport類型的對(duì)象changes,這是最關(guān)鍵的一步操作,cha

54、nges對(duì)象主要用于向監(jiān)聽者對(duì)象發(fā)送信息:當(dāng)前的JavaBean對(duì)象已經(jīng)發(fā)生了屬性改變的事件。在JavaBean3.java程序中除了普通的存取JavaBeans屬性值的setXXX()getXXX()等方法以,外還定義了如下的方法: public void addPropertyChangeListener(PropertyChangeListener l); public void removePropertyChangeListener(PropertyChangeListener l); 第一個(gè)方法(addPropertyChangeListener()方法)其實(shí)是調(diào)用changes對(duì)

55、象的addPropertyChangeListener()方法,使一個(gè)事件監(jiān)聽者對(duì)象和當(dāng)前JavaBean對(duì)象綁定起來,并把它添加到監(jiān)聽者隊(duì)列中去,充當(dāng)當(dāng)前JavaBean對(duì)象的事件監(jiān)聽者,如果當(dāng)前JavaBean對(duì)象發(fā)生了屬性值改變的事件,那么changes對(duì)象會(huì)依次通知監(jiān)聽者隊(duì)列中的每一個(gè)對(duì)象,當(dāng)然也通知了這個(gè)事件監(jiān)聽者對(duì)象,讓它對(duì)這個(gè)事件做出反映 。第二個(gè)方法(removePropertyChangeListener()方法)和前者的作用相反,該方法其實(shí)是調(diào)用changes對(duì)象的removePropertyChangeListener()方法,從監(jiān)聽者隊(duì)列中移除某個(gè)特定的事件監(jiān)聽者對(duì)象,

56、此事件監(jiān)聽者對(duì)象一旦從監(jiān)聽者隊(duì)列中刪除,那么changes對(duì)象將不會(huì)把屬性值改變的事件通知它,它再也沒有辦法對(duì)屬性值發(fā)生改變的事件作出響應(yīng)了。 getString()方法可以返回屬性值setString()方法用于設(shè)定屬性值setString()方法的代碼如下所示: String oldString = ourString; ourString = newString; changes.firePropertyChange("ourString"oldStringnewString); 在上面的代碼中,首先新定義一個(gè)字符串oldString,用于保存屬性的原值然后把新值賦給屬性值,這樣會(huì)產(chǎn)生JavaBeans組件屬性值改變的事件,最后調(diào)用changes對(duì)象的firePropertyChange()方法,通知監(jiān)聽者隊(duì)列里的所有事件監(jiān)聽者對(duì)象,當(dāng)前的JavaBean對(duì)象發(fā)生了屬性值改變的事件,屬性的名稱、屬性的新值、屬性的原值,都被作為該方法的參數(shù)一并傳給監(jiān)聽者對(duì)象,由它們根據(jù)這些信息,對(duì)此事件作出響應(yīng)。 Bound類型的屬性就是這樣使用的。4) Constrained屬性JavaBeans組件的Constrained類型的屬性具有這樣的性質(zhì):當(dāng)這個(gè)屬性的值將要發(fā)生變化但

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論