第3章商務(wù)邏輯層技術(shù)基礎(chǔ)電子商務(wù)技術(shù)基礎(chǔ)郵電部培_第1頁(yè)
第3章商務(wù)邏輯層技術(shù)基礎(chǔ)電子商務(wù)技術(shù)基礎(chǔ)郵電部培_第2頁(yè)
第3章商務(wù)邏輯層技術(shù)基礎(chǔ)電子商務(wù)技術(shù)基礎(chǔ)郵電部培_第3頁(yè)
第3章商務(wù)邏輯層技術(shù)基礎(chǔ)電子商務(wù)技術(shù)基礎(chǔ)郵電部培_第4頁(yè)
第3章商務(wù)邏輯層技術(shù)基礎(chǔ)電子商務(wù)技術(shù)基礎(chǔ)郵電部培_第5頁(yè)
已閱讀5頁(yè),還剩93頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Page1第3章商務(wù)邏輯層技術(shù)基礎(chǔ)商務(wù)邏輯層描述商務(wù)處理過(guò)程和商務(wù)規(guī)則,該層所定義的應(yīng)用功能是電子商務(wù)應(yīng)用系統(tǒng)開(kāi)發(fā)的重點(diǎn);提供輔助功能的通用軟件,通過(guò)與其它軟硬件的集成構(gòu)成支持商務(wù)邏輯的商務(wù)支持平臺(tái)。電子商務(wù)系統(tǒng)的大系統(tǒng)特征,電子商務(wù)系統(tǒng)體系結(jié)構(gòu)的演變,使得商務(wù)支持平臺(tái)承擔(dān)了大量的商務(wù)邏輯處理任務(wù),不但導(dǎo)致應(yīng)用軟件規(guī)模和復(fù)雜度的增大,而且對(duì)系統(tǒng)硬件、網(wǎng)絡(luò)等集成技術(shù)和系統(tǒng)管理都提出了更高的要求。為此,從軟件實(shí)現(xiàn)上,推動(dòng)了基于部件的分布式系統(tǒng)開(kāi)發(fā)方法和開(kāi)發(fā)技術(shù)的應(yīng)用和發(fā)展,從系統(tǒng)管理的需要出發(fā),產(chǎn)生了應(yīng)用服務(wù)器的思想。3.1商務(wù)邏輯層概述 3.2系統(tǒng)的開(kāi)發(fā)方法 3.3核心商務(wù)邏輯的實(shí)現(xiàn)

3.4應(yīng)用服務(wù)器相關(guān)技術(shù) 第一頁(yè),共九十八頁(yè)。 Page23.1商務(wù)邏輯層概述 3.1.1商務(wù)邏輯層與電子商務(wù)系統(tǒng) 3.1.2電子商務(wù)系統(tǒng)及其開(kāi)發(fā) 3.1.3商務(wù)支持平臺(tái)技術(shù)基礎(chǔ)第二頁(yè),共九十八頁(yè)。 Page3電子商務(wù)系統(tǒng)的主要組成及功能Internet企業(yè)電子商務(wù)系統(tǒng)Internet外部安全保障環(huán)境電子商務(wù)應(yīng)用表達(dá)平臺(tái)電子商務(wù)應(yīng)用系統(tǒng)電子商務(wù)服務(wù)平臺(tái)

支付接口SCM電子市場(chǎng)認(rèn)證接口電子商務(wù)基礎(chǔ)平臺(tái)

系統(tǒng)管理安全管理負(fù)載均衡站點(diǎn)管理中間件層(會(huì)話、傳輸、連接、事務(wù)處理)數(shù)據(jù)庫(kù)內(nèi)部安全保障環(huán)境企業(yè)內(nèi)部信息系統(tǒng)

EDPMISDSS/BI電子化銀行認(rèn)證機(jī)構(gòu)第三頁(yè),共九十八頁(yè)。 Page4商務(wù)邏輯的實(shí)現(xiàn)要素商務(wù)邏輯可以劃分成兩個(gè)層次,一個(gè)層次是企業(yè)的核心商務(wù)邏輯;另一層次就是支持核心商務(wù)邏輯的輔助部分。一般的,企業(yè)的核心邏輯是依靠電子商務(wù)應(yīng)用程序?qū)崿F(xiàn)的,而輔助部分可以通過(guò)不同的技術(shù)產(chǎn)品來(lái)集成。構(gòu)成支持平臺(tái)的技術(shù)產(chǎn)品至少應(yīng)當(dāng)包括:Web服務(wù)器、商務(wù)支持軟件、集成與開(kāi)發(fā)工具、計(jì)算機(jī)主機(jī)、網(wǎng)絡(luò)、其他系統(tǒng)軟件(如操作系統(tǒng)、管理工具軟件等)。通常Web服務(wù)器、商務(wù)支持軟件、部分集成開(kāi)發(fā)工具被集中在一個(gè)稱之為“應(yīng)用服務(wù)器”的軟件包中,商務(wù)邏輯層在物理上可以簡(jiǎn)化為以下三個(gè)部分:應(yīng)用軟件(實(shí)現(xiàn)商務(wù)邏輯)、應(yīng)用服務(wù)器(為應(yīng)用軟件提供軟件支持平臺(tái))和其他支持軟件、計(jì)算機(jī)主機(jī)及網(wǎng)絡(luò)(為應(yīng)用軟件提供硬件支持平臺(tái))。從實(shí)現(xiàn)上:應(yīng)用系統(tǒng)設(shè)計(jì)開(kāi)發(fā)、應(yīng)用平臺(tái)的搭建和軟硬件系統(tǒng)集成。第四頁(yè),共九十八頁(yè)。 Page5電子商務(wù)系統(tǒng)及其生命周期利用信息轉(zhuǎn)換核心和知識(shí)商務(wù)邏輯運(yùn)行可擴(kuò)充建造新的的、安全的信息系統(tǒng)環(huán)境第五頁(yè),共九十八頁(yè)。 Page6電子商務(wù)系統(tǒng)的系統(tǒng)特征客戶服務(wù)庫(kù)存管理物流管理過(guò)程過(guò)程過(guò)程客戶服務(wù)系統(tǒng)及客戶數(shù)據(jù)庫(kù)庫(kù)存系統(tǒng)及庫(kù)存數(shù)據(jù)庫(kù)物流系統(tǒng)及物流數(shù)據(jù)庫(kù)供應(yīng)鏈管理客戶關(guān)系管理系統(tǒng)客戶服務(wù)系統(tǒng)及客戶數(shù)據(jù)庫(kù)庫(kù)存系統(tǒng)及庫(kù)存數(shù)據(jù)庫(kù)物流系統(tǒng)及物流數(shù)據(jù)庫(kù)第六頁(yè),共九十八頁(yè)。 Page7電子商務(wù)系統(tǒng)開(kāi)發(fā)技術(shù)的進(jìn)展因素系統(tǒng)開(kāi)發(fā)基本原理軟件工程信息系統(tǒng)開(kāi)發(fā)電子商務(wù)系統(tǒng)特征,第七頁(yè),共九十八頁(yè)。 Page8商務(wù)支持平臺(tái)技術(shù)基礎(chǔ)商務(wù)支持平臺(tái)概述商務(wù)基礎(chǔ)平臺(tái)的功能提高系統(tǒng)性能,側(cè)重于保障系統(tǒng)的效率、可靠性和優(yōu)化商務(wù)服務(wù)平臺(tái)的功能提供更多的商務(wù)服務(wù),為企業(yè)的核心商務(wù)邏輯提供服務(wù)第八頁(yè),共九十八頁(yè)。 Page9應(yīng)用平臺(tái)的特性要求一般而言,理想的應(yīng)用平臺(tái)應(yīng)具備以下特征:可靠的和高性能的:支持商務(wù)邏輯的動(dòng)態(tài)分布。平臺(tái)應(yīng)當(dāng)預(yù)置各種應(yīng)用,提供多種服務(wù)。例如內(nèi)容管理、搜索工具等,提供多種開(kāi)發(fā)工具,支持多種開(kāi)發(fā)語(yǔ)言。平臺(tái)應(yīng)當(dāng)支持多種工業(yè)標(biāo)準(zhǔn)和操作系統(tǒng)平臺(tái),至少應(yīng)當(dāng)包括:表達(dá)技術(shù)標(biāo)準(zhǔn)(HTML、WM、Java、Javascript、C/C++);標(biāo)準(zhǔn)協(xié)議(HTTP、LDAP、IIOP);應(yīng)用集成:JavaBean、EJB、CORBA;主流平臺(tái)(Unix、WindowsNT);集成標(biāo)準(zhǔn)(JDBC、ODBC)。易于管理。平臺(tái)是模塊化的,各個(gè)部分是低耦合的,這樣它具有通用性。第九頁(yè),共九十八頁(yè)。 Page103.2電子商務(wù)系統(tǒng)開(kāi)發(fā)及其技術(shù)基礎(chǔ)3.2.1電子商務(wù)系統(tǒng)開(kāi)發(fā)技術(shù)基礎(chǔ)3.2.2電子商務(wù)系統(tǒng)規(guī)劃及其技術(shù)基礎(chǔ)3.2.3電子商務(wù)系統(tǒng)分析及其技術(shù)基礎(chǔ)3.2.4電子商務(wù)系統(tǒng)設(shè)計(jì)及其技術(shù)基礎(chǔ)

