基于J2EE手機短信平臺設計和實現(xiàn)_第1頁
基于J2EE手機短信平臺設計和實現(xiàn)_第2頁
基于J2EE手機短信平臺設計和實現(xiàn)_第3頁
基于J2EE手機短信平臺設計和實現(xiàn)_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、基于J2EE手機短信平臺設計和實現(xiàn)摘 要 本文使用Java串口通信技術和JSP技術,對已有的短信系統(tǒng)進行研究,分析系統(tǒng)存在的問題,改善系統(tǒng)提取短信方法、提高系統(tǒng)性能、實現(xiàn)定時發(fā)送短信功能,并應用于Windows平臺下的Web系統(tǒng)中。 關鍵詞 串口通信;手機短信;管理信息系統(tǒng);JSP 1引言 隨著移動通訊的發(fā)展,移動辦公提供隨時隨地服務正成為當今信息技術發(fā)展的重要方向。以短信為基本服務平臺的服務渠道正被越來越多商家所采用。手機短信的行業(yè)應用越來越廣泛,它具有快捷、經(jīng)濟、針對性強、可移動等優(yōu)點。很多行業(yè)的企業(yè)用戶都希望能夠利用Web系統(tǒng)提供的手機短信服務功能來發(fā)布企業(yè)信息。如:客戶聯(lián)絡、新產(chǎn)品通知

2、、會議通知、緊急通知、催費通知、發(fā)貨通知、訂單查詢、節(jié)日問候等,從而達到提高辦公效率、降低辦公成本的目的。 2問題分析 目前在PC上實現(xiàn)手機短信收發(fā)技術主要有三種: (1)直接接入運營商短信網(wǎng)關,這種方法的實現(xiàn)不需要附加新的硬件,但是需要到運營商申請網(wǎng)關,適合于大型通信開發(fā),如向移動、電信等公司申請,使用起來比較方便,但費用較高。 (2)通過一些網(wǎng)站上提供的短信發(fā)送功能來實現(xiàn),如騰迅、網(wǎng)易等都提供這方面的服務,這種方法實現(xiàn)起來比較簡單,所需資源較少,但缺點是對網(wǎng)絡的依賴性太強,不利于集成到企業(yè)的MIS系統(tǒng)中。 (3)用GSM MODEM技術實現(xiàn)PC對手機收發(fā)信息,這是目前比較適合于小項目開發(fā)的

3、一種方法,只需要對AT指令和串口編程的知識運用熟練就可以實現(xiàn),但需要硬件GSM MODEM的支持。 當前,一些公司提供了短信開發(fā)的設備和配套的短信群發(fā)軟件,用它可以在軟件中集成相應的群發(fā)功能,雖然實現(xiàn)了發(fā)送短信的功能,但由于是單機版的,不利于遠程操作和多用戶的同時使用;也有一些基于Web的短信系統(tǒng)開發(fā)出來了,實現(xiàn)了手機短信的發(fā)送,但在手機短信的接收方面仍存在不足:如很多系統(tǒng)都是通過不斷刷新頁面來判斷是否收到有新的信息,這種方式使得系統(tǒng)效率下降,需要改進。另外,在目前已開發(fā)出的短信系統(tǒng)中尚缺乏定時發(fā)送短信功能,此功能的實現(xiàn),可以為用戶的日程安排提供短信提醒服務。 基于以上因素,可以設計并實現(xiàn)一種

4、B/S模式的短信系統(tǒng),此系統(tǒng)在一種能通過輸入設備與服務器直接通信的MVC體系結構下構架,使用GSM MODEM以串口監(jiān)聽方式觸發(fā)事件的方式接收短信以提高系統(tǒng)的性能,實現(xiàn)定時發(fā)送短信功能以滿足更多用戶的需求。 3系統(tǒng)體系結構 基于J2EE的Web式信息管理系統(tǒng)技術現(xiàn)已比較成熟,如Struts框架、Model I體系結構、Model II體系結構都可實現(xiàn)。本文體系結構是基于J2EE的MVC結構,實現(xiàn)一種能通過串口設備實現(xiàn)向系統(tǒng)進行輸入輸出的系統(tǒng)結構,如圖1所示。圖1 系統(tǒng)體系結構 在傳統(tǒng)的Web系統(tǒng)中,服務器的響應都是由客戶端經(jīng)HTTP協(xié)議傳輸?shù)臄?shù)據(jù)服務請求,實現(xiàn)對Web資源的使用。本文的系統(tǒng)體系

5、結構構架Web系統(tǒng),除了能響應基于HTTP的數(shù)據(jù)請求外,還可通過與該服務器連接的GSM MODEM實現(xiàn)服務的請求,使得系統(tǒng)的信息傳遞更快捷,實現(xiàn)可移動性特點。 采用該體系結構構架Web系統(tǒng),用戶可以通過HTTP協(xié)議向應用服務器請求數(shù)據(jù)處理,當服務器得到客戶端的請求數(shù)據(jù)后,控制器(Servlet)進行事務處理,模型(JavaBen)執(zhí)行操作,如信息的查詢和保存等操作,最后通過視圖頁面?zhèn)骰亟o用戶。 同時,用戶也可以通過手機發(fā)送數(shù)據(jù)給服務器,實現(xiàn)數(shù)據(jù)的處理。用戶發(fā)送信息向服務器請求服務,首先將信息給GSM MODEM,然后服務器通過與該設備連接的串口獲取數(shù)據(jù),實現(xiàn)事件的響應。實質(zhì)上,GSM MODE

