基于J2EE的掌上商店的設(shè)計(jì)實(shí)現(xiàn)分析_第1頁
基于J2EE的掌上商店的設(shè)計(jì)實(shí)現(xiàn)分析_第2頁
基于J2EE的掌上商店的設(shè)計(jì)實(shí)現(xiàn)分析_第3頁
基于J2EE的掌上商店的設(shè)計(jì)實(shí)現(xiàn)分析_第4頁
基于J2EE的掌上商店的設(shè)計(jì)實(shí)現(xiàn)分析_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

.z---..--總結(jié)資料基于J2EE的掌上商店的設(shè)計(jì)與實(shí)現(xiàn)摘要過去的幾年,電子商務(wù)的迅猛開展為企業(yè)創(chuàng)造了極大的價(jià)值,使傳統(tǒng)的企業(yè)商務(wù)模式發(fā)生了很大的改變。隨著手機(jī)使用的普及和無線技術(shù)的開展,移動(dòng)電子商務(wù)將會作為電子商務(wù)領(lǐng)域中的一種新型的電子商務(wù)模式,其開展前景是十分誘人的。可以預(yù)見的是,移動(dòng)電子商務(wù)將成為21世紀(jì)電子商務(wù)領(lǐng)域的主戰(zhàn)場。J2ME是為嵌入式消費(fèi)電子設(shè)備提供的JAVA語言開發(fā)平臺,是針對資源受限設(shè)備。因此基于J2ME平臺的無線終端的應(yīng)用程序開發(fā)以及與網(wǎng)絡(luò)效勞器端的信息交互開發(fā)就十分重要。利用客戶端+Javaservlet+SQLServer數(shù)據(jù)庫三層模式實(shí)現(xiàn)網(wǎng)上商店系統(tǒng)是通用的方法。所有的業(yè)務(wù)邏輯都封裝在servlet中,數(shù)據(jù)庫的使用提高了數(shù)據(jù)的平安性,而采用可擴(kuò)展標(biāo)識語言*ML的數(shù)據(jù)格式實(shí)現(xiàn)了跨平臺的數(shù)據(jù)交換。詳細(xì)闡述了系統(tǒng)的需求分析、系統(tǒng)總體架構(gòu)及詳細(xì)設(shè)計(jì),系統(tǒng)實(shí)現(xiàn)了以下功能:會員注冊、登錄、瀏覽物品詳細(xì)信息和購置物品。關(guān)鍵詞:J2ME;可擴(kuò)展標(biāo)識語言;SERVLET;網(wǎng)絡(luò)商店-.zThePalmPlatformofe-ShopBasedontheJ2ME-ServerDevelopmentAbstractOvertheyears,thefastfiercedevelopmentofelectronicmercecreatedtremendousvaluefortheenterprise,whichgreatlychangedtraditionalenterprisemercepattern.Withtheprevalenceofmobilephoneanddevelopmentofwireless,Mobilee-mercewillbeanewe-mercemodeintheelectronicmercerealm,anditisverypromising.Itcanbepredictedthatthemobilee-mercewillbeethemajorindustryofe-merceinthe21stcentury.J2MEistheplatformthatprovidestheJAVAlanguagetodeveloptheembeddedelectronicequipmentofe*pense,whichaimsattheequipmentthatresourceislimited.Thereforetheinteractiveinformatione*ploitationdevelopingwithnetworkserverandapplicationsofwirelessterminaldevelopmentbasedonJ2MEplatformisveryimportant.Itisageneralmethodtoimplementthesystemofe-shopusingthreelayersofpattern:clientside+Javaservlet+databaseofSQLServer.Allthebusinesslogicencapsulatedintheservlet,usingofthedatabaseimprovedthesecurity,andusingthe*MLdataformatachievedcross-platformdatae*change.Tothesystemdemandanalysis,thesystemrequirementanalysis,theoverallofsystemconstructionandthedetaileddesignareelaboratedindetailsinthispaper,andthesystemachievesthefollowingfunctions:Memberregistration,login,browsedetailedinformationandpurchasegoods.Keywords:J2ME;*ML;SERVLET;E-SHOP-.z目錄論文總頁數(shù):24頁1引言11.1選題背景11.2選題意義12相關(guān)技術(shù)及開發(fā)平臺簡介22.1J2ME簡介22.2SQLSERVER數(shù)據(jù)庫和JDBC22.3JAVASERVLET技術(shù)介紹22.4*ML和JDOM3*ML簡介3JDOM技術(shù)32.5開發(fā)平臺及系統(tǒng)配置33系統(tǒng)需求分析和設(shè)計(jì)方案43.1需求分析43.2系統(tǒng)總體框架43.3系統(tǒng)設(shè)計(jì)關(guān)鍵技術(shù)5網(wǎng)絡(luò)的連接5數(shù)據(jù)存儲方式和數(shù)據(jù)的交換53.4業(yè)務(wù)數(shù)據(jù)流分析5聯(lián)網(wǎng)的流程5數(shù)據(jù)庫的流程6輸入*ML數(shù)據(jù)解析流程6輸出*ML文檔建立流程63.5和客戶端交互接口的約定7關(guān)于URL7參數(shù)約定規(guī)則7接收和發(fā)送的*ML文檔格式的約定73.6數(shù)據(jù)庫的分析與設(shè)計(jì)8注冊用戶根本信息表user8商品信息表84具體的設(shè)計(jì)流程和實(shí)現(xiàn)系統(tǒng)構(gòu)架94.1系統(tǒng)主要工作流程94.2系統(tǒng)功能模塊設(shè)計(jì)9數(shù)據(jù)庫聯(lián)網(wǎng)模塊的設(shè)計(jì)9注冊模塊的設(shè)計(jì)10登陸模塊的設(shè)計(jì)13查詢模塊的實(shí)現(xiàn)15購置功能模塊的實(shí)現(xiàn)185測試分析與問題處理215.1數(shù)據(jù)庫連接215.2與客戶端的連接21結(jié)論22參考文獻(xiàn)22-.z引言選題背景網(wǎng)上購物正逐步走向平民化,調(diào)查機(jī)構(gòu)AC尼爾森最新研究顯示,63%的中國網(wǎng)民曾在網(wǎng)上購物。有業(yè)內(nèi)人士認(rèn)為,中國的網(wǎng)上購物人數(shù)在快速增長,年輕的中國男性更熱衷于網(wǎng)上購物。民眾對電子商務(wù)的熱情高漲,說明我國民眾電子商務(wù)意識的提高,電子商務(wù)正改變著人們的消費(fèi)方式。而近年來隨著移動(dòng)技術(shù)的開展,手機(jī)在人們中的普及,傳統(tǒng)的電子商務(wù)越來越滿足不來了人們的需求,出現(xiàn)了一種新型的電子商務(wù)模式—移動(dòng)電子商務(wù)。與傳統(tǒng)的Internet上的在線交易相比,移動(dòng)電子商務(wù)具有許多優(yōu)點(diǎn),移動(dòng)交易不受時(shí)間和地點(diǎn)的限制;效率高,大大節(jié)省客戶交易的時(shí)間;移動(dòng)終端的身份固定,能夠向用戶提供個(gè)性化移動(dòng)交易效勞;可以提供與位置相關(guān)的交易效勞。移動(dòng)電子商務(wù)將用戶和商家嚴(yán)密聯(lián)系起來,而且這種聯(lián)系將不受PC或連接線的限制,使電子商務(wù)走向了個(gè)人。傳統(tǒng)的電子商務(wù)形式受到越來越大沖擊,以網(wǎng)絡(luò)化、知識管理、全球化為主要特征的信息化社會已是不可逆轉(zhuǎn)的趨勢,電子商務(wù)化已成為企業(yè)開展的必由之路。而信息化社會的核心是互聯(lián)網(wǎng)、移動(dòng)通信和電子商務(wù),而三者的有機(jī)結(jié)合更是未來社會的大勢所趨。移動(dòng)電子商務(wù)的快速開展。移動(dòng)電子商務(wù)的根底是互聯(lián)網(wǎng),移動(dòng)電子商務(wù)的主要特點(diǎn)是靈活、簡單、方便。它能完全根據(jù)消費(fèi)者的個(gè)性化需求和喜好定制,設(shè)備的選擇以及提供效勞與信息的方式完全由用戶自己選擇控制。移動(dòng)電子商務(wù)時(shí)代正向我們走來。選題意義目前,人們逐漸意識到融合移動(dòng)通信技術(shù)的電子商務(wù)將具有更大的潛力,移動(dòng)電子商務(wù)的市場前景普遍被業(yè)內(nèi)人士看好。參與電子商務(wù)的主要角色是企業(yè)〔Business〕和消費(fèi)者〔Customer〕,因此在企業(yè)之間、企業(yè)與消費(fèi)者之間,網(wǎng)上交易構(gòu)成了BtoB〔B2B即BusinesstoBusiness企業(yè)到企業(yè)〕、BtoC〔即BusinesstoCustomer企業(yè)到用戶〕兩種最典型的商務(wù)模式。據(jù)預(yù)測,到2003年,超過10%的電子商務(wù)交易將通過移動(dòng)通信設(shè)備來完成;預(yù)計(jì)到2008年,全球?qū)⒊霈F(xiàn)10億移動(dòng)用戶、10億因特網(wǎng)用戶,其中5億為移動(dòng)因特網(wǎng)用戶;到2005年截止,將有25%的數(shù)據(jù)業(yè)務(wù)通過移動(dòng)通信設(shè)備來傳輸。這些移動(dòng)終端構(gòu)成了移動(dòng)電子商務(wù)巨大的潛在市場。移動(dòng)電子商務(wù)的特征移動(dòng)電子商務(wù)和傳統(tǒng)的電子商務(wù)存在很大的區(qū)別,主要有下述兩點(diǎn):不受時(shí)間和地點(diǎn)的限制。J2ME的優(yōu)點(diǎn)同傳統(tǒng)的WAP相比,J2ME有很多的優(yōu)點(diǎn)。這些優(yōu)點(diǎn)主要表現(xiàn)在:網(wǎng)絡(luò)編程靈活,能突破B/S構(gòu)造的一些限制,使得上層程序更加自由。正是J2ME的優(yōu)點(diǎn),而基于J2ME平臺的移動(dòng)電子商務(wù)將具有更大的潛力和優(yōu)點(diǎn)。本文將研究如何利用JAVASERVLET和*ML技術(shù)構(gòu)建一個(gè)基于J2ME平臺的掌上網(wǎng)絡(luò)商店-效勞器端的開發(fā)。相關(guān)技術(shù)及開發(fā)平臺簡介J2ME簡介J2ME(Java2PlatformMicroEdition)是為機(jī)頂盒、移動(dòng)和PDA之類嵌入式消費(fèi)電子設(shè)備提供的Java語言平臺,包括虛擬機(jī)和一系列標(biāo)準(zhǔn)化的JavaAPI。它和J2SE,J2EE一起構(gòu)成Java技術(shù)的三大版本,并且同樣是通過JCP〔JavamunityProcess〕制訂的。目前階段,J2ME最流行的應(yīng)用是游戲軟件。因?yàn)榕c需要昂貴的專用設(shè)備和開發(fā)工具的競爭對手〔如索尼和任天堂〕相比,J2ME程序可以在PC機(jī)上開發(fā)和仿真運(yùn)行,然后很容易地部署到目標(biāo)機(jī)上,從而使其開發(fā)、測試和發(fā)布的變得容易和廉價(jià)。實(shí)際上J2ME的用途和前景要廣泛得多。SQLSERVER數(shù)據(jù)庫和JDBCSQLServer是一個(gè)關(guān)系數(shù)據(jù)庫管理系統(tǒng)。它最初是由MicrosoftSybase和Ashton-Tat三家公司共同開發(fā)的,于1988年推出了第一個(gè)OS/2版本。在WindowsNT推出后,Microsoft與Sybase在SQLServer的開發(fā)上就分道揚(yáng)鑣了。Microsoft將SQLServer移植WindowsNT系統(tǒng)上,專注于開發(fā)推廣SQLServer的WindowsNT版本。Sybase則較專注于SQLServer在UNI*操作系統(tǒng)上的應(yīng)用。在本書中介紹的是MicrosoftSQLServer,以后簡稱為SQLServe或MSSQLServer。SQLServer2000是Microsoft公司推出的SQLServer數(shù)據(jù)庫管理系統(tǒng)的最新版本。該版本繼承了SQLServer7.0版本的優(yōu)點(diǎn)同時(shí)又比它增加了許多更先進(jìn)的功能,具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn)。可跨越從運(yùn)行MicrosoftWindows98的膝上型電腦到運(yùn)行MicrosoftWindows2000的大型多處理器的效勞器等多種平臺使用。JDBC的全稱是JavaDatabaseConnectivity〔嚴(yán)格地講,JDBC是SunMicrosystems的商標(biāo)而非縮寫〕。它是Java編程語言中用來規(guī)*客戶端程序如何來數(shù)據(jù)庫的API,提供了諸如查詢和更新數(shù)據(jù)庫中數(shù)據(jù)的方法。JDBC是面向關(guān)系型數(shù)據(jù)庫的。JDBC驅(qū)動(dòng)程序共分四種類型:類型1:JDBC-ODBC橋類型2:本地API驅(qū)動(dòng)類型3:網(wǎng)絡(luò)協(xié)議驅(qū)動(dòng)本地協(xié)議驅(qū)動(dòng)。JAVASERVLET技術(shù)介紹Servlet是使用JavaServlet應(yīng)用程序設(shè)計(jì)接口〔API〕及相關(guān)類和方法的Java程序。除了JavaServletAPI,Servlet還可以使用用以擴(kuò)展和添加到API的Java類軟件包。Servlet在啟用Java的Web效勞器上或應(yīng)用效勞器上運(yùn)行并擴(kuò)展了該效勞器的能力。Javaservlet對于Web效勞器就好似Javaapplet對于Web瀏覽器。Servlet裝入Web效勞器并在Web效勞器內(nèi)執(zhí)行,而applet裝入Web瀏覽器并在Web瀏覽器內(nèi)執(zhí)行。JavaServletAPI定義了一個(gè)servlet和Java使能的效勞器之間的一個(gè)標(biāo)準(zhǔn)接口,這使得Servlets具有跨效勞器平臺的特性。Servlet通過創(chuàng)立一個(gè)框架來擴(kuò)展效勞器的能力,以提供在Web上進(jìn)展請求和響應(yīng)效勞。當(dāng)客戶機(jī)發(fā)送請求至效勞器時(shí),效勞器可以將請求信息發(fā)送給Servlet,并讓Servlet建立起效勞器返回給客戶機(jī)的響應(yīng)。當(dāng)啟動(dòng)Web效勞器或客戶機(jī)第一次請求效勞時(shí),可以自動(dòng)裝入Servlet。裝入后,Servlet繼續(xù)運(yùn)行直到其它客戶機(jī)發(fā)出請求。Servlet的功能涉及*圍很廣。*ML和JDOM*ML簡介*ML是可擴(kuò)展標(biāo)志語言(e*tensibleMarkupLanguage)的簡稱。標(biāo)記是指計(jì)算機(jī)所能理解的信息符號,通過此種標(biāo)記,計(jì)算機(jī)之間可以處理包含各種信息的文章。如何定義這些標(biāo)記,既可以選擇國際通用的標(biāo)記語言,比方HTML,也可以使用象*ML這樣由相關(guān)人士自由決定的標(biāo)記語言,這就是語言的可擴(kuò)展性。*ML是從SGML中簡化修改出來的。它主要用到的有*ML、*SL和*Path等。象HTML一樣,*ML是從所有標(biāo)志語言的元語言—標(biāo)準(zhǔn)通用標(biāo)志語言SGML(StandardGeneralizedMarkupLanguage)那里派生出來的。SGML是一種元語言,也可以稱為一個(gè)定義諸如HTML等標(biāo)志語言的系統(tǒng)。*ML也是一種元語言,一個(gè)定義Web應(yīng)用的SGML的子集。和SGML一樣,你也可以用*ML來定義種種不同的標(biāo)志語言滿足不同的需要,特別在數(shù)據(jù)表現(xiàn)方面。JDOM技術(shù)JDOM是一種面向Java的讀、寫和操作*ML文檔的API。JDOM與現(xiàn)行的SA*和DOM標(biāo)準(zhǔn)兼容,為Java程序員提供了一個(gè)簡單、輕量的*ML文檔操作方法。由于JDOM是專門為Java程序員開發(fā)的,所以采用許多Java語言的優(yōu)秀特性,比方方法重載、集合(Collections)和類映射(Reflection)。開發(fā)平臺及系統(tǒng)配置當(dāng)前流行的JAVA開發(fā)平臺主要有BORLAND的UILD,SUN的NETBEANS和開源的ECLIPSE。但是UILD相比擬而言簡單易用,學(xué)習(xí)曲線比擬平緩。所以開發(fā)本系統(tǒng)選用UILD。下面是開發(fā)平臺及系統(tǒng)配置:操作系統(tǒng):WINDOWS2003。數(shù)據(jù)庫:SQLSERVER2000。開發(fā)工具:UILD9。附帶的JDOM包為:jdom-1.0。需要的JDBC驅(qū)動(dòng)程序?yàn)椋篗icrosoftSQLServer2000DriverforJDBC。在UILD9所建立工程屬性里面要引入jdom-1.0和MicrosoftSQLServer2000DriverforJDBC。系統(tǒng)需求分析和設(shè)計(jì)方案需求分析在移動(dòng)電子商務(wù)中,出于平安的考慮用戶要有自己的賬號,只有注冊成功獲得賬號才能登陸進(jìn)展必要的操作。所以效勞端設(shè)計(jì)中要有注冊登陸的功能。當(dāng)客戶第一次使用系統(tǒng)的時(shí)候要先進(jìn)展注冊。在效勞端的要的注冊模塊要完成的工作便是:承受客戶的注冊資料,然后與自己的數(shù)據(jù)庫的已有客戶資料進(jìn)展比對,檢查賬號是否重復(fù)。如果重復(fù)在要返回提示信息:戶賬號已經(jīng)存在。如果沒有,把用戶注冊的資料插入的用戶信息表中,而后返回注冊成功信息:用戶注冊的名字和密碼。在用戶登陸的時(shí)候,效勞端核對賬號密碼。如果一致,用戶可以進(jìn)展后續(xù)的操作,如果不成功,則返回登陸錯(cuò)誤信息。用戶登陸成功后的可能要查詢*件的詳細(xì)資料,查詢的時(shí)候輸入查詢物品的名稱,如果有,效勞端返回查詢的詳細(xì)信息,其**息的格式可以是*ML的形式。也可以選擇以字符串的形式發(fā)送。用戶瀏覽到物品信息時(shí)想購置的話。則只要輸入購置物品的ID和購置的數(shù)量。這些購置物品數(shù)據(jù)從客戶端以*ML數(shù)據(jù)格式發(fā)送給效勞端。效勞端首先要解析傳送過來的*ML文檔提取的數(shù)據(jù)信息。如果信息合法且購置成功就返成功信息和購置物品信息。否則返回購置失敗的信息。系統(tǒng)總體框架利用J2ME和JAVASERVLET建立企業(yè)級移動(dòng)電子商務(wù)應(yīng)用是非常適宜的,可以通過J2ME技術(shù)建立客戶終端程序,通過JAVASERVLET建立我的效勞端程序。系統(tǒng)的總體框架如圖1。圖SEQ圖表\*ARABIC1總體框架圖在支持J2ME技術(shù)的PDA,手機(jī)等移動(dòng)設(shè)備終端,可以利用它們支持的各種簡檔設(shè)計(jì)客戶端程序,實(shí)現(xiàn)與用戶的交互,同時(shí),通過、S或*ML等標(biāo)準(zhǔn)的網(wǎng)絡(luò)協(xié)議與J2EE應(yīng)用效勞器實(shí)現(xiàn)數(shù)據(jù)傳遞。Web層和企業(yè)信息系統(tǒng)層用于構(gòu)建我的效勞器端應(yīng)用,其中Web層用于實(shí)現(xiàn)與客戶層的接口和交互,它使用Servlet程序處理客戶端發(fā)出的連接和請求,并通過JDBC連接到企業(yè)信息系統(tǒng)層的數(shù)據(jù)庫系統(tǒng)上。數(shù)據(jù)庫系統(tǒng)處理SQL語句,會將處理結(jié)果以一個(gè)結(jié)果集的形式發(fā)送到業(yè)務(wù)邏輯層,業(yè)務(wù)邏輯層將接收到的信息提交給Web層的Servlet程序,Servlet程序再通過、S或*ML將響應(yīng)信息返回到客戶端。系統(tǒng)設(shè)計(jì)關(guān)鍵技術(shù)網(wǎng)絡(luò)的連接由于無線設(shè)備所能支持的網(wǎng)絡(luò)協(xié)議非常有限,僅限于,Socket,UDP等幾種協(xié)議,不同的廠家可能還支持其他網(wǎng)絡(luò)協(xié)議,但是,MIDP1.0規(guī)*規(guī)定,是必須實(shí)現(xiàn)的協(xié)議,而其他協(xié)議的實(shí)現(xiàn)都是可選的。因此,為了能在不同類型的手機(jī)上移植,我們采用作為網(wǎng)絡(luò)連接的首選協(xié)議,這樣還能重用效勞器端的代碼。但是,由于是一個(gè)基于文本的效率較低的協(xié)議,因此,必須仔細(xì)考慮手機(jī)和效勞器端的通信內(nèi)容,盡可能地提高效率。在登陸和注冊的時(shí)候傳輸?shù)臄?shù)據(jù)量較少,選用GET方法在基于效率上考慮比擬適宜的。在效勞端對應(yīng)的采用DOGET方法。而對于在瀏覽和購置的時(shí)候傳輸?shù)臄?shù)據(jù)量大一些,POST方法是不得不選用的,雖然其效率上比擬低,但是它可以傳輸比擬大的數(shù)據(jù)量,GET方法傳輸給效勞端的數(shù)據(jù)量是有限制的。對應(yīng)的效勞端為DOPOST方法。數(shù)據(jù)存儲方式和數(shù)據(jù)的交換由于有大量的數(shù)據(jù),采用簡單的文件系統(tǒng)顯然不適宜,采用數(shù)據(jù)庫管理系統(tǒng)對于設(shè)計(jì)來說是比擬簡單的,在系統(tǒng)設(shè)計(jì)中要存儲用戶的根本信息和商品的根本信息,這就需要用兩*表來存儲其中的數(shù)據(jù)。設(shè)計(jì)表的時(shí)候要設(shè)置主鍵以加強(qiáng)數(shù)據(jù)的完整性。而對于數(shù)據(jù)的交換格式,本系統(tǒng)則采用*ML數(shù)據(jù)格式,在定義*ML數(shù)據(jù)格式,只要是well-formed,而不需要定義其DTD,以及顯示樣式表。無論建立還是解析*ML,對于JAVA語言來說JDOM是必需的。JDOM是在Apache許可證下發(fā)布的開放源碼,是JAVA語言中*ML和DOM交互的API。在設(shè)計(jì)實(shí)現(xiàn)中將用JDOM建立一個(gè)標(biāo)準(zhǔn)的well-formed的*ML文檔,也將用JDOM解析一個(gè)*ML文檔。業(yè)務(wù)數(shù)據(jù)流分析聯(lián)網(wǎng)的流程聯(lián)網(wǎng)的時(shí)候按照如下的流程:1、建立連接。2、設(shè)置輸出的文檔MIME類型,設(shè)置為te*t/plain。設(shè)置數(shù)據(jù)編碼方式,翻開輸出流。3、從URL字符串獲取參數(shù),判斷參數(shù)是否合法,如果OK則開場承受數(shù)據(jù)并進(jìn)展相應(yīng)的處理。4、經(jīng)過處理的結(jié)果傳輸數(shù)據(jù)給客戶端。5、關(guān)閉連接和流。數(shù)據(jù)庫的流程1、裝入JDBC程序。要使用JDBC數(shù)據(jù)庫,首先必須加載JDBC驅(qū)動(dòng)程序,只需一句代碼Class.forName(".microsoft.jdbc.sqlserver.SQLServerDriver")。2、建立連接。建立連接的標(biāo)準(zhǔn)方法是DriverManager.getConnection(Stringurl,Stringuser,Stringpassword)。3、執(zhí)行SQL語句。4、檢索結(jié)果。5、關(guān)閉連接。在對象使用完畢后,應(yīng)當(dāng)關(guān)閉連接。輸入*ML數(shù)據(jù)解析流程由客戶端發(fā)送過來的數(shù)據(jù)是*ML的格式,首先效勞端要解析這些*ML格式的數(shù)據(jù)得到所需要的信息。而解析*ML需要用的JDOM。JDOM自身不包含解析器。它通常使用SA*2解析器來解析和驗(yàn)證輸入*ML文檔。它包含一些轉(zhuǎn)換器以將JDOM表示輸出成SA*2事件流、DOM模型或*ML文本文檔。解析的流程如下:1、使用JDOM首先要指定使用什么解析器。2、得到Document。3、得到根元素。4、得到元素〔節(jié)點(diǎn)〕的集合。5、輪循List集合。6、取得元素的子元素〔為最低層元素〕的值。7、DOM結(jié)果處理(輸出/保存)。輸出*ML文檔建立流程向客戶端發(fā)送*ML格式數(shù)據(jù),首先要建立*ML格式的文檔數(shù)據(jù)。這也將用到JDOM。在JDOM中,*ML元素就是Element的實(shí)例,*ML屬性就是Attribute的實(shí)例,*ML文檔本身就是Document的實(shí)例。因?yàn)镴DOM對象就是像Document、Element和Attribute這些類的直接實(shí)例,因此創(chuàng)立一個(gè)新JDOM對象就如在Java語言中使用new操作符一樣容易。JDOM的使用是直截了當(dāng)?shù)摹=?ML文檔的流程如下:1、首先建立根元素。2、然后用root創(chuàng)立*ML文檔對象。3、創(chuàng)立元素,設(shè)置內(nèi)容,屬性。4、結(jié)果處理(輸出/保存)。和客戶端交互接口的約定關(guān)于URL效勞端和數(shù)據(jù)端的網(wǎng)絡(luò)通訊采用協(xié)議。購置模塊的URL地址為:localhost:8080/servlet/PurchaseServlet。登陸模塊的URL地址為:localhost:8080/loginservlet1。注冊模塊的URL地址為:localhost:8080/registerservlet。瀏覽物品模塊的URL地址為:localhost:8080/userdataservlet。URL參數(shù)約定規(guī)則在注冊模塊和登陸模塊中用戶的**約定為id;用戶的密碼約定為pw。在查詢的模塊中首先以書名為查詢參數(shù),參數(shù)約定為name;在登陸中如果登陸成功則返回給客戶端yes返回失敗返回no。接收和發(fā)送的*ML文檔格式的約定在查詢的模塊中往客戶端發(fā)送的*ML格式的約定為<name>元素的文本內(nèi)容物品的名字,<id>元素文本內(nèi)容為物品的ID,<press>元素內(nèi)容為產(chǎn)地,<price>元素內(nèi)容為價(jià)格,<description1>元素內(nèi)容為物品描述信息,<quantity>元素內(nèi)容為數(shù)量。如果根節(jié)點(diǎn)不為<wrong>則表示查詢失敗<errorinfofmation>返回的是失敗信息。查詢成功*ML式樣如下:<?*mlversion='1.0'encoding='UTF-8'?><courses><name>name</name><id>id</id><press>author</press><price>price</price><description1>description</description><quantity>quantity</quantity></courses>查詢失敗*ML式樣如下:<?*mlversion='1.0'encoding='UTF-8'?><wrong><errorinformation>thereissomethingwronghere</errorinformation></wrong>在購置模塊中要購置物品的需要物品的ID。ID約定為元素<id>的內(nèi)容,購置數(shù)量約定為<quantity>元素的內(nèi)容。接收的*ML文檔為:<?*mlversion='1.0'encoding='UTF-8'?><courses><id>id</id><quantity>quantity</quantity></courses>數(shù)據(jù)庫的分析與設(shè)計(jì)注冊用戶根本信息表user表user包含4個(gè)字段,分別是account,password,username,tele,其中account設(shè)置為主鍵,如表1。表1用戶根本信息表列名數(shù)據(jù)屬性長度是否為NUL是否主鍵accountchar8否是passwordchar8否否usernamechar8是否telechar8是否商品信息表商品信息表是物品根本信息的簡單介紹,它其中包括7個(gè)字段,分別是name,id,press,descrption1,price,author,quantity其中設(shè)置id為主鍵,如表2。表2商品信息表列名數(shù)據(jù)屬性長度是否能為NULL是否主鍵namechar8能否idchar8否是pressvarchar1024能否authorvarchar1024能否decrpiton1te*t8000能否pricemoney4能否quantityint2能否具體的設(shè)計(jì)流程和實(shí)現(xiàn)系統(tǒng)構(gòu)架系統(tǒng)主要工作流程在客戶端進(jìn)入啟動(dòng)畫面的時(shí)候,對于有賬號用戶來說可以首先選擇是否登陸。如果不想登陸也可以退出系統(tǒng)。假設(shè)用戶沒賬號首先要申請**,如果不想申請**則也直接退出系統(tǒng)。假設(shè)用戶申請成功,則進(jìn)入登陸流程,如果登陸成功。用戶就可以瀏覽物品,如果不想購置物品,也可以直接推出系統(tǒng)。如果購置物品,假設(shè)成功可以選擇退出,或則繼續(xù)瀏覽物品。流程圖如圖2。圖SEQ圖表\*ARABIC2系統(tǒng)流程圖系統(tǒng)功能模塊設(shè)計(jì)注冊模塊的設(shè)計(jì)客戶第一次使用系統(tǒng)的時(shí)候必須先進(jìn)展注冊。在效勞端的要的注冊模塊要完成的工作便是承受客戶的注冊資料然后與自己的數(shù)據(jù)庫的已有客戶資料進(jìn)展比對,看看有沒有賬號和用戶所的賬號是否重復(fù),如果重復(fù)在要返回提示信息就用戶賬號已經(jīng)存在。如果沒有在把要把用戶注冊的資料插入的用戶信息表,而后返回注冊成功信息以及用戶注冊的名字和密碼。圖3和圖4顯示了失敗和成功的信息。下面是程序要引用的包:importjava.util.*;importjava*.servlet.*;importjava*.servlet..*;importjava.io.*;importjava.sql.*;importjava*.sql.*;importmy.*;importorg.jdom.Element;importorg.jdom.Document;importorg.jdom.output.*MLOutputter;importjava.sql.SQLE*ception;使用doGet()方法來對應(yīng)客戶端的請求。然后設(shè)置發(fā)送的文本樣式response.setContentType("te*t/plain;charset=UTF-8");用request.getParameter()提取客戶段發(fā)送的參數(shù)。查詢數(shù)據(jù)庫的設(shè)計(jì)如下:/**在數(shù)據(jù)庫進(jìn)展查詢看看是否用戶名已經(jīng)存在,存在返回true,否則返回false。**/privatebooleanDBConnection(Stringaccount){Connectionconn=null;ResultSetrs=null;Statementstmt=null;booleanft=false;try{JDBCDemoda=newJDBCDemo();conn=da.getConnection();stmt=conn.createStatement();Stringmand="selectaccountfromshenfeng128whereaccount="+"'"+account+"'";rs=stmt.e*ecuteQuery(mand);if(rs.ne*t()){ft=true;}rs.close();stmt.close();conn.close();System.out.println("databaseconnectsuccess");}catch(E*ceptione){e.printStackTrace();System.out.print("thereisomethingwronghere");}returnft;}然后是查詢成功發(fā)送的實(shí)現(xiàn)如何/**更新數(shù)據(jù)庫,如果更新成功返回更新所影響的行數(shù),否則返回0**/privateintDBConnectionUpdate(Stringaccount,Stringpassword){Connectionconn=null;ResultSetrs=null;intcount=0;Statementstmt=null;try{JDBCDemoda=newJDBCDemo();conn=da.getConnection();stmt=conn.createStatement();Stringmand="insertintoshenfeng128values("+"'"+account+"',"+"'"+password+"')";count=stmt.e*ecuteUpdate(mand);if(rs!=null)rs.close();if(stmt!=null)stmt.close();if(conn!=null)conn.close();System.out.println("databaseupdatesuccess");}catch(E*ceptione){e.printStackTrace();System.out.print("theresomethingwronghere");}finally{}returncount;}圖SEQ圖表\*ARABIC3注冊失敗截圖圖SEQ圖表\*ARABIC4注冊失敗截圖登陸模塊的設(shè)計(jì)查詢模塊的實(shí)現(xiàn)當(dāng)用戶登陸成功后的操作可能是查詢圖書的資料,查詢的操作是輸入查詢事物的名字,如果有此事物,在效勞端向客戶端返回查詢的詳細(xì)信息,其**息的格式可以是*ML的形式。也可以選擇以字符串的形式發(fā)送。查詢成功發(fā)送給客戶端的數(shù)據(jù)截圖如圖6。查詢數(shù)據(jù)庫的模塊如下:/**Getconnecttodatabasetthenqueringandreturntheresultset**/privateStringDBConnection(Stringname,Stringtable){if(name==null||table==null)returnnull;Stringstr=null;Connectionconn=null;ResultSetrs=null;Statementstmt=null;try{JDBCDemoda=newJDBCDemo();conn=da.getConnection();stmt=conn.createStatement();Stringmand="select*from"+table+"wherename="+"'"+name+"'";rs=stmt.e*ecuteQuery(mand);str=toSstring(rs);rs.close();stmt.close();conn.close();System.out.println("databaseconnectsuccess");}catch(E*ceptione){System.out.print("thereissomethingwronghere");}returnstr;}查詢數(shù)據(jù)庫的結(jié)果集可以轉(zhuǎn)換成字符串的形式,也可以轉(zhuǎn)換成*ML的格式。轉(zhuǎn)換字符串的實(shí)現(xiàn)如下:/**BuildresultsettoString**/privateStringtoSstring(ResultSetrs){StringBuffers1=newStringBuffer(");StringBuffers2=newStringBuffer(");StringBuffers3=newStringBuffer(");StringBuffers=newStringBuffer("");try{while(rs.ne*t()){s.append("\n");s.append("Id="+rs.getString("id")+"\n");s.append("Name="+rs.getString("name")+"\n");System.out.println(rs.getString("name"));s.append("Price="+rs.getString("price")+"\n");s.append("Press="+rs.getString("press"));s.append("quantity="+rs.getString("quantity"));s.append("");}}catch(SQLE*ceptione*){e*.printStackTrace();}returns.toString();}JDOM建立*ML文檔實(shí)現(xiàn)如下:privateDocumentto*ml(ResultSetrs){ElementBookInfo=newElement("BookInfo");DocumentmyDocument=newDocument(BookInfo);Elementbookname=null;try{while(rs.ne*t()){bookname=newElement("bookname");Elementprice=newElement("price");Elementdescription=newElement("description1");Elementpress=newElement("press");bookname.setTe*t(rs.getString("name"));price.setTe*t(rs.getString("price"));description.setTe*t(rs.getString("descrption1"));press.setTe*t(rs.getString("press"));BookInfo.addContent(bookname);BookInfo.addContent(price);BookInfo.addContent(description);BookInfo.addContent(press);}}catch(E*ceptione){e.printStackTrace();System.out.println("build*mlerror");}System.out.println("build*mlsuccess");returnmyDocument;}圖SEQ圖表\*ARABIC6瀏覽的信息截圖購置功能模塊的實(shí)現(xiàn)當(dāng)用戶成功登陸后,查詢有關(guān)的物品,然后得到有用的信息。如果用戶想購置商品則只要輸入購置物品的ID和購置的數(shù)量就行啦,這些數(shù)據(jù)從客戶端以*ML數(shù)據(jù)格式發(fā)送給效勞端。在效勞端首先要解析傳送過來的*ML文檔提取有用的數(shù)據(jù)信息。購置成功效勞端向客戶端發(fā)送的數(shù)據(jù)截圖如圖7。用JDOM解析*ML的詳細(xì)實(shí)現(xiàn)如下:/**parse*ml**/privatevoidparse*ml(Stringte*t*ml){SA*Builderbuilder=newSA*Builder();Documentdoc=null;Readerin=newStringReader(te*t*ml);try{doc=builder.build(in);Elementroot=doc.getRootElement();Listls=root.getChildren();for(Iteratoriter=ls.iterator();iter.hasNe*t();){Elementel=(Element)iter.ne*t();if(el.getName().equals("id")){id=el.getTe*t();}if(el.getName().equals("bookname")){bookname=el.getTe*t();}if(el.getName().equals("price")){price=el.getTe*t();}if(el.getName().equals("description1")){description1=el.getTe*t();}if(el.getName().equals("press")){press=el.getTe*t();}}}catch(JDOME*ceptione*){e*.printStackTrace();System.out.println("jDOMerror");}System.out.println("thisisatest");}解析后然后查詢自己的物品數(shù)據(jù)庫,看看購置的物品是不是在自己的數(shù)據(jù)庫中,以及是否購置的數(shù)量是否超過自己的庫存。如果都不超過在返回購置成功信息。否則返回失敗信息。購置成功后,要對數(shù)據(jù)庫進(jìn)展更新操作。/**Getconnecttodatabasetthenupdatathedatabase**/privateintDBConnectionUpdata(intcount,Stringid){intupdate_count=0;Connectionconn=null;ResultSetrs=null;Statementstmt=null;try{JDBCDemoda=new

溫馨提示

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

評論

0/150

提交評論