第十頁(yè),共九十八頁(yè)。 Page113.2.1電子商務(wù)系統(tǒng)開(kāi)發(fā)技術(shù)基礎(chǔ)1、軟件工程與電子商務(wù)應(yīng)用系統(tǒng)開(kāi)發(fā)2、電子商務(wù)系統(tǒng)的開(kāi)發(fā)過(guò)程分析第十一頁(yè),共九十八頁(yè)。 Page12信息系統(tǒng)生命周期模型總體規(guī)劃系統(tǒng)分析系統(tǒng)設(shè)計(jì)系統(tǒng)實(shí)施當(dāng)前系統(tǒng)運(yùn)行、維護(hù)新系統(tǒng)運(yùn)行、維護(hù)可行性報(bào)告系統(tǒng)說(shuō)明書(shū)設(shè)計(jì)說(shuō)明書(shū)用戶手冊(cè)參考抽象程度時(shí)間當(dāng)前系統(tǒng)的生命期系統(tǒng)開(kāi)發(fā)過(guò)程新系統(tǒng)的生命期圖3-5信息系統(tǒng)的生命期模型第十二頁(yè),共九十八頁(yè)。 Page13系統(tǒng)分析、設(shè)計(jì)相關(guān)領(lǐng)域成功案例企業(yè)商務(wù)發(fā)展需求企業(yè)商務(wù)模式系統(tǒng)需求分析技術(shù)方案比選系統(tǒng)結(jié)構(gòu)確認(rèn)應(yīng)用系統(tǒng)功能系統(tǒng)平臺(tái)構(gòu)成系統(tǒng)邏輯構(gòu)成第十三頁(yè),共九十八頁(yè)。 Page143.2.2電子商務(wù)系統(tǒng)規(guī)劃及其技術(shù)基礎(chǔ)

電子商務(wù)系統(tǒng)規(guī)劃的特點(diǎn)商務(wù)模型規(guī)劃商務(wù)系統(tǒng)規(guī)劃第十四頁(yè),共九十八頁(yè)。 Page15電子商務(wù)系統(tǒng)規(guī)劃的層次與目標(biāo)

調(diào)查企業(yè)需求、成功案例戰(zhàn)略規(guī)劃 確定電子商務(wù)發(fā)展策略戰(zhàn)術(shù)規(guī)劃 確定電子商務(wù)系統(tǒng)的 體系結(jié)構(gòu) (處理、內(nèi)容、應(yīng)用、技術(shù))電子商務(wù)系統(tǒng)分析設(shè)計(jì)商務(wù)模型規(guī)劃商務(wù)系統(tǒng)規(guī)劃第十五頁(yè),共九十八頁(yè)。 Page16商務(wù)模型規(guī)劃的基本過(guò)程電子商務(wù)基本模式B2C(網(wǎng)絡(luò)銷售)B2B(虛擬電子市場(chǎng))C2C(社區(qū))——企業(yè)核心商務(wù)活動(dòng)市場(chǎng)銷售訂貨/訂單交付客戶服務(wù)——成功的電子商務(wù)案例理解一般商務(wù)模式,選擇企業(yè)未來(lái)的商務(wù)模式電子商務(wù)的影響導(dǎo)致的新變化規(guī)劃企業(yè)的商務(wù)模式變化的商務(wù)流程規(guī)劃商務(wù)模型的基本組成單元規(guī)劃企業(yè)的商務(wù)模型內(nèi)部信息系統(tǒng)支持聯(lián)機(jī)交易與支付物流供應(yīng)鏈構(gòu)成外部信息系統(tǒng)合作伙伴的協(xié)作關(guān)系第十六頁(yè),共九十八頁(yè)。 Page17電子商務(wù)系統(tǒng)分析設(shè)計(jì)階段示意圖相關(guān)領(lǐng)域成功案例企業(yè)商務(wù)發(fā)展需求企業(yè)商務(wù)模式系統(tǒng)需求分析技術(shù)方案比選系統(tǒng)結(jié)構(gòu)確認(rèn)應(yīng)用系統(tǒng)功能系統(tǒng)平臺(tái)構(gòu)成系統(tǒng)邏輯構(gòu)成第十七頁(yè),共九十八頁(yè)。 Page18面向?qū)ο笈c結(jié)構(gòu)化方法現(xiàn)實(shí)世界為對(duì)象世界結(jié)構(gòu)化分析結(jié)構(gòu)化設(shè)計(jì)順序存儲(chǔ)指令計(jì)算機(jī)過(guò)程世界結(jié)構(gòu)化編程面向?qū)ο蠓治雒嫦驅(qū)ο缶幊堂嫦驅(qū)ο笤O(shè)計(jì)中醫(yī)?西醫(yī)第十八頁(yè),共九十八頁(yè)。 Page19常用簡(jiǎn)易分析方法買方賣方商品需求和報(bào)價(jià)請(qǐng)求報(bào)價(jià)單還價(jià)磋商過(guò)程訂購(gòu)單訂購(gòu)應(yīng)答運(yùn)輸說(shuō)明發(fā)貨通知供貨方需求方開(kāi)戶銀行供貨方開(kāi)戶銀行需求方配送機(jī)構(gòu)認(rèn)證機(jī)構(gòu)購(gòu)貨訂單貨物運(yùn)轉(zhuǎn)貨物運(yùn)轉(zhuǎn)到款通知付款通知數(shù)字證書(shū),數(shù)字簽名銀行轉(zhuǎn)賬第十九頁(yè),共九十八頁(yè)。 Page203.2.4電子商務(wù)系統(tǒng)設(shè)計(jì)及其技術(shù)基礎(chǔ)系統(tǒng)設(shè)計(jì)概述電子商務(wù)系統(tǒng)與分布式應(yīng)用對(duì)象與可重用性部件與互操作性第二十頁(yè),共九十八頁(yè)。 Page21(1)分布計(jì)算分布計(jì)算是指網(wǎng)絡(luò)中兩個(gè)或兩個(gè)以上的軟件相互共享信息資源。這些軟件可以位于同一臺(tái)計(jì)算機(jī)中,也可以部署在網(wǎng)絡(luò)節(jié)點(diǎn)的任意位置?;诜植际侥P偷能浖到y(tǒng)具有均衡運(yùn)行系統(tǒng)負(fù)載、共享網(wǎng)絡(luò)資源的技術(shù)優(yōu)勢(shì)。網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)計(jì)算、Internet的突起,使軟件的開(kāi)發(fā)從單一系統(tǒng)的完整性和一致性,向著群體生產(chǎn)率的提高、不同系統(tǒng)之間的靈活互連和適應(yīng)性而發(fā)展,軟件的非功能性需求比以往得到更大的重視。從此,以主機(jī)為中心的計(jì)算方式轉(zhuǎn)變?yōu)橐跃W(wǎng)絡(luò)為中心的計(jì)算方式。但是,這一方面導(dǎo)致應(yīng)用軟件的功能、性能、規(guī)模和復(fù)雜性的極大增長(zhǎng),另一方面要求各種應(yīng)用軟件之間能夠互相交互。為此,系統(tǒng)集成成為重要課題,系統(tǒng)集成不僅包括不同廠商的網(wǎng)絡(luò)、計(jì)算機(jī)平臺(tái)之間的集成,更重要的是應(yīng)用軟件層次上的集成。如圖所示。第二十一頁(yè),共九十八頁(yè)。 Page22計(jì)算方式的重大變化ForI=1to100X=X+AY=X/2Z=X+Y數(shù)據(jù)庫(kù)系統(tǒng)電子表格字處理主機(jī)為中心網(wǎng)絡(luò)為中心開(kāi)發(fā)為中心集成為中心圖3-2計(jì)算方式的重大變化第二十二頁(yè),共九十八頁(yè)。 Page23軟件質(zhì)量?健壯性、維護(hù)性、重用性、擴(kuò)展性產(chǎn)品運(yùn)行產(chǎn)品轉(zhuǎn)移產(chǎn)品修改可理解性可維修性靈活性可測(cè)試性可移植性可再用性互運(yùn)行性(能和另一個(gè)系統(tǒng)結(jié)合嗎)正確性健壯性效率(性能)完整性可用性風(fēng)險(xiǎn)軟件工廠一萬(wàn)人做十年?第二十三頁(yè),共九十八頁(yè)。 Page24(2)二進(jìn)制代碼級(jí)重用程序=數(shù)據(jù)結(jié)構(gòu)+算法(過(guò)程和函數(shù))用戶名口令求解空間與問(wèn)題空間割裂受編譯器等限制平面結(jié)構(gòu),無(wú)層次通用報(bào)表工具第二十四頁(yè),共九十八頁(yè)。 Page25面向?qū)ο笤创a級(jí)重用對(duì)象=屬性+方法(封裝)Publicclass{ privatename; private; publicgetName(); public;}無(wú)二進(jìn)制鏈接標(biāo)準(zhǔn)無(wú)法跨語(yǔ)言、跨平臺(tái)重用對(duì)象改變,重新鏈接編譯內(nèi)部相關(guān)性外部耦合性第二十五頁(yè),共九十八頁(yè)。 Page26對(duì)象的基本機(jī)制狀態(tài)消息方法封裝博大精深厚--薄--厚第二十六頁(yè),共九十八頁(yè)。 Page27類、對(duì)象、繼承人學(xué)生研究生教師博士生本科生Name:BobSex:MaleAge:25Weight:63Grade:JuniorWhich-gradeHow-old第二十七頁(yè),共九十八頁(yè)。 Page28(3)可擴(kuò)展性與互操作性可擴(kuò)展性:功能、性能的擴(kuò)充,特別是在分布環(huán)境中,各種應(yīng)用軟件的互操作性顯得越來(lái)越重要。互操作性:兩個(gè)或多個(gè)軟件部件合作的能力,即使其實(shí)現(xiàn)的編程語(yǔ)言、接口及運(yùn)行平臺(tái)是在完全不同的情況下。應(yīng)用軟件的使用者和開(kāi)發(fā)者希望能象電子類產(chǎn)品部件的消費(fèi)者和制造商那樣即插即用各種應(yīng)用軟件,如:電冰箱和供電服務(wù)--插頭、插口、適配器、變換器等,由此產(chǎn)生了組件(Component)技術(shù)。組件技術(shù)是提高大型軟件可重用性的一種技術(shù),其最基本的出發(fā)點(diǎn)是通過(guò)軟件模塊化、軟件模塊標(biāo)準(zhǔn)化,使大型軟件可以利用一個(gè)個(gè)能夠重復(fù)使用的“軟件零件”進(jìn)行組裝,加快開(kāi)發(fā)的速度,同時(shí)降低成本。這一思想在軟件工程中早就提出過(guò),但是在技術(shù)和工藝方面的成熟則是近改甑氖慮欏第二十八頁(yè),共九十八頁(yè)。 Page29基于組件的重用、擴(kuò)展、互操作小的二進(jìn)制可執(zhí)行模塊分布式處理要求:存取透明、失敗透明、位置透明、遷移透明、持久性透明、重定位透明、復(fù)制透明、提交透明。面向?qū)ο笳Z(yǔ)言無(wú)關(guān)位置透明動(dòng)態(tài)鏈接軟件互操作分布式計(jì)算系統(tǒng)擴(kuò)展性定制的靈活性減少維護(hù)成本第二十九頁(yè),共九十八頁(yè)。 Page30部件模型部件模型由部件(component)與容器(container)兩種主要成分構(gòu)成。部件通過(guò)其接口向外界提供功能入口,接口是部件內(nèi)一組功能的集合,包含的是功能函數(shù)的入口,外界通過(guò)接口引用或接口指針來(lái)調(diào)用部件內(nèi)的功能函數(shù)。容器類似于裝配車間,是一種存放相關(guān)部件的器皿,用于安排部件、實(shí)現(xiàn)部件間的交互,其形式也是多種多樣的,如表格、頁(yè)面、框架、外殼等。另外,容器也可以作為另一容器的部件部件軟件和Internet一起被列為目前軟件產(chǎn)業(yè)兩個(gè)重要的增長(zhǎng)點(diǎn)。軟件部件的迅速發(fā)展使得基本部件裝配應(yīng)用開(kāi)發(fā)模型成為一種深入到軟件業(yè)的新的應(yīng)用開(kāi)發(fā)模式與開(kāi)發(fā)環(huán)境。Micorsoft的VisualBasic是一種非常典型的使用部件進(jìn)行編程的工具。Sybase公司的PowerBuilder,Borland公司的Delphi等。它們將部件技術(shù)的功能不斷擴(kuò)展,成為非常流行的開(kāi)發(fā)工具。此外,許多大公司都先后開(kāi)發(fā)出已被廣泛使用的部件,如Micorsoft的VBX、OCX及ActiveX控件,Borland公司的Delphi中數(shù)據(jù)訪問(wèn)部件等。SUN、IBM--BEANS。第三十頁(yè),共九十八頁(yè)。 Page31部件模型與部件標(biāo)準(zhǔn)容器部件CORBACOMJAVABEAN第三十一頁(yè),共九十八頁(yè)。 Page32基于部件的應(yīng)用系統(tǒng)開(kāi)發(fā)的組織