6、M就是服務器的一個輸入設備,相當于鍵盤,起數(shù)據(jù)輸入的作用。信息的接收,就是設計程序讓服務器自動檢測這個輸入設備是否“輸入”了數(shù)據(jù)。 同理,對該體系結構應用的推廣,所有輸入設備與服務器作為一體構架網(wǎng)絡服務器,實現(xiàn)Web服務,如應用于基于Web的工業(yè)控制系統(tǒng)、電壓測試系統(tǒng)等。 4系統(tǒng)功能 短信系統(tǒng)的主要功能有寫短信、發(fā)件箱、收件箱、電話簿、統(tǒng)計查詢和常用語的插入等,其功能模塊如圖2所示。圖2 系統(tǒng)功能模塊 寫短信可以實現(xiàn)短信的單發(fā)和群發(fā)功能,無論是單發(fā)還是群發(fā),發(fā)送對象都可以自由選擇,當發(fā)送對象選定后,系統(tǒng)查找數(shù)據(jù)庫中該號碼多對應的記錄信息自動生成稱呼,然后將其要發(fā)送的內(nèi)容一起發(fā)送給所選對象。 發(fā)

7、件箱用來存儲用戶所發(fā)的所有短信信息,以便用戶以后查看自己發(fā)送的短信,可實現(xiàn)對短信的管理,如轉發(fā)、刪除等。 收件箱用來存儲用戶所接收到的短信,該模塊除了實現(xiàn)短信的管理,如對短信的刪除、查詢等功能外,還提供短信回復功能,實現(xiàn)系統(tǒng)自動回復,在服務器收到用戶短信后對數(shù)據(jù)進行處理,然后自動回復給用戶;另外是用戶回復,通過系統(tǒng)身份驗證后,用戶可對收到的短信進行回復。 電話簿實現(xiàn)用戶對聯(lián)系人的管理,如新增聯(lián)系人、實現(xiàn)聯(lián)系人的分組等操作。 定時發(fā)送短信功能,可為用戶的日程安排提供幫助,如通過短信提醒參加會議、為朋友發(fā)送生日祝福短信等。用戶設定短信發(fā)送的具體時間,輸入將發(fā)送的信息并保存,在到達這個時間時,服務器

8、自動將信息發(fā)送出去。 查詢統(tǒng)計是管理員實現(xiàn)查看指定用戶發(fā)送信息的數(shù)量等操作。 常用語管理實現(xiàn)快捷的輸入,用戶可編輯常用的短信內(nèi)容并保存,在發(fā)送時可直接調(diào)出。 5系統(tǒng)實現(xiàn) JSP、Servlet技術和數(shù)據(jù)庫技術在Web應用程序開發(fā)中的大量普及和應用,使得系統(tǒng)中寫短信、查詢統(tǒng)計、常用語等模塊的實現(xiàn)變得非常容易。 5.1收發(fā)短信 當前,采用的收發(fā)短信方法主要是在服務器端使用定時刷新頁面或通過定時器來實現(xiàn)。此方法是在每間隔一定時間,服務器掃描串口并讀取串口中的數(shù)據(jù),然后確認是否解收到新數(shù)據(jù)。這雖然實現(xiàn)了信息的接收,但增加了服務器的開銷,無論是串口有無新數(shù)據(jù),服務器都定時讀取數(shù)據(jù),這便增加系統(tǒng)的負擔,從

9、而將低了系統(tǒng)的性能。 基于串口監(jiān)聽的方法接收數(shù)據(jù),即當串口有新數(shù)據(jù)接收時產(chǎn)生監(jiān)事件,通過事件驅動來“通知”服務器,然后取得手機發(fā)送過來的信息,從而進行處理和響應事件。這種方式的實現(xiàn),其優(yōu)勢主要體現(xiàn)在節(jié)省系統(tǒng)資源和數(shù)據(jù)接收的及時響應。 對串口監(jiān)聽,即當收到數(shù)據(jù)立即響應事件,這與Java Application程序中的動作監(jiān)聽(ActionListener)類似。在實現(xiàn)手機信息的接收過程中,可由類SerialPort中addEventListener (this)方法偵聽,當收到數(shù)據(jù)時產(chǎn)生事件,主要代碼如下: public void serialEvent(SerialPortEvent e) S

