下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、基于J2EE手機(jī)短信平臺(tái)設(shè)計(jì)和實(shí)現(xiàn)摘 要 本文使用Java串口通信技術(shù)和JSP技術(shù),對(duì)已有的短信系統(tǒng)進(jìn)行研究,分析系統(tǒng)存在的問(wèn)題,改善系統(tǒng)提取短信方法、提高系統(tǒng)性能、實(shí)現(xiàn)定時(shí)發(fā)送短信功能,并應(yīng)用于Windows平臺(tái)下的Web系統(tǒng)中。 關(guān)鍵詞 串口通信;手機(jī)短信;管理信息系統(tǒng);JSP 1引言 隨著移動(dòng)通訊的發(fā)展,移動(dòng)辦公提供隨時(shí)隨地服務(wù)正成為當(dāng)今信息技術(shù)發(fā)展的重要方向。以短信為基本服務(wù)平臺(tái)的服務(wù)渠道正被越來(lái)越多商家所采用。手機(jī)短信的行業(yè)應(yīng)用越來(lái)越廣泛,它具有快捷、經(jīng)濟(jì)、針對(duì)性強(qiáng)、可移動(dòng)等優(yōu)點(diǎn)。很多行業(yè)的企業(yè)用戶(hù)都希望能夠利用Web系統(tǒng)提供的手機(jī)短信服務(wù)功能來(lái)發(fā)布企業(yè)信息。如:客戶(hù)聯(lián)絡(luò)、新產(chǎn)品通知
2、、會(huì)議通知、緊急通知、催費(fèi)通知、發(fā)貨通知、訂單查詢(xún)、節(jié)日問(wèn)候等,從而達(dá)到提高辦公效率、降低辦公成本的目的。 2問(wèn)題分析 目前在PC上實(shí)現(xiàn)手機(jī)短信收發(fā)技術(shù)主要有三種: (1)直接接入運(yùn)營(yíng)商短信網(wǎng)關(guān),這種方法的實(shí)現(xiàn)不需要附加新的硬件,但是需要到運(yùn)營(yíng)商申請(qǐng)網(wǎng)關(guān),適合于大型通信開(kāi)發(fā),如向移動(dòng)、電信等公司申請(qǐng),使用起來(lái)比較方便,但費(fèi)用較高。 (2)通過(guò)一些網(wǎng)站上提供的短信發(fā)送功能來(lái)實(shí)現(xiàn),如騰迅、網(wǎng)易等都提供這方面的服務(wù),這種方法實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,所需資源較少,但缺點(diǎn)是對(duì)網(wǎng)絡(luò)的依賴(lài)性太強(qiáng),不利于集成到企業(yè)的MIS系統(tǒng)中。 (3)用GSM MODEM技術(shù)實(shí)現(xiàn)PC對(duì)手機(jī)收發(fā)信息,這是目前比較適合于小項(xiàng)目開(kāi)發(fā)的
3、一種方法,只需要對(duì)AT指令和串口編程的知識(shí)運(yùn)用熟練就可以實(shí)現(xiàn),但需要硬件GSM MODEM的支持。 當(dāng)前,一些公司提供了短信開(kāi)發(fā)的設(shè)備和配套的短信群發(fā)軟件,用它可以在軟件中集成相應(yīng)的群發(fā)功能,雖然實(shí)現(xiàn)了發(fā)送短信的功能,但由于是單機(jī)版的,不利于遠(yuǎn)程操作和多用戶(hù)的同時(shí)使用;也有一些基于Web的短信系統(tǒng)開(kāi)發(fā)出來(lái)了,實(shí)現(xiàn)了手機(jī)短信的發(fā)送,但在手機(jī)短信的接收方面仍存在不足:如很多系統(tǒng)都是通過(guò)不斷刷新頁(yè)面來(lái)判斷是否收到有新的信息,這種方式使得系統(tǒng)效率下降,需要改進(jìn)。另外,在目前已開(kāi)發(fā)出的短信系統(tǒng)中尚缺乏定時(shí)發(fā)送短信功能,此功能的實(shí)現(xiàn),可以為用戶(hù)的日程安排提供短信提醒服務(wù)。 基于以上因素,可以設(shè)計(jì)并實(shí)現(xiàn)一種
4、B/S模式的短信系統(tǒng),此系統(tǒng)在一種能通過(guò)輸入設(shè)備與服務(wù)器直接通信的MVC體系結(jié)構(gòu)下構(gòu)架,使用GSM MODEM以串口監(jiān)聽(tīng)方式觸發(fā)事件的方式接收短信以提高系統(tǒng)的性能,實(shí)現(xiàn)定時(shí)發(fā)送短信功能以滿(mǎn)足更多用戶(hù)的需求。 3系統(tǒng)體系結(jié)構(gòu) 基于J2EE的Web式信息管理系統(tǒng)技術(shù)現(xiàn)已比較成熟,如Struts框架、Model I體系結(jié)構(gòu)、Model II體系結(jié)構(gòu)都可實(shí)現(xiàn)。本文體系結(jié)構(gòu)是基于J2EE的MVC結(jié)構(gòu),實(shí)現(xiàn)一種能通過(guò)串口設(shè)備實(shí)現(xiàn)向系統(tǒng)進(jìn)行輸入輸出的系統(tǒng)結(jié)構(gòu),如圖1所示。圖1 系統(tǒng)體系結(jié)構(gòu) 在傳統(tǒng)的Web系統(tǒng)中,服務(wù)器的響應(yīng)都是由客戶(hù)端經(jīng)HTTP協(xié)議傳輸?shù)臄?shù)據(jù)服務(wù)請(qǐng)求,實(shí)現(xiàn)對(duì)Web資源的使用。本文的系統(tǒng)體系
5、結(jié)構(gòu)構(gòu)架Web系統(tǒng),除了能響應(yīng)基于HTTP的數(shù)據(jù)請(qǐng)求外,還可通過(guò)與該服務(wù)器連接的GSM MODEM實(shí)現(xiàn)服務(wù)的請(qǐng)求,使得系統(tǒng)的信息傳遞更快捷,實(shí)現(xiàn)可移動(dòng)性特點(diǎn)。 采用該體系結(jié)構(gòu)構(gòu)架Web系統(tǒng),用戶(hù)可以通過(guò)HTTP協(xié)議向應(yīng)用服務(wù)器請(qǐng)求數(shù)據(jù)處理,當(dāng)服務(wù)器得到客戶(hù)端的請(qǐng)求數(shù)據(jù)后,控制器(Servlet)進(jìn)行事務(wù)處理,模型(JavaBen)執(zhí)行操作,如信息的查詢(xún)和保存等操作,最后通過(guò)視圖頁(yè)面?zhèn)骰亟o用戶(hù)。 同時(shí),用戶(hù)也可以通過(guò)手機(jī)發(fā)送數(shù)據(jù)給服務(wù)器,實(shí)現(xiàn)數(shù)據(jù)的處理。用戶(hù)發(fā)送信息向服務(wù)器請(qǐng)求服務(wù),首先將信息給GSM MODEM,然后服務(wù)器通過(guò)與該設(shè)備連接的串口獲取數(shù)據(jù),實(shí)現(xiàn)事件的響應(yīng)。實(shí)質(zhì)上,GSM MODE
6、M就是服務(wù)器的一個(gè)輸入設(shè)備,相當(dāng)于鍵盤(pán),起數(shù)據(jù)輸入的作用。信息的接收,就是設(shè)計(jì)程序讓服務(wù)器自動(dòng)檢測(cè)這個(gè)輸入設(shè)備是否“輸入”了數(shù)據(jù)。 同理,對(duì)該體系結(jié)構(gòu)應(yīng)用的推廣,所有輸入設(shè)備與服務(wù)器作為一體構(gòu)架網(wǎng)絡(luò)服務(wù)器,實(shí)現(xiàn)Web服務(wù),如應(yīng)用于基于Web的工業(yè)控制系統(tǒng)、電壓測(cè)試系統(tǒng)等。 4系統(tǒng)功能 短信系統(tǒng)的主要功能有寫(xiě)短信、發(fā)件箱、收件箱、電話(huà)簿、統(tǒng)計(jì)查詢(xún)和常用語(yǔ)的插入等,其功能模塊如圖2所示。圖2 系統(tǒng)功能模塊 寫(xiě)短信可以實(shí)現(xiàn)短信的單發(fā)和群發(fā)功能,無(wú)論是單發(fā)還是群發(fā),發(fā)送對(duì)象都可以自由選擇,當(dāng)發(fā)送對(duì)象選定后,系統(tǒng)查找數(shù)據(jù)庫(kù)中該號(hào)碼多對(duì)應(yīng)的記錄信息自動(dòng)生成稱(chēng)呼,然后將其要發(fā)送的內(nèi)容一起發(fā)送給所選對(duì)象。 發(fā)
7、件箱用來(lái)存儲(chǔ)用戶(hù)所發(fā)的所有短信信息,以便用戶(hù)以后查看自己發(fā)送的短信,可實(shí)現(xiàn)對(duì)短信的管理,如轉(zhuǎn)發(fā)、刪除等。 收件箱用來(lái)存儲(chǔ)用戶(hù)所接收到的短信,該模塊除了實(shí)現(xiàn)短信的管理,如對(duì)短信的刪除、查詢(xún)等功能外,還提供短信回復(fù)功能,實(shí)現(xiàn)系統(tǒng)自動(dòng)回復(fù),在服務(wù)器收到用戶(hù)短信后對(duì)數(shù)據(jù)進(jìn)行處理,然后自動(dòng)回復(fù)給用戶(hù);另外是用戶(hù)回復(fù),通過(guò)系統(tǒng)身份驗(yàn)證后,用戶(hù)可對(duì)收到的短信進(jìn)行回復(fù)。 電話(huà)簿實(shí)現(xiàn)用戶(hù)對(duì)聯(lián)系人的管理,如新增聯(lián)系人、實(shí)現(xiàn)聯(lián)系人的分組等操作。 定時(shí)發(fā)送短信功能,可為用戶(hù)的日程安排提供幫助,如通過(guò)短信提醒參加會(huì)議、為朋友發(fā)送生日祝福短信等。用戶(hù)設(shè)定短信發(fā)送的具體時(shí)間,輸入將發(fā)送的信息并保存,在到達(dá)這個(gè)時(shí)間時(shí),服務(wù)器
8、自動(dòng)將信息發(fā)送出去。 查詢(xún)統(tǒng)計(jì)是管理員實(shí)現(xiàn)查看指定用戶(hù)發(fā)送信息的數(shù)量等操作。 常用語(yǔ)管理實(shí)現(xiàn)快捷的輸入,用戶(hù)可編輯常用的短信內(nèi)容并保存,在發(fā)送時(shí)可直接調(diào)出。 5系統(tǒng)實(shí)現(xiàn) JSP、Servlet技術(shù)和數(shù)據(jù)庫(kù)技術(shù)在Web應(yīng)用程序開(kāi)發(fā)中的大量普及和應(yīng)用,使得系統(tǒng)中寫(xiě)短信、查詢(xún)統(tǒng)計(jì)、常用語(yǔ)等模塊的實(shí)現(xiàn)變得非常容易。 5.1收發(fā)短信 當(dāng)前,采用的收發(fā)短信方法主要是在服務(wù)器端使用定時(shí)刷新頁(yè)面或通過(guò)定時(shí)器來(lái)實(shí)現(xiàn)。此方法是在每間隔一定時(shí)間,服務(wù)器掃描串口并讀取串口中的數(shù)據(jù),然后確認(rèn)是否解收到新數(shù)據(jù)。這雖然實(shí)現(xiàn)了信息的接收,但增加了服務(wù)器的開(kāi)銷(xiāo),無(wú)論是串口有無(wú)新數(shù)據(jù),服務(wù)器都定時(shí)讀取數(shù)據(jù),這便增加系統(tǒng)的負(fù)擔(dān),從
9、而將低了系統(tǒng)的性能。 基于串口監(jiān)聽(tīng)的方法接收數(shù)據(jù),即當(dāng)串口有新數(shù)據(jù)接收時(shí)產(chǎn)生監(jiān)事件,通過(guò)事件驅(qū)動(dòng)來(lái)“通知”服務(wù)器,然后取得手機(jī)發(fā)送過(guò)來(lái)的信息,從而進(jìn)行處理和響應(yīng)事件。這種方式的實(shí)現(xiàn),其優(yōu)勢(shì)主要體現(xiàn)在節(jié)省系統(tǒng)資源和數(shù)據(jù)接收的及時(shí)響應(yīng)。 對(duì)串口監(jiān)聽(tīng),即當(dāng)收到數(shù)據(jù)立即響應(yīng)事件,這與Java Application程序中的動(dòng)作監(jiān)聽(tīng)(ActionListener)類(lèi)似。在實(shí)現(xiàn)手機(jī)信息的接收過(guò)程中,可由類(lèi)SerialPort中addEventListener (this)方法偵聽(tīng),當(dāng)收到數(shù)據(jù)時(shí)產(chǎn)生事件,主要代碼如下: public void serialEvent(SerialPortEvent e) S
10、tringBuffer inputBuffer = new StringBuffer(); int newData = 0; switch (e.getEventType() /DATA_AVAILABLE - 有數(shù)據(jù)到達(dá), case SerialPortEvent.DATA_AVAILABLE : /讀取數(shù)據(jù)信息,使用JavaBean中的模型進(jìn)行數(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)用對(duì)數(shù)據(jù)進(jìn)行處理的方法, /new String(inputBuffer)為接收到的內(nèi)容 break; case SerialPortEvent.BI :/BI - 通訊中斷. 向手機(jī)發(fā)送信息,調(diào)用sendMsg()方法,在此方法的設(shè)計(jì)中,使用SerialPort類(lèi)中的getOutputStream()初始化Out
12、putStream類(lèi)的對(duì)象outStream,該對(duì)象的write()方法將數(shù)據(jù)寫(xiě)入串口。 public void sendMsg(String msg, String phoneNumber) getSerialPort(); /打開(kāi)串口 setupSerialPort(); /初始化串口 try outStream.write(ATE 0r); /測(cè)試modem outStream.write(AT+CMGF=1r); /將信息設(shè)置為text模式 outStream.write(AT+CSCS=GSMr,); /將字符設(shè)置為UCS2模式 outStream.write(AT+CSMP=17,
13、167,0,240r);/設(shè)置短信發(fā)送的相關(guān)參數(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(); 以上兩個(gè)函數(shù)分別實(shí)現(xiàn)了短信的收發(fā)功能,但在進(jìn)行數(shù)據(jù)接收時(shí),由于短信編碼與字符編碼不同,所以需要將編碼進(jìn)行轉(zhuǎn)換。本
14、文采用短信編碼的TEXT模式1。 5.2定時(shí)功能的實(shí)現(xiàn) 收發(fā)短信的實(shí)現(xiàn),雖然為信息管理系統(tǒng)增加了新的功能,但還不能滿(mǎn)足其應(yīng)用的需要,尚需要在系統(tǒng)中新增更多功能。以下實(shí)現(xiàn)的是在系統(tǒng)中定時(shí)發(fā)送短信功能,如定時(shí)為某用戶(hù)發(fā)送信息。 當(dāng)Web工程啟動(dòng)時(shí),必須能讓定時(shí)器宿主的存活期為整個(gè)Web工程生命期,在工程啟動(dòng)時(shí)能自動(dòng)加載運(yùn)行。結(jié)合這兩點(diǎn),確定使用Servlet上下文有關(guān)的偵聽(tīng)器實(shí)現(xiàn)定時(shí)功能,通過(guò)在工程的配置文件中加以合理配置,會(huì)在工程啟動(dòng)時(shí)自動(dòng)運(yùn)行,并在整個(gè)工程生命期中處于監(jiān)聽(tīng)狀態(tài)。 通過(guò)Servlet偵聽(tīng)器與Timer的結(jié)合,運(yùn)用Servlet偵聽(tīng)器需要實(shí)現(xiàn)javax.servlet.Servle
15、tContextListener接口,同時(shí)實(shí)現(xiàn)它的contextInitialized(ServletContextEvent event)和context Destroyed(ServletContextEvent event)兩個(gè)接口函數(shù)。程序?qū)崿F(xiàn)代碼如下: public class TimerListener extends HttpServlet implements ServletContextListener public void contextInitialized(ServletContextEvent sce) /開(kāi)始監(jiān)聽(tīng),在此部分編寫(xiě)定時(shí)功能的程序 SmsManager
16、sm=new SmsManager10000; for(i=1;i10000;i+); /初始化任務(wù) Timer t=new Timer(); i=0; MyTask mt = new MyTask(sm); /自定義任務(wù)類(lèi) /該類(lèi)run()方法執(zhí)行發(fā)送短信 t.schedule(mt,0,1000); /每秒鐘檢測(cè)一次 public void contextDestroyed(ServletContextEvent sce) /定時(shí)器的銷(xiāo)毀 實(shí)現(xiàn)短信定時(shí)發(fā)送的具體方案中,將預(yù)發(fā)內(nèi)容、時(shí)間、手機(jī)號(hào)碼、用戶(hù)等信息保存在數(shù)據(jù)庫(kù)中,當(dāng)預(yù)發(fā)時(shí)間與當(dāng)前系統(tǒng)時(shí)間相同時(shí),將內(nèi)容自動(dòng)發(fā)送到指定手機(jī)中。于是,在
17、實(shí)現(xiàn)時(shí),時(shí)刻都要取出數(shù)據(jù)庫(kù)中的時(shí)間進(jìn)行比較,這將大大地增加系統(tǒng)的開(kāi)銷(xiāo)。為了減少頻繁的訪(fǎng)問(wèn)數(shù)據(jù)庫(kù),降低系統(tǒng)開(kāi)銷(xiāo),本文是使用動(dòng)態(tài)鏈表實(shí)現(xiàn)。 首先將預(yù)發(fā)的內(nèi)容、時(shí)間等信息封裝成類(lèi)SmsManager,然后由該類(lèi)創(chuàng)建對(duì)象數(shù)組,數(shù)組的長(zhǎng)度可根據(jù)系統(tǒng)的用戶(hù)量決定,并由數(shù)據(jù)庫(kù)中未發(fā)標(biāo)記的記錄按時(shí)間對(duì)每個(gè)數(shù)組元素初始化。功能的實(shí)施,就是通過(guò)對(duì)數(shù)組元素依次訪(fǎng)問(wèn),當(dāng)數(shù)組每個(gè)元素全部訪(fǎng)問(wèn),系統(tǒng)再重新自動(dòng)初始化數(shù)組對(duì)象。若有在當(dāng)天預(yù)發(fā)的情況,則可用插入算法,按照時(shí)間鏈插入在數(shù)組中。 6結(jié)語(yǔ) 本系統(tǒng)作為某高校學(xué)生成績(jī)管理系統(tǒng)的一個(gè)子系統(tǒng),實(shí)現(xiàn)了學(xué)生的短信查分、教學(xué)通知等服務(wù),還為教職工的日程安排、會(huì)議通知等提供短信服務(wù),這節(jié)省了學(xué)校的日常通訊費(fèi)用,也提高了教務(wù)部門(mén)的工作效率。 參考文獻(xiàn) 1 潘旭兵,林中.短信收發(fā)系統(tǒng)J.電腦編程技巧與維護(hù).2007(5):44-49 2 William Crawford,Jonathan Kap
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年城市污水處理廠(chǎng)污泥卸車(chē)與資源化利用服務(wù)合同范本3篇
- 2024至2030年全棉圓點(diǎn)提花面巾項(xiàng)目投資價(jià)值分析報(bào)告
- 2024年度緊急物資運(yùn)輸合同變更及應(yīng)急響應(yīng)協(xié)議3篇
- 授權(quán)委托書(shū)合同簽署(2025年)
- 中介人居間合同范本2025年
- 借款合同模板錦集2025年
- 城市更新項(xiàng)目用地出讓合同
- 2024年標(biāo)準(zhǔn)型農(nóng)用車(chē)輛租賃合同模板版B版
- 傳媒公司員工勞動(dòng)合同范文
- 修路工程合同范本2025年
- 職業(yè)高中高一下學(xué)期期末英語(yǔ)試題卷2(含答案)
- 銀行安全案件防控
- 自來(lái)水反恐事件預(yù)案分級(jí)
- XXX學(xué)校領(lǐng)導(dǎo)包班工作實(shí)施方案范文
- 中職卓越聯(lián)盟高一上學(xué)期1月期末語(yǔ)文試題(含答案)
- 消化內(nèi)科護(hù)士組長(zhǎng)個(gè)人年終工作總結(jié)
- 輸配電系統(tǒng)的新能源接入與電價(jià)測(cè)算
- 反洗錢(qián)述職報(bào)告
- 部編版二年級(jí)語(yǔ)文上冊(cè)第二單元大單元教學(xué)設(shè)計(jì)
- 胃癌健康宣教講解課件
- 建筑工程類(lèi)就業(yè)分析報(bào)告
評(píng)論
0/150
提交評(píng)論