張倩 秦宏 侯欣明 趙東升
摘要:隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,移動終端和服務(wù)器的網(wǎng)絡(luò)結(jié)構(gòu)采用Client/Server模式,本文研究了在C/S架構(gòu)下,手機終端和Web服務(wù)器的通信原理和軟件設(shè)計方法。網(wǎng)絡(luò)協(xié)議為HTTP,數(shù)據(jù)交換格式采用JSON,采用HttpClient接口的發(fā)送請求至服務(wù)器,Servlet接口負(fù)責(zé)接收和響應(yīng)客戶端請求,實現(xiàn)了Java開發(fā)平臺下,客戶端和服務(wù)器數(shù)據(jù)的準(zhǔn)確傳輸。
關(guān)鍵詞:移動終端 C/S HttpClient Servlet
中圖分類號:TP311. 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2016)08-0036-01
1 引言
基于Web的網(wǎng)絡(luò)結(jié)構(gòu)包括B/S和C/S兩種模式,B/S結(jié)構(gòu)即瀏覽器-服務(wù)器,該結(jié)構(gòu)的用戶工作界面是通過WWW瀏覽器來實現(xiàn)[1]。隨著Internet技術(shù)的速猛發(fā)展,手機、平板等移動終端多使用C/S結(jié)構(gòu),即客戶端-服務(wù)器,將任務(wù)合理分配到Client端和Server端來實現(xiàn)。以Android手機為客戶端的通信接口和傳統(tǒng)B/S結(jié)構(gòu)有很大區(qū)別。因此,對移動終端和服務(wù)器的通信方式和Java程序的設(shè)計方法進(jìn)行研究有很重要的意義。
2 通信系統(tǒng)架構(gòu)
客戶端和服務(wù)器的通信采用C/S模式,即Client/erver架構(gòu)。移動終端與Web服務(wù)器操作系統(tǒng)為Android和Windows,應(yīng)用軟件均采用Java語言開發(fā),數(shù)據(jù)交換格式采用JSON,比XML 更小、更快,更易解析。Web應(yīng)用服務(wù)器采用Tomcat網(wǎng)絡(luò)服務(wù)器,具備運行穩(wěn)定、可靠、效率高的特點[2]。Tomcat作為Servlet容器,負(fù)責(zé)接收和響應(yīng)客戶端請求,在許多大型應(yīng)用中可以作為現(xiàn)有的Internet技術(shù)和Java的中間橋梁[3]。
服務(wù)器和移動終端的通信過程可以描述為:(1)客戶端通過HTTP協(xié)議下的HttpClient接口的發(fā)送請求至服務(wù)器端;(2)Web服務(wù)器將客戶端的請求信息發(fā)送至Servlet接口;(3)Servlet接口生成響應(yīng)內(nèi)容,并將其傳給Web服務(wù)器;(4)服務(wù)器將響應(yīng)返回給客戶端的HttpResponse接口接收。在編寫完servlet相關(guān)類后,需要在web.xml中對Servlet類進(jìn)行配置,最后在Tomcat服務(wù)器上進(jìn)行Java Web部署才能正常運行,通信系統(tǒng)結(jié)構(gòu)如圖1。
3 通信接口實現(xiàn)方法
客戶端的應(yīng)用程序通過圖形界面的請求轉(zhuǎn)換為標(biāo)準(zhǔn)的HTTP請求,數(shù)據(jù)以jSON格式發(fā)送到服務(wù)器端。客戶端調(diào)用HTTP 協(xié)議的客戶端編程工具包HttpClient。創(chuàng)建請求方法的實例HttpGet或HttpPost,并設(shè)置URL和請求參數(shù)。發(fā)送請求需通過調(diào)用HttpClient對象的execute()方法。通過HttpResponse接口的getEntity()方法返回響應(yīng)信息,通過getStatusLine().getStatusCode()方法判斷請求是否成功,并進(jìn)行相應(yīng)的處理。GET操作用于獲取或查詢數(shù)據(jù)庫資源信息,而POST操作用于更新數(shù)據(jù)庫資源信息。客戶端軟件流程如圖2。
Servlet運行于服務(wù)器上,負(fù)責(zé)接收客戶端請求,經(jīng)過業(yè)務(wù)邏輯組件處理后,Servlet再把響應(yīng)結(jié)果返回給客戶。Servlet的主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動態(tài)Web內(nèi)容。服務(wù)器接收到客戶端的HTTP請求時,通過重載HttpServlet類中doGet()或doPost()方法來響應(yīng)客戶端做出的get或post請求,我們自己編寫的servlet要繼承HttpServlet,要覆蓋doPost或者doGet方法。doGet()和doPost()有兩個HttpServletRequest和HttpServletResponse參數(shù)。HttpServletRequest接口封裝了客戶的請求信息,用來獲取URL上的信息。響應(yīng)結(jié)果寫在HttpServletResponse接口中,提供客戶端的HTTP響應(yīng)。在信息處理結(jié)束后,由Servlet容器把響應(yīng)結(jié)果返回到發(fā)出請求的客戶端上。
參考文獻(xiàn)
[1]蔣義,吳建平,李星.基于WEB技術(shù)的網(wǎng)絡(luò)管理應(yīng)用系統(tǒng)結(jié)構(gòu)模型[J].計算機工程與應(yīng)用,2002年10期.
[2]蔣海昌.網(wǎng)上書城系統(tǒng)設(shè)計與實現(xiàn)[D].電子科技大學(xué),2013年.
[3]李養(yǎng)勝,李俊.基于JAVA的在線考試系統(tǒng)的設(shè)計與實現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2015年01期.