10、tringBuffer inputBuffer = new StringBuffer(); int newData = 0; switch (e.getEventType() /DATA_AVAILABLE - 有數(shù)據(jù)到達, case SerialPortEvent.DATA_AVAILABLE : /讀取數(shù)據(jù)信息,使用JavaBean中的模型進行數(shù)據(jù)處理 while (newData != -1) try newData = this.inStream.read(); if (newData = -1) break; if (r = (char) newData) inputBuffer.a

11、ppend(n); else inputBuffer.append(char) newData); catch (IOException ex) System.err.println(ex); return; operateMsg(new String(inputBuffer);/調(diào)用對數(shù)據(jù)進行處理的方法, /new String(inputBuffer)為接收到的內(nèi)容 break; case SerialPortEvent.BI :/BI - 通訊中斷. 向手機發(fā)送信息,調(diào)用sendMsg()方法,在此方法的設計中,使用SerialPort類中的getOutputStream()初始化Out

12、putStream類的對象outStream,該對象的write()方法將數(shù)據(jù)寫入串口。 public void sendMsg(String msg, String phoneNumber) getSerialPort(); /打開串口 setupSerialPort(); /初始化串口 try outStream.write(ATE 0r); /測試modem outStream.write(AT+CMGF=1r); /將信息設置為text模式 outStream.write(AT+CSCS=GSMr,); /將字符設置為UCS2模式 outStream.write(AT+CSMP=17,

13、167,0,240r);/設置短信發(fā)送的相關參數(shù) if(!msg.equals() & !phoneNumber.equals() outStream.write(AT+CMGS= + phoneNumber + r,); outStream.write(messageString); outStream.write(char) 26); catch (IOException ioe) closeIOStream(); closeSerialPort(); setToNull(); 以上兩個函數(shù)分別實現(xiàn)了短信的收發(fā)功能,但在進行數(shù)據(jù)接收時,由于短信編碼與字符編碼不同,所以需要將編碼進行轉換。本

14、文采用短信編碼的TEXT模式1。 5.2定時功能的實現(xiàn) 收發(fā)短信的實現(xiàn),雖然為信息管理系統(tǒng)增加了新的功能,但還不能滿足其應用的需要,尚需要在系統(tǒng)中新增更多功能。以下實現(xiàn)的是在系統(tǒng)中定時發(fā)送短信功能,如定時為某用戶發(fā)送信息。 當Web工程啟動時,必須能讓定時器宿主的存活期為整個Web工程生命期,在工程啟動時能自動加載運行。結合這兩點,確定使用Servlet上下文有關的偵聽器實現(xiàn)定時功能,通過在工程的配置文件中加以合理配置,會在工程啟動時自動運行,并在整個工程生命期中處于監(jiān)聽狀態(tài)。 通過Servlet偵聽器與Timer的結合,運用Servlet偵聽器需要實現(xiàn)javax.servlet.Servle

15、tContextListener接口,同時實現(xiàn)它的contextInitialized(ServletContextEvent event)和context Destroyed(ServletContextEvent event)兩個接口函數(shù)。程序實現(xiàn)代碼如下: public class TimerListener extends HttpServlet implements ServletContextListener public void contextInitialized(ServletContextEvent sce) /開始監(jiān)聽,在此部分編寫定時功能的程序 SmsManager

16、sm=new SmsManager10000; for(i=1;i10000;i+); /初始化任務 Timer t=new Timer(); i=0; MyTask mt = new MyTask(sm); /自定義任務類 /該類run()方法執(zhí)行發(fā)送短信 t.schedule(mt,0,1000); /每秒鐘檢測一次 public void contextDestroyed(ServletContextEvent sce) /定時器的銷毀 實現(xiàn)短信定時發(fā)送的具體方案中,將預發(fā)內(nèi)容、時間、手機號碼、用戶等信息保存在數(shù)據(jù)庫中,當預發(fā)時間與當前系統(tǒng)時間相同時,將內(nèi)容自動發(fā)送到指定手機中。于是,在

17、實現(xiàn)時,時刻都要取出數(shù)據(jù)庫中的時間進行比較,這將大大地增加系統(tǒng)的開銷。為了減少頻繁的訪問數(shù)據(jù)庫,降低系統(tǒng)開銷,本文是使用動態(tài)鏈表實現(xiàn)。 首先將預發(fā)的內(nèi)容、時間等信息封裝成類SmsManager,然后由該類創(chuàng)建對象數(shù)組,數(shù)組的長度可根據(jù)系統(tǒng)的用戶量決定,并由數(shù)據(jù)庫中未發(fā)標記的記錄按時間對每個數(shù)組元素初始化。功能的實施,就是通過對數(shù)組元素依次訪問,當數(shù)組每個元素全部訪問,系統(tǒng)再重新自動初始化數(shù)組對象。若有在當天預發(fā)的情況,則可用插入算法,按照時間鏈插入在數(shù)組中。 6結語 本系統(tǒng)作為某高校學生成績管理系統(tǒng)的一個子系統(tǒng),實現(xiàn)了學生的短信查分、教學通知等服務,還為教職工的日程安排、會議通知等提供短信服務,這節(jié)省了學校的日常通訊費用,也提高了教務部門的工作效率。 參考文獻 1 潘旭兵,林中.短信收發(fā)系統(tǒng)J.電腦編程技巧與維護.2007(5):44-49 2 William Crawford,Jonathan Kap

溫馨提示

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

評論

0/150

提交評論