視圖 控制器 模型 應(yīng)用內(nèi)容 頁(yè)面內(nèi)容和布局 應(yīng)用流程 商業(yè)邏輯 運(yùn)行環(huán)境角色 頁(yè)面制作者 應(yīng)用組裝者 組件提供者 WEB管理員部件 HTML,JSP, Servlets JavaBeans, 配置數(shù)據(jù)

XML,Applets JavaBeans,XML EJB 站點(diǎn)使用分析工具 WebSphere WebSphere Studio,VAJAVA ApplicationServer Studio Studio IBMConnectors PerformancePack SiteAnalysisTools培訓(xùn)第三十二頁(yè),共九十八頁(yè)。 Page333.3核心商務(wù)邏輯的實(shí)現(xiàn)及其技術(shù)基礎(chǔ)3.3.1電子商務(wù)應(yīng)用系統(tǒng)實(shí)現(xiàn)概述3.3.2傳統(tǒng)程序語(yǔ)言與公共網(wǎng)關(guān)接口CGI3.3.3基于ASP與Activex的系統(tǒng)開(kāi)發(fā)3.3.4Java語(yǔ)言及其技術(shù)分析3.3.5PHP開(kāi)發(fā)技術(shù)分析第三十三頁(yè),共九十八頁(yè)。 Page343.3.1電子商務(wù)應(yīng)用系統(tǒng)實(shí)現(xiàn)概述電子商務(wù)系統(tǒng)與電子商務(wù)應(yīng)用系統(tǒng)的實(shí)現(xiàn)

電子商務(wù)系統(tǒng)的應(yīng)用是基于Web的應(yīng)用,是一種分布式的結(jié)構(gòu),所以開(kāi)發(fā)工作可以分解成為客戶端和服務(wù)器端的應(yīng)用開(kāi)發(fā)兩部分。

由于電子商務(wù)系統(tǒng)的應(yīng)用程序既包括編譯型的程序,也包括解釋型的腳本程序(例如

JavaApplet、

JavaScript、

VBScript等),而這些腳本程序基本上都是嵌入到

HTML頁(yè)面中的,所以,應(yīng)用程序的編寫就不僅局限于編碼,而且也包括HTML頁(yè)面的編寫。借助于組件技術(shù)搭建應(yīng)用日益成為未來(lái)電子商務(wù)應(yīng)用開(kāi)發(fā)與集成的主流方向。第三十四頁(yè),共九十八頁(yè)。 Page35開(kāi)發(fā)語(yǔ)言的選擇標(biāo)準(zhǔn)平臺(tái)無(wú)關(guān)性與其他部件的結(jié)合能力軟件的可重用與數(shù)據(jù)庫(kù)的連接能力 語(yǔ)言使用的簡(jiǎn)易性第三十五頁(yè),共九十八頁(yè)。 Page363.3.2傳統(tǒng)程序語(yǔ)言與公共網(wǎng)關(guān)接口CGI

