蘇長(zhǎng)明
(成都大學(xué)信息科學(xué)與技術(shù)學(xué)院,四川成都 610106)
目前,J2ME(Java Micro Edition)平臺(tái)為嵌入式消費(fèi)類電子產(chǎn)品,如移動(dòng)電話、PDA、電視機(jī)頂盒等提供了一個(gè)通用的開發(fā)平臺(tái),其具有移植性好、部署靈活、安全性高等優(yōu)點(diǎn).J2EE(Java Enterprise Edition)是一種使用在服務(wù)器端,并利用Java 2平臺(tái)來(lái)簡(jiǎn)化企業(yè)解決方案的開發(fā)、部署和管理相關(guān)的復(fù)雜問(wèn)題的體系結(jié)構(gòu),J2EE以先進(jìn)的架構(gòu)成為企業(yè)級(jí)應(yīng)用的首選.本研究基于J2ME與J2EE技術(shù)設(shè)計(jì)開發(fā)了一種校園移動(dòng)信息查詢系統(tǒng).
客戶端采用J2ME技術(shù)來(lái)實(shí)現(xiàn),J2ME平臺(tái)由多種配置(Configuration)、簡(jiǎn)表(Profile)和可選包(Optional Package)[1]組成,其體系結(jié)構(gòu)如圖1所示.
圖1 J2ME平臺(tái)的體系結(jié)構(gòu)
J2ME平臺(tái)包含:連接設(shè)備配置(Connected Device Configuration,CDC)和連接受限設(shè)備(Connected Limited Device Configuration,CLDC).CLDC是兩個(gè)配置中較小的一個(gè),主要為具有間斷性聯(lián)網(wǎng)能力、較慢的處理器和有限內(nèi)存的設(shè)備設(shè)計(jì)的,例如移動(dòng)電話、雙向呼叫和入門級(jí)的PDA等.CDC是為了處理能力強(qiáng)、內(nèi)存空間更大、聯(lián)網(wǎng)能力更出色的設(shè)備設(shè)計(jì)的,例如電視機(jī)頂盒、車載娛樂(lè)系統(tǒng)、高端PDA等.為了給目標(biāo)設(shè)備提供完整的運(yùn)行環(huán)境,配置必須和簡(jiǎn)表組合.
通常,簡(jiǎn)表位于配置之上,其主要是為目標(biāo)設(shè)備提供完備的應(yīng)用程序運(yùn)行環(huán)境而設(shè)計(jì)的.基于CLDC和CDC的幾個(gè)重要簡(jiǎn)表包括:移動(dòng)信息設(shè)備簡(jiǎn)表(Mobile Information Device Profile,MIDP),基礎(chǔ)簡(jiǎn)表(Foundation Profile,FP)、個(gè)人配置簡(jiǎn)表(Personal Profile,PP)、個(gè)人基礎(chǔ)簡(jiǎn)表(Personal Basic Profile,PBP).其中,MIDP主要針對(duì)移動(dòng)電話等低端PDA,FP是CDC中Profile的基礎(chǔ),PP主要針對(duì)需要用戶界面的設(shè)備,PBP為網(wǎng)絡(luò)連接的設(shè)備提供了應(yīng)用程序環(huán)境,例如機(jī)頂盒等.
可見,J2ME的跨平臺(tái)技術(shù)可以使客戶端程序很容易部署到各種移動(dòng)設(shè)備上.
本研究設(shè)計(jì)的校園移動(dòng)信息查詢系統(tǒng)是一個(gè)典型的移動(dòng)電子商務(wù)系統(tǒng),它基于J2ME與J2EE技術(shù)實(shí)現(xiàn)移動(dòng)客戶端訪問(wèn)服務(wù)器端,即使移動(dòng)設(shè)備功能受限,但客戶端通過(guò)無(wú)線網(wǎng)絡(luò)仍然可以實(shí)現(xiàn)各種復(fù)雜的應(yīng)用.
J2EE技術(shù)用于服務(wù)器端,其典型的架構(gòu)分為3層:表示層(Presentation)、業(yè)務(wù)邏輯層(Business logic)及持久化層(Infrastructure)[2],其框架如圖2所示.
圖2 服務(wù)器端框架圖
J2ME客戶端的訪問(wèn)通過(guò)無(wú)線和有線網(wǎng)絡(luò)轉(zhuǎn)發(fā)到J2EE端,借助于J2EE端的服務(wù)器來(lái)處理用戶的請(qǐng)求,并把處理結(jié)果返回到J2ME端.
J2ME技術(shù)提供了豐富的聯(lián)網(wǎng)功能,支持包括TCP協(xié)議、UDP協(xié)議以及HTTP協(xié)議等主要網(wǎng)絡(luò)協(xié)議[3-4].在MIDP中處理移動(dòng)設(shè)備網(wǎng)絡(luò)連接功能的最主要技術(shù)是,javax.microedition.io中各個(gè)類和接口,以及java.io包中的各種I/O接口為數(shù)據(jù)流提供了系統(tǒng)輸入和輸出功能.Web Services通過(guò)標(biāo)準(zhǔn)的HTTP協(xié)議來(lái)傳輸數(shù)據(jù),可以很方便地跨越 Intranet或者Intranet網(wǎng)段,通過(guò)適當(dāng)?shù)呐渲?對(duì)Web Services的訪問(wèn)可以很輕易地穿透防火墻.由于 Socket只有MIDP2.0的手機(jī)才支持,綜合考慮通用性與安全性,本系統(tǒng)摒棄了Socket連接的方式,而采用更加通用的HTTP連接方式.
本研究設(shè)計(jì)的校園移動(dòng)信息查詢系統(tǒng)的主要功能如圖3所示.
在校園移動(dòng)信息查詢系統(tǒng)中,數(shù)據(jù)的傳輸通過(guò)移動(dòng)設(shè)備發(fā)送數(shù)據(jù)到無(wú)線基站,無(wú)線基站將數(shù)據(jù)再傳送到GPRS/3G/4G網(wǎng)絡(luò)中,從而很方便地接入到Internet中,最終到達(dá)校園服務(wù)器進(jìn)行會(huì)話.
由于本系統(tǒng)采用HTTP協(xié)議進(jìn)行網(wǎng)絡(luò)連接,并使用DataInputStream/DataOutPutStream進(jìn)行數(shù)據(jù)傳輸.考慮到部分地方需要向服務(wù)器端傳輸大量信息,所以在傳輸方法上,系統(tǒng)采用了POST方法,而實(shí)際操作中,考慮到通過(guò)URL進(jìn)行傳值的方便性,在絕大多數(shù)情況下,優(yōu)先使用URL進(jìn)行傳值.對(duì)于部分涉及到中文通過(guò)URL傳輸造成亂碼的情況,系統(tǒng)采用字符編碼轉(zhuǎn)換方法進(jìn)行處理,系統(tǒng)架構(gòu)如圖4所示.
圖3 校園移動(dòng)信息查詢系統(tǒng)User Case圖
圖4 系統(tǒng)架構(gòu)示意圖
2.3.1 客戶端的實(shí)現(xiàn).
用戶登錄時(shí),需要傳入登錄URL、用戶名、密碼,然后通過(guò)HttpConnection進(jìn)行網(wǎng)絡(luò)連接,通過(guò)DataInputStream和DataOutputStream進(jìn)行數(shù)據(jù)通信.在服務(wù)器端通過(guò)Spring控制轉(zhuǎn)到相對(duì)應(yīng)的Action調(diào)用Service的接口方法進(jìn)行數(shù)據(jù)庫(kù)的查詢,最終返回查詢結(jié)果.移動(dòng)設(shè)備端程序主界面設(shè)計(jì)并處理與服務(wù)器的連接,其核心代碼如下:
2.3.2 服務(wù)器端的實(shí)現(xiàn).
本系統(tǒng)服務(wù)器端采用 Struts1.3、Hibernate3.2、Spring2.5.6技術(shù)組合設(shè)計(jì).
(1)Struts的實(shí)現(xiàn).
Struts負(fù)責(zé)表示層.ActionFormBean接收表單提交的數(shù)據(jù),然后通過(guò)Action進(jìn)行處理,再Forward到對(duì)應(yīng)的網(wǎng)頁(yè),這個(gè)方法在struts-config.xml中定義, ActionServlet會(huì)加載.
具體過(guò)程為:表單→提交給ActionServlet→調(diào)用ActionForm存儲(chǔ)表單信息(struts-config.xml文件中定義)→根據(jù)
Struts配置核心代碼如下:
(2)Spring的實(shí)現(xiàn).
Spring負(fù)責(zé)業(yè)務(wù)層,即Service(或Manager).Service為Action提供統(tǒng)一的調(diào)用接口、封裝持久層的DAO.Spring對(duì)接口方法進(jìn)行管理的核心代碼如下:
Spring對(duì)Hibernate進(jìn)行管理的核心代碼如下:
(3)Hibernate的實(shí)現(xiàn).
Hibernate負(fù)責(zé)持久化層,完成數(shù)據(jù)庫(kù)的增刪查改操作,提供OR/Mapping.對(duì)象的調(diào)用流程是:客戶端→Action→Service→DAO→Hibernate.數(shù)據(jù)的流向是通過(guò)DataInputStream或Requset接受用戶的數(shù)據(jù),在Action中將數(shù)據(jù)取出,封裝成VO或PO,再調(diào)用業(yè)務(wù)層的 Bean類,完成各種業(yè)務(wù)處理后再通過(guò)DataOutputStream輸出結(jié)果.而業(yè)務(wù)層Bean收到這個(gè)PO對(duì)象之后,會(huì)調(diào)用DAO接口方法,進(jìn)行持久化操作.
2.3.3 系統(tǒng)的實(shí)現(xiàn).
通過(guò)以上步驟的設(shè)計(jì),具體實(shí)現(xiàn)了校園移動(dòng)信息查詢系統(tǒng),系統(tǒng)程序的運(yùn)行結(jié)果如圖5所示.
圖5 校園移動(dòng)信息查詢系統(tǒng)運(yùn)行結(jié)果圖
移動(dòng)通訊設(shè)備的普及使移動(dòng)信息系統(tǒng)得到廣泛應(yīng)用,這類系統(tǒng)為經(jīng)常外出的客戶進(jìn)行信息查詢提供了極大方便.有理由相信,隨著移動(dòng)信息技術(shù)的迅猛發(fā)展,利用移動(dòng)通訊設(shè)備開展的各類電子商務(wù)將主導(dǎo)著電子商務(wù)的發(fā)展方向.
[1]彭政.基于J2ME和J2EE的移動(dòng)學(xué)習(xí)平臺(tái)研究與設(shè)計(jì)[J].科技廣場(chǎng),2010,23(6):28-30.
[2]張軍.基于J2EE技術(shù)實(shí)現(xiàn)J2ME嵌入式系統(tǒng)訪問(wèn)的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)[J].考試周刊,2010,4(30):153-154.
[3]楊麗萍,王薇.基于手機(jī)平臺(tái)的教學(xué)信息系統(tǒng)的研發(fā)[J].長(zhǎng)春大學(xué)學(xué)報(bào),2009,19(8):15-17.
[4]吳江壽,劉世洪,蘇曉路.基于JavaME與WAP的移動(dòng)信息系統(tǒng)實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2009,25(12):127-128, 136.