樊紅林
摘要:該文設(shè)計(jì)并實(shí)現(xiàn)了由SSH2框架作為后臺(tái),Android移動(dòng)設(shè)備和PC瀏覽器作為客戶端,其中SSH2采用了分層的方式,由下至上分別是持久持,DAO層,業(yè)務(wù)層,服務(wù)層,WEB層。通過分層使得系統(tǒng)具有較高的擴(kuò)展性,便于將來維護(hù)。Android通過JSON傳遞數(shù)據(jù)給后臺(tái),而PC瀏覽器直接通過網(wǎng)頁的方式提交數(shù)據(jù)給后臺(tái)。
關(guān)鍵詞: Android;SSH2;JSON;分層
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)13-0035-01
如今的智能手機(jī)變得越來越普及,特別是基于Android和ios操作系統(tǒng)的手機(jī)隨處可看到,因此開發(fā)手機(jī)軟件變得由為重要,但是如何解決Android與后臺(tái)的數(shù)據(jù)傳輸變得極其重要。Struts2當(dāng)中可以加入JSON插件,使得Struts2可以幫你處理Android傳送過來的數(shù)據(jù)。但是也可以通過Servlet解決這個(gè)問題。
1 系統(tǒng)架構(gòu)設(shè)計(jì)
整個(gè)系統(tǒng)架構(gòu),如圖1所示。
1.1 Android客戶端
Android客戶端當(dāng),主要是通過Activity組成,其中包括了多個(gè)View,就形成了所看到的界面,但是這還不能實(shí)現(xiàn)需要的功能,后臺(tái)通過取得組件,之后進(jìn)行邏輯的處理。Activity之間也可以進(jìn)行跳轉(zhuǎn)。當(dāng)要傳遞數(shù)據(jù)給后臺(tái)實(shí)現(xiàn)邏輯功能的時(shí)候,Android直接把數(shù)據(jù)封閉好傳遞給Servlet。如http:localhost:8080/Book/ LoginServlet?name=name&password=password。服務(wù)器端接收傳遞來的參數(shù),并封閉實(shí)現(xiàn)功能,完成邏輯功能后,把返回的參數(shù)通過JSON進(jìn)行封閉,返回給Android客戶端進(jìn)行處理。
1.2 PC客戶端
通過瀏覽器瀏覽網(wǎng)頁是主要的方式,所以PC客戶端的開發(fā)也重要,主要采用HTML,JSP,等技術(shù)就可以實(shí)現(xiàn)完整的功能??蛻舳颂峤籋TTP請(qǐng)求就可以發(fā)送給后臺(tái)處理。
1.3 服務(wù)器
服務(wù)器端主要是由Struts2,Spring, Hibernate 組成,通過DAO層,服務(wù)層,WEB層實(shí)現(xiàn)分層。
Web層負(fù)責(zé)表現(xiàn)層與服務(wù)層的交互,用戶提交的請(qǐng)求能過Struts2進(jìn)行攔截,交給Action進(jìn)行處理,瀏覽器傳遞過來的數(shù)據(jù)就可以能過此來進(jìn)行處理。
業(yè)務(wù)層負(fù)責(zé)調(diào)用DAO的方法,進(jìn)行數(shù)據(jù)的增刪查改。并且負(fù)責(zé)給WEB層提供接口方法,實(shí)現(xiàn)中間層的功能。
DAO層負(fù)責(zé)與數(shù)據(jù)庫進(jìn)行交互。
2 Android與Servlet
以下代碼為Android客戶端后臺(tái)封裝數(shù)據(jù)后,發(fā)送給Servlet。
String urlString=http:localhost:8080/BookLoginServlet ?name=name&password=password
jsonObject = HttpUtil.query(urlString);
2.1 后臺(tái)BaseServlet實(shí)現(xiàn)方式
由于加入了Spring框架,因此可以交給Spring來管理Servlet,并且只是處理Android提交過來的數(shù)據(jù),瀏覽器提交的數(shù)據(jù)交給Struts2來進(jìn)行處理。BaseServlet 繼承至HttpServlet。
BaseServlet如下:
private ApplicationContext application;
application=WebApplicationContextUtils.getWebApplicationContext (getServletContext());}
public ApplicationContext getApplicationContext() {
return this.application;}
2.2 LoginServlet繼承BaseServlet
LoginServlet繼承至BaseServlet接收Android客戶端傳遞過來的參數(shù),并且把返回的數(shù)據(jù)進(jìn)行封閉返回給Android客戶端,主要代碼如下:
String username = req.getParameter("name");
String password = req.getParameter("password");
//業(yè)務(wù)邏輯處理并返回值
JSONObject jsonObject = new JSONObject();
jsonObject.put("hasUser", hasUser);
3 結(jié)語
本文章實(shí)現(xiàn)了Android的通信,能夠較好地與SSH2后臺(tái)進(jìn)行通信,達(dá)到了移動(dòng)端開發(fā)的目地,從而對(duì)今后的開發(fā)有極大的幫助。通過此種思路,使瀏覽器傳遞的數(shù)據(jù)和Android傳遞的數(shù)據(jù)可以分開處理,更容易分成多個(gè)模塊分別開發(fā)。
參考文獻(xiàn):
[1] Bruce Eckel. Thinking in Java[M]. Upper Saddle River, New Jersey, USA: PrenticeHall,2006.
[2] (美)威爾德, 斯尼德, 等. SpringFramework 2入門經(jīng)典[M]. 趙利通 譯. 北京:清華大學(xué)出版社,2009.
[3] 劉京華. Java Web整合開發(fā)王者歸來[M]. 北京:清華大學(xué)出版社,2010(14).
[4] 姚昱旻, 劉衛(wèi)國. Android的架構(gòu)與應(yīng)用開發(fā)研究[J]. 計(jì)算機(jī)系統(tǒng)應(yīng)用,2008,17(11):110-112.