1、CGI工作原理2、用C語(yǔ)言編制的CGI程序3、CGI程序的輸出處理4、CGI程序的輸入第三十六頁(yè),共九十八頁(yè)。 Page37CGI工作原理第三十七頁(yè),共九十八頁(yè)。 Page38用C語(yǔ)言編制的CGI程序voidmain(){printf("Content-type:text/html\n\n");printf("<html>\n");printf("<title>用C編制CGI程序<title>\n");printf("<body>\n");printf("<p>第一個(gè)CGI程序,這是用C編寫的</p>\n");printf("</body></html>\n");}第三十八頁(yè),共九十八頁(yè)。 Page39CGI程序的輸出處理Content-type:text/html<html><title>用C編制CGI程序<title><body><p>第一個(gè)CGI程序,這是用C編寫的</p></body></html>輸出類型說(shuō)明和HTML正文第三十九頁(yè),共九十八頁(yè)。 Page40CGI程序的輸入--GET通常情況下,CGI程序的輸入是由客戶端的窗體提交而產(chǎn)生的。窗體的提交有POST和GET兩種方式。這兩種方式提交資料的格式是不同的。在HTML語(yǔ)法中,窗體提交時(shí)的默認(rèn)方式為GET,當(dāng)以此種方式交時(shí),用戶所提交的資料將以參數(shù)形式附在CGI程序名的后面,例如一個(gè)登錄驗(yàn)證的HTML窗體中,當(dāng)我們填好用戶名和密碼后點(diǎn)擊“提交”按鈕,則地址欄顯示如下:當(dāng)瀏覽器端以GET方提交資料時(shí),在服務(wù)器端將自動(dòng)生成一個(gè)環(huán)境變量QUERY_STRING,該參數(shù)記錄的就是瀏覽器提交的資料,即“?”后的部分,將該環(huán)境變量的值打印出來(lái)是這樣的:name=bluegenius&password=mypass第四十頁(yè),共九十八頁(yè)。 Page41CGI程序的輸入--POST當(dāng)窗體采用POST方式交資料時(shí),其提交的資料則被加入到服務(wù)器端的標(biāo)準(zhǔn)輸入stdin中,其參數(shù)的形式與GET基本相同,同時(shí)在服務(wù)器端生成一個(gè)環(huán)境變量:CONTENT_LENGTH,該變量說(shuō)明了瀏覽器提交的參數(shù)總長(zhǎng)度,以便讀入和分析參數(shù)時(shí)的控制。上例中,當(dāng)我們采用POST方式交時(shí),將stdin中的內(nèi)容打印出來(lái),則為如下形式:name=bluegenius&password=mypass可見(jiàn),其參數(shù)的形式和意義與GET方式全相同。無(wú)論窗體是以何種方式提交,所得到的參數(shù)串是完全相同的,下面要做的就是如何將該參數(shù)串拆解開(kāi),以獲得各輸入項(xiàng)的值。基本思路為:主程序首先調(diào)用CgiInit將用戶提交的參數(shù)串讀入到自定義緩沖區(qū)buff中,然后調(diào)用ParsePara將各參數(shù)拆解出來(lái)。其余的幾個(gè)則為輔助函數(shù),主要用于將參數(shù)中的漢字轉(zhuǎn)換為正確的形式。因?yàn)樵诖绑w提交過(guò)程中,無(wú)論采用何種提交方式,漢字都是被轉(zhuǎn)換成為一個(gè)個(gè)的以“%”開(kāi)頭的16進(jìn)制碼,如%BC%4F等,每2個(gè)16進(jìn)制碼表示一個(gè)漢字。當(dāng)我們采用GET方式提交帶有漢字的參數(shù)時(shí),會(huì)在瀏覽器的地址欄中發(fā)現(xiàn)這些16進(jìn)制碼而不會(huì)找到一個(gè)漢字,就是這個(gè)原因。將用戶提交的參數(shù)拆解開(kāi)后,就可以分析并處理這些信息,其過(guò)程與方法和普通的C程序是完全相同的,最后CGI程序輸出處理結(jié)果,這就是一個(gè)CGI程序完整的處理過(guò)程了。第四十一頁(yè),共九十八頁(yè)。 Page423.3.3基于ASP與Activex的系統(tǒng)開(kāi)發(fā)第四十二頁(yè),共九十八頁(yè)。 Page43示例<%@LANGUAGE=JScript%><html><head></head><body><%for(i=0;i<7;i++){%><p><fontsize=<%=i%>>這是一個(gè)測(cè)試程序!</font></p><%}%></body></html><html><head></head><body><p><fontsize=0>這是一個(gè)測(cè)試程序!</font></p><p><fontsize=1>這是一個(gè)測(cè)試程序!</font></p><p><fontsize=2>這是一個(gè)測(cè)試程序!</font></p><p><fontsize=3>這是一個(gè)測(cè)試程序!</font></p><p><fontsize=4>這是一個(gè)測(cè)試程序!</font></p></body></html>第四十三頁(yè),共九十八頁(yè)。 Page44ASP編程的基本規(guī)則ASP編程首先要確定其使用的腳本語(yǔ)言。ASP的編程可采用各種腳本語(yǔ)言,只要服務(wù)器端安裝了相應(yīng)的腳本引擎即可。需要注意的是:ASP本身有一定的語(yǔ)法規(guī)則,也可算作一種編程語(yǔ)言,而同時(shí)所使用的腳本語(yǔ)言自身還有一套語(yǔ)法,因此在編制ASP程序的過(guò)程中,必須同時(shí)遵守這兩方面的語(yǔ)法規(guī)定才行,缺一不可。一個(gè)ASP文件實(shí)際包含了兩個(gè)部分:HTML部分和ASP腳本命令部分。其中,HTML部分與普通的HTML文件的語(yǔ)法規(guī)則是相同的;而ASP腳本則利用<%和%>兩種標(biāo)記嵌入到HTML部分之中,在已有的HTML基礎(chǔ)上對(duì)其輸出實(shí)現(xiàn)控制。第四十四頁(yè),共九十八頁(yè)。 Page45ASP的內(nèi)部對(duì)象第四十五頁(yè),共九十八頁(yè)。 Page46(1)Request對(duì)象可以使用Request對(duì)象訪問(wèn)任何基于HTTP請(qǐng)求傳遞的信息,包括從HTML表格用POST方法或GET方法傳遞的參數(shù)、Cookie、用戶認(rèn)證及服務(wù)器端變量等。同時(shí),Request對(duì)象還能夠訪問(wèn)客戶端發(fā)送給服務(wù)器的二進(jìn)制數(shù)據(jù)。Request對(duì)象主要有如下幾種最常見(jiàn)的應(yīng)用:獲取由POST方法提交的表單的各元素值Request.Form(element)[(index)|.Count]獲取QueryString中各變量的值Request.QueryString(variable)[(index)|.Count]獲取Cookie中變量的值Request.Cookies(cookie)[(key)|.attribute]獲取服務(wù)器端環(huán)境變量值Request.ServerVariables(Name)第四十六頁(yè),共九十八頁(yè)。 Page47示例編制頁(yè)面,用戶提交信息該表單的提交項(xiàng)定義如下:<formmethod="POST"action="ShowInfo.asp">處理后,回顯給用戶第四十七頁(yè),共九十八頁(yè)。 Page48為處理表單數(shù)據(jù)的ASP文件:ShowInfo.asp<%@Language=JScript%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=gb2312"><title>NewPage1</title></head><body><p><fontcolor="#FF0000">您提交了如下信息:<br></font><br><fontcolor="#0000FF">姓名:<%=Request.Form("Name")%><br>性別:<%=Request.Form("Sex")%><br>籍貫:<%=Request.Form("HomeTown")%><br></font><br><%n=Request.Form("Hobby").Countif(n>0){%><fontcolor=“#0000FF”>您的愛(ài)好共有<%=n%>項(xiàng):

<%for(;n>0;n--){%> <%=Request.Form("Hobby")(n)%> <%}}else%>您沒(méi)有什么特別的愛(ài)好。</font></p></body></html>第四十八頁(yè),共九十八頁(yè)。 Page49(2)Response對(duì)象與Request對(duì)象正相反,Response對(duì)象是用來(lái)控制發(fā)送給用戶的信息,包括直接發(fā)送信息給瀏覽器、重定向?yàn)g覽器到另一個(gè)URL或設(shè)置Cookie的值等。設(shè)置Cookie的值Response.Cookies(cookie)[(key)|.attribute]=value設(shè)置Web頁(yè)面保留在客戶端瀏覽器緩沖中的時(shí)間① Response.Expires=value② Response.ExpiresAbsolute=value<%Response.ExpiresAbsolute=#Dec31,20009:30:30#%>向?yàn)g覽器輸出信息

