徐炳文
(廣東嶺南職業(yè)技術(shù)學(xué)院 電子信息工程學(xué)院,廣州 510663)
基于四層架構(gòu)J2ME移動課表查詢系統(tǒng)的開發(fā)設(shè)計(jì)
徐炳文
(廣東嶺南職業(yè)技術(shù)學(xué)院 電子信息工程學(xué)院,廣州 510663)
隨著手機(jī)的智能化程度越來越高,為方便教師與學(xué)生利用手機(jī)隨時隨地對教務(wù)課表信息進(jìn)行查詢,提出一種基于四層架構(gòu)的J2ME移動課表查詢系統(tǒng).系統(tǒng)劃分為客戶層、Web服務(wù)層、數(shù)據(jù)業(yè)務(wù)層和數(shù)據(jù)存儲層進(jìn)行開發(fā)與設(shè)計(jì).對系統(tǒng)的實(shí)現(xiàn)過程提出了一些改進(jìn)方法,豐富了軟件系統(tǒng)開發(fā)的構(gòu)架周期理論,有效解決了原有教務(wù)課表系統(tǒng)只能利用校園網(wǎng)在計(jì)算機(jī)上進(jìn)行存儲與查詢的缺點(diǎn).
四層架構(gòu);J2ME;課表;查詢
隨著GPRS技術(shù)的成熟與3G時代的到來,手機(jī)的智能化程度和擴(kuò)展性隨之提高,手機(jī)的應(yīng)用也越來越廣泛,這就需要開發(fā)越來越多的手機(jī)應(yīng)用軟件系統(tǒng)來滿足用戶的需求.近幾年來,高校教務(wù)部門的信息化建設(shè)取得了長足的發(fā)展,幾乎所有高校都使用計(jì)算機(jī)信息系統(tǒng)來管理課表[1].但軟件系統(tǒng)在使用中仍存在一些不足,如教務(wù)排課系統(tǒng)形成的課表只能利用校園網(wǎng)在計(jì)算機(jī)上進(jìn)行存儲與查詢,且不能滿足師生進(jìn)行移動實(shí)時無線查詢課表信息的需要.本研究提出一種基于四層架構(gòu)的J2ME移動課表查詢系統(tǒng).J2ME是JAVA 2的一個組成部分,專為機(jī)頂盒和移動電話等嵌入式消費(fèi)電子設(shè)備提供JAVA語言平臺,包括虛擬機(jī)和一系列標(biāo)準(zhǔn)化的JAVA AP[2].J2ME程序可以在PC機(jī)上開發(fā)和仿真運(yùn)行,然后很容易地部署到目標(biāo)機(jī)上,從而降低其開發(fā)、測試和發(fā)布的操作難度和成本.
開發(fā)一個能夠通過移動手機(jī)對教務(wù)課表信息隨時隨地按需要進(jìn)行查詢的信息系統(tǒng)需要設(shè)計(jì)出移動手機(jī)終端查詢教務(wù)系統(tǒng)課表信息的方式.移動手機(jī)的數(shù)據(jù)傳輸與有線網(wǎng)絡(luò)的數(shù)據(jù)傳輸方式不同,既需要軟件支持也需要硬件設(shè)備支持.在開發(fā)時客戶端的手機(jī)數(shù)據(jù)傳輸方式采用GPRS方式,服務(wù)器端通過增加一個無線接口硬件設(shè)備來接收移動手機(jī)發(fā)來的查詢請求,然后通過有線網(wǎng)絡(luò)連接服務(wù)器.軟件的設(shè)計(jì)與實(shí)現(xiàn)主要分4大模塊:客戶層的移動終端、Web服務(wù)層的教務(wù)課表服務(wù)器端、數(shù)據(jù)業(yè)務(wù)層的教務(wù)課表服務(wù)器端和數(shù)據(jù)存儲層的課表信息數(shù)據(jù)庫系統(tǒng).客戶層的移動終端用于接收用戶的查詢輸入和顯示查詢結(jié)果.Web服務(wù)層與數(shù)據(jù)業(yè)務(wù)層的教務(wù)課表服務(wù)器端主要負(fù)責(zé)接收來自移動手機(jī)終端的查詢請求,通過JDBC連接數(shù)據(jù)存儲層的后臺課表數(shù)據(jù)庫,并把查詢結(jié)果傳回客戶端的手機(jī).數(shù)據(jù)存儲層的課表信息數(shù)據(jù)庫部分用于保存課表信息.根據(jù)系統(tǒng)需求分析,設(shè)計(jì)出四層架構(gòu)J2ME課表查詢系統(tǒng)的整體層次架構(gòu)如圖1所示.
圖1 J2ME課表查詢系統(tǒng)層次架構(gòu)Figure 1 Architecture of J2ME school timetable query system
本系統(tǒng)對應(yīng)分成4部分進(jìn)行開發(fā)設(shè)計(jì):客戶層的J2ME客戶端、Web服務(wù)層的J2EE課表服務(wù)器端、數(shù)據(jù)業(yè)務(wù)層的J2EE課表服務(wù)器端和數(shù)據(jù)存儲層的后臺課表信息數(shù)據(jù)庫.具體J2ME-J2EE課表查詢系統(tǒng)算法流程如圖2所示.
圖2 J2ME課表查詢系統(tǒng)算法流程圖Figure 2 Algorithm of J2ME school timetable query system
移動客戶端屬于客戶層,采用J2ME去開發(fā)設(shè)計(jì),是系統(tǒng)用戶輸入查詢信息和顯示查詢結(jié)果的用戶界面.J2ME移動客戶端程序發(fā)出課表信息查詢請求并連接到J2EE服務(wù)器端程序,J2EE服務(wù)器經(jīng)過一系列的處理后把查詢結(jié)果數(shù)據(jù)集傳回給移動客戶端.在設(shè)計(jì)實(shí)現(xiàn)時,客戶層的移動終端使用HttpConnection打開與Web層服務(wù)器的網(wǎng)絡(luò)連接,然后使用setRequestMethod(HttpConnection.POST)方法向服務(wù)器傳遞教師工號或?qū)W生班別號和第幾學(xué)期等信息.網(wǎng)絡(luò)連接成功后,使用open-DataOutputStream()方法和write.UTF()方法發(fā)送查詢請求內(nèi)容給J2EE課表服務(wù)器,最后使用DataInputStream()方法和read.UTF()方法接收J(rèn)2EE課表服務(wù)器傳回的課表查詢信息數(shù)據(jù)集.
客戶層移動終端的實(shí)現(xiàn)主要是開發(fā)MIDlet,使同樣的服務(wù)能夠被很好地移植到不同的移動客戶端[3].由于系統(tǒng)為J2ME-J2EE開發(fā)的C/S工作模式,客戶層的移動客戶端程序在運(yùn)行時由于同樣需要執(zhí)行網(wǎng)絡(luò)連接,如HTTP連接、UI調(diào)度等操作,可能會出現(xiàn)因競爭臨界資源而導(dǎo)致的死鎖現(xiàn)象.為了防止多個移動客戶端訪問網(wǎng)絡(luò)時的并發(fā)多線程出現(xiàn)死鎖,需要把其中一個線程設(shè)計(jì)為獨(dú)立線程[4].當(dāng)移動客戶端程序想訪問網(wǎng)絡(luò)時,可通過調(diào)用notify()方法來喚醒訪問網(wǎng)絡(luò)的線程,當(dāng)訪問完成退出網(wǎng)絡(luò)后,可通過調(diào)用wait()方法釋放“鎖旗標(biāo)”使該線程進(jìn)入等待狀態(tài),則另外的線程能夠調(diào)用notify()方法進(jìn)入網(wǎng)絡(luò).客戶層的并發(fā)多線程訪問網(wǎng)絡(luò)控制的設(shè)計(jì)如圖3所示.
圖3 客戶層多線程訪問網(wǎng)絡(luò)控制Figure 3 Client layer multi-threaded access to the network control
在客戶層并發(fā)多線程訪問網(wǎng)絡(luò)控制中的P(S)與V(S)是2條原語操作,其中S為信號量,P(S)操作表示是否允許該線程訪問網(wǎng)絡(luò),V(S)操作表示訪問完成后退出網(wǎng)絡(luò),在具體編程語言中可以轉(zhuǎn)換為if()或while()語句實(shí)現(xiàn).為了方便客戶層多線程訪問控制,把客戶層移動終端訪問網(wǎng)絡(luò)時的線程技術(shù)設(shè)計(jì)成一個獨(dú)立的CommandThread類,主要部分實(shí)現(xiàn)如下:
J2EE服務(wù)器由Web服務(wù)層和數(shù)據(jù)業(yè)務(wù)層構(gòu)成.Web服務(wù)層使用Servlet容器處理來自移動客戶端的請求,然后再將這些請求發(fā)往數(shù)據(jù)業(yè)務(wù)層的企業(yè)級服務(wù)器,使用EJBs進(jìn)行會話處理請求,并通過JDBC連接到數(shù)據(jù)存儲層的后臺課表數(shù)據(jù)庫.課表數(shù)據(jù)庫處理完SQL查詢后形成的查詢結(jié)果數(shù)據(jù)集被發(fā)往數(shù)據(jù)業(yè)務(wù)層的企業(yè)級服務(wù)器并提交給Web服務(wù)器,由Web服務(wù)器再傳回給客戶層的移動終端上顯示.J2EE課表服務(wù)器實(shí)現(xiàn)時使用的是Servlet,因此需要設(shè)計(jì)一個ServletAPP類.在ServletAPP類中使用doGet()和doPost()方法與J2EE課表服務(wù)器網(wǎng)頁交互信息,使用destroy()方法清除資源,對于移動終端程序的查詢請求則使用Request.getInputStream()方法接收,另外使用readUTF()方法從輸入流中讀取“教師工號或?qū)W生班別號”和“學(xué)期信息”等信息.Web服務(wù)器端的輸出流向移動終端傳回查詢處理結(jié)果信息,使用response.getOutputStream()方法處理響應(yīng),然后使用writeUTF()函數(shù)輸出返回字符串的數(shù)據(jù)流,通過無線網(wǎng)絡(luò)發(fā)送給移動終端接收.Web服務(wù)層與數(shù)據(jù)業(yè)務(wù)層主要部分實(shí)現(xiàn)如下:
(1)服務(wù)器端使用doGet(),doPost()和destroy()方法來實(shí)現(xiàn)接收移動終端的網(wǎng)絡(luò)連接請求.主要部分實(shí)現(xiàn)如下:
(2)服務(wù)器接收來自客戶端的請求,對服務(wù)器來說是輸入流.服務(wù)器端接收的移動終端查詢請求信息主要是教師工號ID或者學(xué)生班別號ID以及學(xué)期信息等.這些信息對于服務(wù)器來說是輸入流,服務(wù)器端接收查詢課表信息請求處理的主要部分實(shí)現(xiàn)如下:
(3)服務(wù)器處理移動終端發(fā)來的查詢請求后形成查詢結(jié)果數(shù)據(jù)集輸出流傳送給客戶端.主要部分實(shí)現(xiàn)如下:
教務(wù)課表信息存儲在數(shù)據(jù)存儲層的后臺課表數(shù)據(jù)庫,服務(wù)器接收到客戶端的查詢請求后通過JDBC連接后臺課表數(shù)據(jù)庫.JDBC連接數(shù)據(jù)庫主要分為3步工作:與數(shù)據(jù)庫建立起連接、向數(shù)據(jù)庫發(fā)出查詢請求和把處理結(jié)果從數(shù)據(jù)庫中取出來.為了實(shí)現(xiàn)這些工作,本系統(tǒng)設(shè)計(jì)一個訪問存儲課表信息的后臺Access數(shù)據(jù)庫公共類TimetableQuery和4個表:CourseTB表、StudentTB表、TeacherTB表和ClassroomTB表.其中,CourseTB表存儲與課程有關(guān)的信息,包括課程ID(主鍵)、課程N(yùn)ame、上課班別、講授教師、上課時間和上課課室等.StudentTB表存儲有關(guān)班別的課表信息,包括班別ID(主鍵)、上課課室、上課時間、上課課程和講授教師等.TeacherTB表存儲有關(guān)教師的課表信息,包括教師ID(主鍵)、上課課室、上課時間、上課課程和上課班別等.ClassroomTB表存儲有關(guān)課室的課表信息,包括課室ID(主鍵)、上課課程、上課時間、講授教師和上課班別等.CourseTB表、StudentTB表、TeacherTB表和ClassroomTB表在開發(fā)設(shè)計(jì)上基本相似,下面只給出CourseTB表的設(shè)計(jì),如表1所示.
表1 CourseTB表Table 1 CourseTB table
課表信息存儲在排課系統(tǒng)形成的課表數(shù)據(jù)庫中,因此需要設(shè)計(jì)程序訪問后臺的數(shù)據(jù)庫.JDBC是JAVA數(shù)據(jù)庫連接技術(shù)的API的簡寫,它允許用戶從JAVA應(yīng)用程序中訪問任何表格化的數(shù)據(jù)源.JDBC除提供更寬范圍的SQL數(shù)據(jù)庫的連接外,還允許用戶訪問其他數(shù)據(jù)庫(如Access)和電子表格的數(shù)據(jù)源等.本系統(tǒng)采用Access數(shù)據(jù)庫,連接數(shù)據(jù)庫的工作是通過JDBC的API來實(shí)現(xiàn)的.主要部分實(shí)現(xiàn)如下:
(1)注冊數(shù)據(jù)庫JDBC驅(qū)動:
(2)建立與數(shù)據(jù)存儲層Timetable Query數(shù)據(jù)庫的連接:(3)對課表進(jìn)行查詢可以按教師工號、學(xué)生班別號、課程號、教室號或?qū)W期等信息進(jìn)行,以下僅以教師工號進(jìn)行課表查詢?yōu)槔?/p>
(4)把查詢的課表信息結(jié)果取出來:
//定義一個空的字符串變量,把查詢結(jié)果取出來
由于移動手機(jī)受到存儲容量非常小、屏幕小和按鍵簡單等資源條件的限制,要開發(fā)能夠處理大量信息的、交互式的軟件,將使移動手機(jī)產(chǎn)生頻繁屏幕轉(zhuǎn)換,運(yùn)行軟件力不從心.結(jié)合J2ME-J2EE的特點(diǎn),系統(tǒng)分別使用Alert類、Form類、TextField類、List類、Ticker類和Command類等.其中使用Alert類在軟件啟動時顯示軟件版權(quán),用戶通過在Form對象中放置的TextField對象輸入查詢請求的教師工號ID或?qū)W生班別號ID等信息,再通過List對象選擇查詢請求的學(xué)期信息,這些信息均作為客戶層移動終端查詢請求的內(nèi)容輸入,處理結(jié)果形成的數(shù)據(jù)集在另外一個Form對象中.使用Ticker類顯示軟件幫助信息,使用Command對象類添加按鈕.
下載移動客戶端程序到手機(jī)上并裝載啟動后,在請按提示輸入查詢信息欄中輸入教師工號、學(xué)生班別號、課程號或課室號,然后選擇第幾學(xué)期的查詢請求內(nèi)容,按“發(fā)送”按鈕把查詢請求信息傳遞到J2EE課表服務(wù)器端,經(jīng)過一系列處理后傳回查詢結(jié)果數(shù)據(jù)集.使用教師工號查詢課表信息的主要操作界面如圖4所示.
圖4 J2ME課表查詢系統(tǒng)主要界面Figure 4 Main interfaces of J2ME schedule query system
測試與試用表明系統(tǒng)具有運(yùn)行穩(wěn)定、易于擴(kuò)展和安裝簡便等良好性能.四層架構(gòu)J2ME移動課表查詢系統(tǒng)的實(shí)現(xiàn)豐富了軟件系統(tǒng)開發(fā)的構(gòu)架周期理論,設(shè)計(jì)過程中提出了一些改進(jìn)方法,極大地方便了學(xué)生和老師對課表信息的查詢.J2ME憑借其開放的特性占據(jù)了絕對的移動軟件開發(fā)市場,商業(yè)市場中其他類似的應(yīng)用十分廣泛,非常值得改造推廣.此外,移動軟件開發(fā)的難點(diǎn)之一就是要開發(fā)能夠處理大量交互信息、具有頻繁屏幕變換且不需要占用很大存儲空間的系統(tǒng),但目前移動手機(jī)的存儲容量有限,屏幕小,要實(shí)現(xiàn)這些技術(shù)還需要進(jìn)一步探索.
[1] 楊淑瑩,張樺.“數(shù)字圖像處理”教學(xué)軟件的開發(fā)設(shè)計(jì)[J].天津師范大學(xué)學(xué)報(bào):自然科學(xué)版,2009,29(4):76-80.
[2] 許立春,陳勇,李傳之.基于J2ME-GPRS學(xué)生信息管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(23):5415-5418.
[3] 金英,李澤鵬,張晶.多線程Java程序安全行為模型的靜態(tài)檢查方法[J].計(jì)算機(jī)學(xué)報(bào),2009,32(9):1856-1868.
[4] 池瑞楠.基于J2ME和J2EE的移動電子商務(wù)系統(tǒng)研究[J].微計(jì)算機(jī)信息,2007,23(12):60-62,79.
Design and implementation of a four-layer J2ME-based mobile phone on school timetable query system
XUBingwen
(College of Electronic and Information Engineering,Guangdong Lingnan Institute of Technology,Guangzhou 510663,China)
A four-layer J2ME-based mobile phone on school timetable query system is presented for the convenience of teachers and students to query schedule at all times and places with the increasing intelligence and scalability of mobile phone.The four-layer J2ME-based mobile phone on school timetable query system is designed and implemented in accordance with four layers:client layer,Web service layer,data services layer and data storage layer.By using some improved method the architecture of software system development cycle theory is enriched in the implementation process of system.The system effectively overcomes the shortcomings of the original system that can only use the campus network to storage and query.
four-layer;J2ME;school timetable;query
TP311.5
A
1671-1114(2011)02-0059-05
2011-01-28
徐炳文(1977—),男,高級工程師,講師,主要從事計(jì)算機(jī)管理軟件開發(fā)方面的研究.
(責(zé)任編校 紀(jì)翠榮)
天津師范大學(xué)學(xué)報(bào)(自然科學(xué)版)2011年2期