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