Response.Write(String)重新定向URLResponse.Redirect(URL)Response.Redirect(””)第四十九頁(yè),共九十八頁(yè)。 Page50(3)Application對(duì)象下面是一個(gè)計(jì)數(shù)器程序,也是一個(gè)比較典型的Applicatio對(duì)象的應(yīng)用方法。<%@LANGUAGE=JavaScript%><html><head><title>計(jì)數(shù)器示例</title></head><body><% Application.Lock//若未設(shè)定初值,則將其設(shè)為0 if(isNaN(parseInt(Application("Num")))) Application("Num")=0; Application("Num")=Application("Num")+1 Application.Unlock%>您是第<%=Application("Num")%>位來(lái)客!</body></html>第五十頁(yè),共九十八頁(yè)。 Page51(4)Session對(duì)象Session對(duì)象存儲(chǔ)特定的用戶會(huì)話所需的信息。當(dāng)用戶在應(yīng)用程序的頁(yè)之間跳轉(zhuǎn)時(shí),存儲(chǔ)在Session對(duì)象中的變量不會(huì)清除,而用戶在應(yīng)用程序中訪問(wèn)頁(yè)面時(shí),這些變量始終存在。要注意的是,會(huì)話狀態(tài)僅在支持Cookie的瀏覽器中保留,如果客戶關(guān)閉了Cookie選項(xiàng),Session也就不能發(fā)揮作用了。例如下面例子:<%Session("Name")="bluegenius"Session(“Password”)=“12345”%>在Session中建立了Name和Password兩個(gè)變量,在以后由其直接或間接鏈接而出的網(wǎng)頁(yè)中(注意:必須是直接或間接鏈接而出的一組網(wǎng)頁(yè)才構(gòu)成一組對(duì)話)就可通過(guò)如下語(yǔ)句獲得用戶名和密碼:<%Name=Session("Name")Password=Session("Password")%>之后,就可以用這個(gè)用戶名和密碼進(jìn)行身份校驗(yàn)了。第五十一頁(yè),共九十八頁(yè)。 Page523.3.4Java語(yǔ)言及其技術(shù)分析Java是SUN公司與1990年開(kāi)始,為消費(fèi)者電子市場(chǎng),如電視機(jī)、電話、烤面包機(jī)等家用電器的控制和通訊,而設(shè)計(jì)的軟件。設(shè)計(jì)小組最開(kāi)始使用C++,但是它在在消費(fèi)者使用的各種硬件架構(gòu)及對(duì)穩(wěn)定的要求上卻產(chǎn)生了問(wèn)題,于是這個(gè)小組開(kāi)發(fā)了一種新的語(yǔ)言,并為它命名Java。這個(gè)名稱并不是某個(gè)簡(jiǎn)稱,而是指設(shè)計(jì)人員們所喜歡的又熱又香醇的咖啡,更重要的是,它包含了激發(fā)這個(gè)技術(shù)的要素:活波、動(dòng)畫、速度、互動(dòng)以及其他會(huì)選擇Java的可能因素。而今天,它已經(jīng)成為Internet上的配送工具。第五十二頁(yè),共九十八頁(yè)。 Page53(1)Java是編程語(yǔ)言特點(diǎn):簡(jiǎn)單可靠,是面向?qū)ο蟆⑴c平臺(tái)無(wú)關(guān)的,具有可移植性,安全性好,并且支持多線程,具有很高的性能;其次,它最大限度地利用了網(wǎng)絡(luò),Java小應(yīng)用程序可在網(wǎng)絡(luò)上傳輸而不受計(jì)算機(jī)和操作系統(tǒng)的限制。Java既可以被編譯,也可以被解釋。通過(guò)編譯器,可以把Java程序翻譯成一種中間代碼(字節(jié)碼)——可以被Java解釋器解釋的獨(dú)立于平臺(tái)的代碼。通過(guò)解釋器,每條Java字節(jié)指令被分析,然后在計(jì)算機(jī)上運(yùn)行。JAVA源程序JAVA編譯器JAVA字節(jié)碼通過(guò)網(wǎng)絡(luò)或本地文件系統(tǒng)傳送字節(jié)碼類裝載器字節(jié)碼校驗(yàn)器JAVA類庫(kù)JAVA解釋器及時(shí)編譯器運(yùn)行時(shí)系統(tǒng)操作系統(tǒng)硬件JAVA虛擬機(jī)編譯時(shí) 運(yùn)行時(shí)第五十三頁(yè),共九十八頁(yè)。 Page54(2)Java是平臺(tái)平臺(tái)是程序運(yùn)行的硬件或軟件環(huán)境。Java平臺(tái)與大多數(shù)其他平臺(tái)的不同之處在于,它是運(yùn)行于其他硬件平臺(tái)的純軟件平臺(tái),而大多數(shù)其他平臺(tái)是硬件和操作系統(tǒng)的結(jié)合。Java平臺(tái)由Java虛擬機(jī)(JavaVirtualMachine,簡(jiǎn)稱JVM)和Java應(yīng)用程序接口(JavaAPI)兩部分組成。JVM是Java平臺(tái)的基礎(chǔ)。JVM發(fā)揮抽象計(jì)算機(jī)的作用,在Java應(yīng)用程序和本機(jī)系統(tǒng)之間建立了一個(gè)絕緣層,屏蔽掉了硬件和操作系統(tǒng)的不同,使Java程序“編寫一次,任意運(yùn)行”。可以把Java字節(jié)碼看作運(yùn)行在JVM上的計(jì)算機(jī)代碼指令。每種Java解釋器,不管是Java開(kāi)發(fā)工具還是可以運(yùn)行Java小應(yīng)用程序的Web瀏覽器,都是JVM的實(shí)例。JavaAPI由多種Java包(package)組成,它們提供了很多有用的功能。如java.awt是窗口工具包,可以用來(lái)創(chuàng)建圖形用戶界面(GUI);java.io用來(lái)實(shí)現(xiàn)輸入/輸出處理;java.sql即JDBC包,包含了實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接的一系列類和接口。圖6-2描述了一個(gè)運(yùn)行在Java平臺(tái)上的Java程序,如應(yīng)用程序(Application)或小應(yīng)用程序(Applet)。圖中,JavaAPI和JVM把Java程序從硬件依賴中分離出來(lái)。Java程序JavaAPIJava虛擬機(jī)基于硬件的平臺(tái)Java平臺(tái)第五十四頁(yè),共九十八頁(yè)。 Page55(3)Java應(yīng)用程序//Thisclasssimplydisplays”HelloWorld”tothe//standardoutput.classHelloWorldAPP{Publicstaticvoidmain(String[],args){System.out.println(”HelloWorld!”);}}第五十五頁(yè),共九十八頁(yè)。 Page56(4)Java小應(yīng)用程序Java小應(yīng)用程序是動(dòng)態(tài)、安全、跨平臺(tái)的網(wǎng)絡(luò)應(yīng)用程序,Java語(yǔ)言迅速流行的重要原因也正在于此。JavaApplet不能獨(dú)立運(yùn)行,需要嵌入在HTML頁(yè)面中,通過(guò)瀏覽頁(yè)面來(lái)執(zhí)行。第五十六頁(yè),共九十八頁(yè)。 Page573、構(gòu)建多層應(yīng)用軟件體系結(jié)構(gòu)的Java技術(shù)在構(gòu)建多層應(yīng)用軟件體系結(jié)構(gòu)時(shí),選用Java平臺(tái)是一個(gè)非常好的選擇,而實(shí)現(xiàn)多層結(jié)構(gòu)需要使用的關(guān)鍵技術(shù)和運(yùn)行環(huán)境主要有:客戶層:JavaApplet編程技術(shù),運(yùn)行環(huán)境為支持Java的瀏覽器或可以直接運(yùn)行Java程序的計(jì)算機(jī)(例如網(wǎng)絡(luò)計(jì)算機(jī))。頂端Web服務(wù)層:JavaServlet編程技術(shù)、JSP技術(shù)、RMI技術(shù)和JavaBean編程技術(shù),運(yùn)行環(huán)境為使用Java語(yǔ)言編寫的Web服務(wù)器(起代理服務(wù)器作用)。應(yīng)用服務(wù)層:JavaServlet編程技術(shù)、RMI技術(shù)、JDBC技術(shù)和JavaBean編程技術(shù),運(yùn)行環(huán)境為使用Java語(yǔ)言編寫的Web服務(wù)器。第五十七頁(yè),共九十八頁(yè)。 Page58J2EE標(biāo)準(zhǔn)客戶層客戶機(jī)Web層

J2EE服務(wù)器商務(wù)層EIS層DB服務(wù)器應(yīng)用程序動(dòng)態(tài)HTML網(wǎng)頁(yè)EJBEJBJSP頁(yè)DBDB第五十八頁(yè),共九十八頁(yè)。 Page59(1)JavaBeansJavaBeans描述了基于Java的軟件組件模型,JavaBeans規(guī)范將“組件軟件”的概念引入到Java編程的領(lǐng)域。組件是自含的、可重用的軟件單元;而JavaBeans組件,則可以使用可視的應(yīng)用程序開(kāi)發(fā)工具,可視地將它們編寫到Java程序中。JavaBeans規(guī)范為Java開(kāi)發(fā)人員提供了一種“組件化”其Java類的方法。如果軟件重用是一個(gè)好主意,那么是否應(yīng)該讓每一個(gè)Java類都成為Javabean呢?如果Java類滿足某些準(zhǔn)則,它們就適于充當(dāng)bean的角色:如果軟件模塊要既能夠可視地操作,又能夠定制以達(dá)到某些效果,則這種軟件模塊就可能適于做成一個(gè)JavaBean。是否打算讓它可重用?或者,它會(huì)是可重用的嗎?是否希望將它與其他可重用的Java組件一起使用?是否預(yù)計(jì)會(huì)在IDE工具中使用它?如果上述問(wèn)題的答案都是肯定的,則它應(yīng)該作為JavaBean來(lái)開(kāi)發(fā)。

JavaBean概念是為了在Java編程環(huán)境中支持可重用的組件,它是一種一般性的設(shè)計(jì)方法,適用于客戶機(jī)或服務(wù)器機(jī)器上運(yùn)行的Java程序。由于對(duì)可視的構(gòu)建器工具的強(qiáng)調(diào),也由于許多Javabean都是圖形用戶界面(GUI)組件,所以JavaBean組件可能被視為一種客戶端技術(shù)。但是,并不要求Javabean都是可視的,并且它們也可以用于服務(wù)器環(huán)境中。

第五十九頁(yè),共九十八頁(yè)。 Page60(2)EJB(Enterprisejavabean)是JAVA中的商業(yè)應(yīng)用組件技術(shù),是分布式應(yīng)用系統(tǒng)中的組件。EJB組件模型在邏輯上擴(kuò)展了JavaBeans組件模型,以支持服務(wù)器端組件。服務(wù)器端組件是可重用的,預(yù)先包裝好的,準(zhǔn)備在應(yīng)用服務(wù)器上運(yùn)行的應(yīng)用程序功能片段。它們可以和其他組件組合在一起創(chuàng)建一個(gè)符合要求的應(yīng)用系統(tǒng)。與JavaBeans組件有很多相似的之處,但是JavaBeans組件一般粒度更大而且功能更完全,而且EJB組件不能像JavaBeans組件那樣在Java集成開(kāi)發(fā)環(huán)境中使用。相反,通過(guò)使用由遵循EJB的Java應(yīng)用服務(wù)器提供的工具,它們可以在部署階段被裝配和定制。EJB模型定義了EJB組件與EJB容器之間相互關(guān)系。EJB組件不需要使用任何特定的容器系統(tǒng)。提供商可以將任何應(yīng)用服務(wù)器端調(diào)節(jié)為支持EJB技術(shù),只需加入規(guī)范定義的一些服務(wù)的支持即可。這些服務(wù)定義了EJB組件和容器之間的“契約”,有效地實(shí)現(xiàn)了一個(gè)可移植層。任何EB組件可以在任何支持EJB契約的應(yīng)用服務(wù)器上運(yùn)行。一個(gè)EJB組件可被部署到任何一個(gè)EJB服務(wù)器,即使不同的服務(wù)器通過(guò)不同的方式實(shí)現(xiàn)它們的服務(wù)。EJB模型使用EJB容器與EJB組件之間的一組標(biāo)準(zhǔn)契約確保了EJB組件在不同EJB服務(wù)器上的可移植性。每一個(gè)EJB組件都被要求實(shí)現(xiàn)一組特定接口,允許EJB容器管理和控制該對(duì)象。EJB容器也被要求在特定的執(zhí)行階段調(diào)用此接口。第六十頁(yè),共九十八頁(yè)。 Page61EJB的分布式計(jì)算結(jié)構(gòu)中的六個(gè)角色六個(gè)角色可以由不同的開(kāi)發(fā)商提供,每個(gè)角色所作的工作必須遵循Sun公司提供的EJB規(guī)范,以保證彼此之間的兼容性。EJB組件開(kāi)發(fā)者:應(yīng)用組合者:部署者:EJB服務(wù)器提供者:EJB容器提供者:系統(tǒng)管理員:第六十一頁(yè),共九十八頁(yè)。 Page62(3)JDBCJAVA語(yǔ)言作為一種具有健壯性、易使用、易于理解、能夠自動(dòng)從網(wǎng)絡(luò)下載的語(yǔ)言,具有開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用的極好的語(yǔ)言基礎(chǔ)。但除此以外,Java還需要提供一種能夠與各種數(shù)據(jù)庫(kù)系統(tǒng)交互的能力,JDBC(JavaDataBaseConnectivity)就提供了這樣一種能力。JDBC是一個(gè)能夠執(zhí)行SQL語(yǔ)句的JavaAPI,它包含一組由Java語(yǔ)言編寫的類和接口,使得程序員能夠使用純Java開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用。JDBC標(biāo)準(zhǔn)基于X/OPEN的SQL調(diào)用級(jí)接口,它定義了一個(gè)友好的Java界面來(lái)與X/OPEN的SQL調(diào)用級(jí)接口中定義的基本抽象層和基本概念層來(lái)進(jìn)行連接。第六十二頁(yè),共九十八頁(yè)。 Page63(4)ServletServlet是Java技術(shù)對(duì)CGI編程的回答。Servlet程序在服務(wù)器端運(yùn)行,以接收來(lái)自Web瀏覽器的HTTP請(qǐng)求,動(dòng)態(tài)地生成響應(yīng)(可能需要查詢數(shù)據(jù)庫(kù)來(lái)完成這種請(qǐng)求),然后發(fā)送包含HTML或XML文檔的響應(yīng)到瀏覽器。Servlet是一組運(yùn)行在服務(wù)器端的軟件。Sun公司將其取名為Servlet,可能是與Applet有關(guān)。Applet是運(yùn)行在Web瀏覽器端的JAVA程序,Servlet是運(yùn)行在Web服務(wù)器端的JAVA程序。與傳統(tǒng)的CGI和許多其他類似CGI的技術(shù)相比,JavaServlet具有更高的效率,更容易使用,功能更強(qiáng)大,具有更好的可移植性,更節(jié)省投資(更重要的是,Servlet程序員收入要比Perl程序員高)。第六十三頁(yè),共九十八頁(yè)。 Page64Servlets特點(diǎn)高效。在傳統(tǒng)的CGI中,每個(gè)請(qǐng)求都要啟動(dòng)一個(gè)新的進(jìn)程,如果CGI程序本身的執(zhí)行時(shí)間較短,啟動(dòng)進(jìn)程所需要的開(kāi)銷很可能反而超過(guò)實(shí)際執(zhí)行時(shí)間。而在Servlet中,每個(gè)請(qǐng)求由一個(gè)輕量級(jí)的Java線程處理(而不是重量級(jí)的操作系統(tǒng)進(jìn)程)。在傳統(tǒng)CGI中,如果有N個(gè)并發(fā)的對(duì)同一CGI程序的請(qǐng)求,則該CGI程序的代碼在內(nèi)存中重復(fù)裝載了N次;而對(duì)于Servlet,處理請(qǐng)求的是N個(gè)線程,只需要一份Servlet類代碼。在性能優(yōu)化方面,Servlet也比CGI有著更多的選擇,比如緩沖以前的計(jì)算結(jié)果,保持?jǐn)?shù)據(jù)庫(kù)連接的活動(dòng),等等。方便。Servlet提供了大量的實(shí)用工具例程,例如自動(dòng)地解析和解碼HTML表單數(shù)據(jù)、讀取和設(shè)置HTTP頭、處理Cookie、跟蹤會(huì)話狀態(tài)等。功能強(qiáng)大。在Servlet中,許多使用傳統(tǒng)CGI程序很難完成的任務(wù)都可以輕松地完成。例如,Servlet能夠直接和Web服務(wù)器交互,而普通的CGI程序不能。Servlet還能夠在各個(gè)程序之間共享數(shù)據(jù),使得數(shù)據(jù)庫(kù)連接池之類的功能很容易實(shí)現(xiàn)??梢浦残院谩ervlet用Java編寫,ServletAPI具有完善的標(biāo)準(zhǔn)。因此,為I-PlanetEnterpriseServer寫的Servlet無(wú)需任何實(shí)質(zhì)上的改動(dòng)即可移植到Apache、MicrosoftIIS或者WebStar。幾乎所有的主流服務(wù)器都直接或通過(guò)插件支持Servlet。第六十四頁(yè),共九十八頁(yè)。 Page65(5)JSP成為快速建立跨平臺(tái)的動(dòng)態(tài)網(wǎng)站的首選方案。1.將內(nèi)容的生成和顯示進(jìn)行分離2.可重用組件3.采用標(biāo)識(shí):4.適應(yīng)平臺(tái)5.數(shù)據(jù)庫(kù)連接:6、所有的JSP頁(yè)面都被編譯成為JavaServlets,好處,包括健壯的存儲(chǔ)管理和安全性。作為Java平臺(tái)的一部分,JSP擁有Java編程語(yǔ)言“一次編寫,各處運(yùn)行”的特點(diǎn)。第六十五頁(yè),共九十八頁(yè)。 Page664、兩種體系結(jié)構(gòu)的比較和選擇自從引入JSP技術(shù),使用Java構(gòu)建的Web應(yīng)用服務(wù)器端出現(xiàn)了兩種架構(gòu),第一種是只使用JSP,第二種是同時(shí)使用JSPs和Servlets,以下稱之為模型一和模型二,它們分別有各自的優(yōu)缺點(diǎn)。近來(lái)模型二風(fēng)行,不僅在網(wǎng)絡(luò)中有很高的占有率,而且在商業(yè)雜志中也備受推崇。實(shí)際上,很多開(kāi)發(fā)者錯(cuò)誤的認(rèn)為這種架構(gòu)已經(jīng)取代了模型一并且是使用JSPs的正確方法。正確的使用JSPs的方法取決于你目前項(xiàng)目的實(shí)際需求,而不是追趕潮流。在這篇文章中,我將描述這兩種架構(gòu),權(quán)衡利弊,告訴你一些基本的準(zhǔn)則來(lái)幫助你決定哪一種技術(shù)更適合你。第六十六頁(yè),共九十八頁(yè)。 Page67(1)基于JSP的模型結(jié)構(gòu)瀏覽器jsp文件BeanDB第六十七頁(yè),共九十八頁(yè)。 Page68(2)MVC使用JSPs和ServletsServletJSP文件DBJavaBean第六十八頁(yè),共九十八頁(yè)。 Page69基于MVC模型的應(yīng)用系統(tǒng)開(kāi)發(fā)的組織

視圖 控制器 模型 應(yīng)用內(nèi)容 頁(yè)面內(nèi)容和布局 應(yīng)用流程 商業(yè)邏輯 運(yùn)行環(huán)境角色 頁(yè)面制作者 應(yīng)用組裝者 組件提供者 WEB管理員部件 HTML,JSP, Servlets JavaBeans, 配置數(shù)據(jù) XML,Applets JavaBeans,XML EJB 站點(diǎn)使用分析工具 WebSphere WebSphere Studio,VAJAVA ApplicationServer培訓(xùn) Studio Studio IBMConnectors PerformancePack SiteAnalysisTools第六十九頁(yè),共九十八頁(yè)。 Page70(3)模型的比較對(duì)于Web的開(kāi)發(fā)者和設(shè)計(jì)者來(lái)說(shuō),直接使用JSP是很直觀的,但隨著代碼的增多會(huì)使JSP頁(yè)面負(fù)重不堪,而且調(diào)試?yán)щy。使用Servlet控制器,大多數(shù)的商業(yè)邏輯在從JavaBeans傳給JSP之前就已經(jīng)調(diào)試通過(guò)了。很有用的原則和概念來(lái)幫助選擇:這兩種架構(gòu)的最明顯的區(qū)別就是模型一是以“頁(yè)面為中心"的,而模型二是以"程序?yàn)橹行?的。如果你正在開(kāi)發(fā)一個(gè)典型的Web應(yīng)用,只是頁(yè)面之間的鏈接,那模型一是比較適合的。但如果每個(gè)鏈接或按鈕背后需要大量的處理后才能決定下一步要顯示什么,那Servlet/JSPMVC是比較適合的。另一種方法是看你的應(yīng)用是面向“請(qǐng)求”的還是面向“響應(yīng)”的。Servlets是面向“請(qǐng)求”的,JSPs則更加是面向“響應(yīng)”的,因?yàn)镴SP頁(yè)面將HTML的響應(yīng)發(fā)送給瀏覽器。如果你的HTML代碼要大大多于Java(或者說(shuō)只有非常少的邏輯來(lái)決定要顯示給用戶什么),那么模型一就更加適合。有一個(gè)小技巧就是觀察請(qǐng)求與響應(yīng)之間的映射關(guān)系,如果對(duì)于每一個(gè)的請(qǐng)求,只有一個(gè)響應(yīng),那么使用Servlet就意義不大。Sun的J2EE藍(lán)本中是這樣描述Servlet控制器的:“基于用戶的請(qǐng)求和模型命令的輸出,控制器選擇一個(gè)視圖來(lái)作為響應(yīng)的一部分”。如果請(qǐng)求和響應(yīng)是一對(duì)一的,那么就沒(méi)什么必要使用控制器。另一方面,如果每個(gè)請(qǐng)求會(huì)導(dǎo)致比較復(fù)雜的邏輯運(yùn)算,并且可能返回的視圖也不相同,那么使用Servlet來(lái)做出決定和重定向視圖就比較理想。如果你的應(yīng)用需要支持不同的顯示格式,例如在同一個(gè)通道中使用HTML和XML,那這一點(diǎn)就尤其重要了。Servlet能包含邏輯,來(lái)決定客戶端是什么,基于這一點(diǎn)來(lái)返回不同的文檔格式。在做出決定時(shí),還應(yīng)當(dāng)考慮到開(kāi)發(fā)者的技能水平。舉例來(lái)說(shuō),如果應(yīng)用系統(tǒng)主要是由網(wǎng)最后,記住模型一和模型二是不能并存的。第七十頁(yè),共九十八頁(yè)。 Page713.3.3PHP與Perl第七十一頁(yè),共九十八頁(yè)。 Page721、PHPPHP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)技術(shù)與ASP相似,也是一種嵌入HTML文檔的服務(wù)器端腳本語(yǔ)言。其語(yǔ)法大部分與C、Java、Perl等語(yǔ)言相似,并形成了自己的獨(dú)有風(fēng)格,利用該語(yǔ)言Web程序員可以快速地開(kāi)發(fā)出動(dòng)態(tài)網(wǎng)頁(yè)。PHP是PersonalHomePage的縮寫,于1994年由RasmusLerdorf創(chuàng)造,原本用途只是為知道他自己個(gè)人置于Internet上的履歷表曾被誰(shuí)瀏覽過(guò)。后來(lái)由于其輕巧、免費(fèi)、多平臺(tái)等特性而迅速流行,1997年開(kāi)始開(kāi)發(fā)的第三版被稱之為PHP3。PHP廣泛流行的主要原因在于其多平臺(tái)能力和對(duì)數(shù)據(jù)庫(kù)的廣泛支持,此外也有些其他的獨(dú)到之處。(1)免費(fèi)、輕巧快速、真正跨平臺(tái)。要運(yùn)行PHP,通常使用Linux作為操作系統(tǒng),Apache作為Web服務(wù)器。Linux+Apache+PHP3+MySQL已經(jīng)成為中小型網(wǎng)站最為經(jīng)濟(jì)的選擇,無(wú)論是性能還是安全方面,都要比微軟的ASP好一些。當(dāng)然在其他操作系統(tǒng)上也同樣可以運(yùn)行,這是因?yàn)榈靡嬗谄溟_(kāi)放的源代碼,PHP是一種跨平臺(tái)的軟件。不過(guò),如果不使用Apache服務(wù)器,那么PHP就只能以CGI的方式運(yùn)行,這樣就不能利用將PHP編譯進(jìn)Apache帶來(lái)的性能優(yōu)勢(shì)。第七十二頁(yè),共九十八頁(yè)。 Page73(2)語(yǔ)法與C及Perl相近<?echo(“這是PHP語(yǔ)言的嵌入范例\n”);?><?phpecho(“這是PHP語(yǔ)言的嵌入范例\n”);?><scriptlanguage=“php”>echo(“這是PHP語(yǔ)言的嵌入范例\n”);</script>第七十三頁(yè),共九十八頁(yè)。 Page74(3)廣泛的數(shù)據(jù)庫(kù)支持能力PHP最強(qiáng)大,也最有代表性的特點(diǎn)是它的數(shù)據(jù)層,它可以支援多種數(shù)據(jù)庫(kù),幾乎含蓋了各種常見(jiàn)的數(shù)據(jù)庫(kù),包括常用的Oracle,mSQL,dBase,Sybase,Informix,MySQL等等,并且使編寫基于數(shù)據(jù)庫(kù)的網(wǎng)頁(yè)變得非常簡(jiǎn)單。同數(shù)據(jù)庫(kù)相關(guān)的頁(yè)面,在服務(wù)器端以PHP腳本的方式編寫。實(shí)現(xiàn)過(guò)程如圖5.8所示:從圖可以看出:第1步:客戶向Web服務(wù)器發(fā)出請(qǐng)求。第2步:Apache服務(wù)器分析客戶的請(qǐng)求,若為PHP文件,則將其交給PHP處理程序進(jìn)行處理第3步:.php3是一個(gè)PHP腳本,包含了許多命令,其中包括打開(kāi)并連接數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)中找到所要數(shù)據(jù)的命令。所有同數(shù)據(jù)庫(kù)相關(guān)的操作,都由PHP來(lái)完成。PHP可以很好地完成同數(shù)據(jù)庫(kù)的交互。第4步:PHP從數(shù)據(jù)庫(kù)中取得數(shù)據(jù)后,按照.php3文件的要求,進(jìn)行格式轉(zhuǎn)換,也即將文件內(nèi)容轉(zhuǎn)化為HTML格式。第5步:將HTML格式的文件交給Apache服務(wù)器。第6步:Apache服務(wù)器再將其送給客戶??蛻魹g覽器PHP3服務(wù)Apache服務(wù)器1.客戶請(qǐng)求2.腳本交PHP33.執(zhí)行數(shù)據(jù)查詢6.頁(yè)面返回5.返回HTML4.查詢返回MySQL

圖PHP實(shí)現(xiàn)過(guò)程第七十四頁(yè),共九十八頁(yè)。 Page75示例.....<?Mysql-connect(“l(fā)ocalhost”,”webmaster”,””);$query=“SELECTid,nameFROMcustomer”;$result=mysql-db-query(“test”,$query);if($result){echo“foundtheseentriesinthedatabase:<ul>”;while($r=mysql-fetch-array($result)){$id=$r[“id”];$name=$r[“name”];echo“<li>$id,$name”;}echo“</ul>”;}else{echo“Nodata.”}mysql-free-result($result);?>....第七十五頁(yè),共九十八頁(yè)。 Page762、Perl簡(jiǎn)介第七十六頁(yè),共九十八頁(yè)。 Page773.3.4分析比較傳統(tǒng)的高級(jí)開(kāi)發(fā)語(yǔ)言C/C++等,雖然不是專門為電子商務(wù)系統(tǒng)開(kāi)發(fā)而設(shè)計(jì)的,但是其通用性比較好,基本上所有的應(yīng)用服務(wù)都可以用傳統(tǒng)的語(yǔ)言來(lái)開(kāi)發(fā),目前的商品化軟件包(如數(shù)據(jù)庫(kù)、中間件產(chǎn)品等)一般都提供傳統(tǒng)高級(jí)語(yǔ)言的API接口,特別是在解決電子商務(wù)系統(tǒng)與其他應(yīng)用互操作等問(wèn)題時(shí),傳統(tǒng)語(yǔ)言還是有一定優(yōu)勢(shì)的。需要指出的是,傳統(tǒng)語(yǔ)言與操作系統(tǒng)的關(guān)系比較緊密,跨平臺(tái)能力較弱,因此目前更多的應(yīng)用使用Java等新的開(kāi)發(fā)語(yǔ)言。(1)簡(jiǎn)介第七十七頁(yè),共九十八頁(yè)。 Page78技術(shù)特點(diǎn)ASP:使用VBScript、JScript等簡(jiǎn)單易懂的腳本語(yǔ)言,結(jié)合HTML代碼,即可快速地完成網(wǎng)站的應(yīng)用程序。無(wú)須compile編譯,容易編寫,可在服務(wù)器端直接執(zhí)行。使用普通的文本編輯器,如Windows的記事本,即可進(jìn)行編輯設(shè)計(jì)。與瀏覽器無(wú)關(guān),用戶端只要使用可執(zhí)行HTML碼的瀏覽器,腳本語(yǔ)言(VBScript、Jscript)均在WEB服務(wù)器端執(zhí)行,用戶端的瀏覽器不需要能夠執(zhí)行這些腳本語(yǔ)言。ActiveXServerComponents(ActiveX服務(wù)器元件)具有無(wú)限可擴(kuò)充性。可以使用VisualBasic、Java、VisualC++、COBOL等編程語(yǔ)言來(lái)編寫你所需要的ActiveXServerComponent。PHP:數(shù)據(jù)庫(kù)連接:PHP可以編譯成具有與許多數(shù)據(jù)庫(kù)相連接的函數(shù)。PHP與MySQL是現(xiàn)在絕佳的組合。你還可以自己編寫外圍的函數(shù)去間接存取數(shù)據(jù)庫(kù)。通過(guò)這樣的途徑當(dāng)你更換使用的數(shù)據(jù)庫(kù)時(shí),可以輕松地更改編碼以適應(yīng)這樣的變化。PHPLIB就是最常用的可以提供一般事務(wù)需要的一系列基庫(kù)。但PHP提供的數(shù)據(jù)庫(kù)接口支持彼此不統(tǒng)一,比如對(duì)Oracle,MySQL,Sybase的接口,彼此都不一樣。這也是PHP的一個(gè)弱點(diǎn)。面向?qū)ο缶幊蹋篜HP提供了類和對(duì)象?;趙eb的編程工作非常需要面向?qū)ο缶幊棠芰?。PHP支持構(gòu)造器、提取類等。JSP:將內(nèi)容的生成和顯示進(jìn)行分離強(qiáng)調(diào)可重用的組件采用標(biāo)識(shí)簡(jiǎn)化頁(yè)面開(kāi)發(fā)第七十八頁(yè),共九十八頁(yè)。 Page79(3)應(yīng)用范圍ASP是Microsoft開(kāi)發(fā)的動(dòng)態(tài)網(wǎng)頁(yè)語(yǔ)言,也繼承了微軟產(chǎn)品的一貫傳統(tǒng)——只能運(yùn)行于微軟的服務(wù)器產(chǎn)品,IIS(InternetInformationServer)(windowsNT)和PWS(PersonalWebServer)(windows98)上。Unix下也有ChiliSoft的插件來(lái)支持ASP,但是ASP本身的功能有限,必須通過(guò)ASP+COM的組合來(lái)擴(kuò)充,Unix下的COM實(shí)現(xiàn)起來(lái)非常困難。PHP3可在Windows,Unix,Linux的Web服務(wù)器上正常運(yùn)行,還支持IIS,Apache等通用Web服務(wù)器,用戶更換平臺(tái)時(shí),無(wú)需變換PHP3代碼,可即拿即用。JSP同PHP3類似,幾乎可以運(yùn)行于所有平臺(tái)。如WinNT,Linux,Unix.NT下IIS通過(guò)一個(gè)插件,例如JRUN或者ServletExec,就能支持JSP。著名的Web服務(wù)器Apache已經(jīng)能夠支持JSP。由于Apache廣泛應(yīng)用在NT、Unix和Linux上,因此JSP有更廣泛的運(yùn)行平臺(tái)。雖然現(xiàn)在NT操作系統(tǒng)占了很大的市場(chǎng)份額,但是在服務(wù)器方面Unix的優(yōu)勢(shì)仍然很大,而新崛起的Linux更是來(lái)勢(shì)不小。從一個(gè)平臺(tái)移植到另外一個(gè)平臺(tái),JSP和JavaBean甚至不用重新編譯,因?yàn)镴ava字節(jié)碼都是標(biāo)準(zhǔn)的與平臺(tái)無(wú)關(guān)的。第七十九頁(yè),共九十八頁(yè)。 Page80(4)性能比較有人做過(guò)試驗(yàn),對(duì)這三種語(yǔ)言分別做循環(huán)性能測(cè)試及存取Oracle數(shù)據(jù)庫(kù)測(cè)試。在循環(huán)性能測(cè)試中,JSP只用了令人吃驚的四秒鐘就結(jié)束了20000*20000的循環(huán)。而ASP、PHP測(cè)試的是2000*2000循環(huán)(少一個(gè)數(shù)量級(jí)),卻分別用了63秒和84秒。(參考PHPLIB)。數(shù)據(jù)庫(kù)測(cè)試中,三者分別對(duì)Oracle8進(jìn)行1000次Insert,Update,Select和Delete操作,JSP需要13秒,PHP需要69秒,ASP則需要73秒。第八十頁(yè),共九十八頁(yè)。 Page81

ASP技術(shù)JSP技術(shù)WEB服務(wù)器微軟的IIS或個(gè)人WEB服務(wù)器任何WEB服務(wù)器包括Apache,Netscape,和IIS操作系統(tǒng)平臺(tái)微軟的視窗系統(tǒng)絕大多數(shù)的流行平臺(tái)跨平臺(tái)訪問(wèn)需要第三方ASP的引入產(chǎn)品支持WEB信息機(jī)構(gòu)環(huán)境中不同系列的計(jì)算機(jī)群可重用,跨平臺(tái)組件沒(méi)有JAVABEANS企業(yè)級(jí)JAVABEANS,定制JSP標(biāo)簽安全:防范系統(tǒng)崩潰沒(méi)有有內(nèi)存泄露保護(hù)沒(méi)有有腳本語(yǔ)言VBSCRIPT,JSCRIPTJAVA定制標(biāo)簽沒(méi)有有兼容傳統(tǒng)的數(shù)據(jù)庫(kù)可以(COM)可以(用JDBCAPI)集成數(shù)據(jù)源的能力能工作在任何符合ODBC規(guī)范的數(shù)據(jù)庫(kù)能工作在任何符合ODBC規(guī)范的數(shù)據(jù)庫(kù),而且能訪問(wèn)符合JDBC技術(shù)規(guī)范數(shù)據(jù)庫(kù)組件COM組件JAVABEANS,企業(yè)級(jí)JAVABEANS或擴(kuò)展的JSP標(biāo)簽擴(kuò)展工具支持有有第八十一頁(yè),共九十八頁(yè)。 Page82(5)前景分析目前在國(guó)內(nèi)PHP與ASP應(yīng)用最為廣泛。而JSP由于是一種較新的技術(shù),國(guó)內(nèi)采用的較少。但在國(guó)外,JSP已經(jīng)是比較流行的一種技術(shù),尤其是電子商務(wù)類的網(wǎng)站,多采用JSP。采用PHP的網(wǎng)站如新浪網(wǎng)(sina)、中國(guó)人(Chinaren)等,但由于PHP本身存在的一些缺點(diǎn),使得它不適合應(yīng)用于大型電子商務(wù)站點(diǎn),而更適合一些小型的商業(yè)站點(diǎn)。首先,PHP缺乏規(guī)模支持。其次,缺乏多層結(jié)構(gòu)支持。對(duì)于大負(fù)荷站點(diǎn),解決方法只有一個(gè):分布計(jì)算。數(shù)據(jù)庫(kù)、應(yīng)用邏輯層、表示邏輯層彼此分開(kāi),而且同層也可以根據(jù)流量分開(kāi),組成二維陣列。而PHP則缺乏這種支持。還有上面提到過(guò)的一點(diǎn),PHP提供的數(shù)據(jù)庫(kù)接口支持不統(tǒng)一,這就使得它不適合運(yùn)用在電子商務(wù)中。ASP和JSP則沒(méi)有以上缺陷,ASP可以通過(guò)MicrosoftWindows的COM/DCOM獲得ActiveX規(guī)模支持,通過(guò)DCOM和TranscationServer獲得結(jié)構(gòu)支持;JSP可以通過(guò)SUNJava的JavaClass和EJB獲得規(guī)模支持,通過(guò)EJB/CORBA以及眾多廠商的ApplicationServer獲得結(jié)構(gòu)支持。三者中,JSP應(yīng)該是未來(lái)發(fā)展的趨勢(shì)。世界上一些大的電子商務(wù)解決方案提供商都采用JSP/Servlet??傊珹SP,PHP,JSP三者都有相當(dāng)數(shù)量的支持者,由此也可以看出三者各有所長(zhǎng)。正在學(xué)習(xí)或使用動(dòng)態(tài)頁(yè)面的朋友可根據(jù)三者的特點(diǎn)選擇一種適合自己的語(yǔ)言。第八十二頁(yè),共九十八頁(yè)。 Page83小結(jié)CGI傳統(tǒng)編程方法,生成HTML文件。通過(guò)Request、Response接收和響應(yīng)客戶請(qǐng)求。服務(wù)器端腳本程序與HTML標(biāo)記混編。引擎解釋程序語(yǔ)句,直接插入HTML文本中。通過(guò)一些對(duì)象完成通訊:接收請(qǐng)求,發(fā)送響應(yīng)。第八十三頁(yè),共九十八頁(yè)。 Page843.4商務(wù)支持平臺(tái)及相關(guān)技術(shù)基礎(chǔ)

商務(wù)支持平臺(tái)技術(shù)基礎(chǔ)

溫馨提示

  • 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ù)網(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)論