陳浩 高凡鈞 謝思燕 洪居國
摘要:隨著智能手機(jī)的普及,互聯(lián)網(wǎng)給我們生活帶來的便利變得無處不在。目前,在大學(xué)校園內(nèi)存在諸多租賃需求,如社團(tuán)活動(dòng)需要租用音響、麥克風(fēng)、活動(dòng)道具等,外出旅游需要租用相機(jī)、山地車等。這些都是低頻、價(jià)格不低的物品,大多數(shù)學(xué)生沒有太大的購買意愿。根據(jù)如上需求設(shè)計(jì)與實(shí)現(xiàn)基于Android系統(tǒng)的校園租賃平臺(tái)——易租。結(jié)合軟件工程的相關(guān)知識(shí),在需求分析的基礎(chǔ)上,設(shè)計(jì)出系統(tǒng)總體架構(gòu)及功能。使用Java語言和Android Studio開發(fā)工具開發(fā)App,Servlet技術(shù)開發(fā)服務(wù)器端,MySQL進(jìn)行數(shù)據(jù)庫管理。在該平臺(tái)上,用戶可以實(shí)現(xiàn)閑置物品租賃、校園資訊瀏覽等功能。測試表明,平臺(tái)滿足了用戶的需求,給用戶的校園生活帶來了更多便利。
關(guān)鍵詞:Android;Servlet;校園服務(wù);租賃;移動(dòng)APP
中圖分類號:TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號:1009-3044(2018)09-0062-03
Abstract: With the popularity of smart phones, the convenience that the Internet has brought to our lives has become ubiquitous. At present, there are many rental needs in the university campus, such as club activities need to rent audio, microphones, activity props, etc., travel needs to rent cameras, mountain bikes, etc. These are low-frequency, inexpensive items, most students do not have too big purchase intention. According to the above requirements to design and implement the campus rental platform based on Android system - easy rent. Based on the relevant knowledge of software engineering, and the needs analysis, the overall architecture and functions of the system are designed. Use Java language and Android Studio development tools to develop App, Servlet technology to develop server, MySQL database to manage data. On this platform, users can realize functions such as idle item leasing and campus information browsing. Tests have shown that the platform meets the needs of users and brings more convenience to users' campus life.
Key words: Android; Servlet; campus service; lease; Mobile Application
1 背景
20世紀(jì)末,是以阿里為代表的B2B時(shí)代、淘寶為代表的C2C時(shí)代和京東為代表的B2C時(shí)代。在短短十幾年間,電子商務(wù)和互聯(lián)網(wǎng)經(jīng)濟(jì)的高速發(fā)展,網(wǎng)上購物逐漸成為大眾消費(fèi)的習(xí)慣。作為互聯(lián)網(wǎng)經(jīng)濟(jì)中最活躍群體之一的高校師生更是習(xí)慣性在線消費(fèi),因而催生了一系列的經(jīng)濟(jì)產(chǎn)能的發(fā)展,電子商務(wù)在其中扮演著重要角色。高校大學(xué)生購買商品的多樣化,導(dǎo)致物品使用效率大大降低,因而如何解決資源合理利用以及高效化,成為其更多高校社區(qū)的首要難題。
“使用但不擁有”將會(huì)成為一種消費(fèi)時(shí)尚,比如有了滴滴就可以實(shí)現(xiàn)隨時(shí)便捷出行,不一定非要自己買輛車,通過將不再使用或偶爾使用的閑置物品共享出租/轉(zhuǎn)售,能最大化發(fā)揮閑置物品的價(jià)值,物品擁有者出租賺錢,使用者租借省錢,對雙方都有價(jià)值。
基于安卓系統(tǒng)開發(fā)的校園C2C租賃APP,將會(huì)優(yōu)化校內(nèi)在校師生閑置資源的共享,極大提高物品使用效率,讓提供租賃與租賃者,分別獲取各自所需,實(shí)現(xiàn)雙贏的局面。校園APP基于在校師生,所以雙方交易物品方便快捷。
2 系統(tǒng)分析
2.1 系統(tǒng)目標(biāo)
易租系統(tǒng)需要技術(shù)作為支撐,須開發(fā)出相應(yīng)的計(jì)算機(jī)系統(tǒng)。該系統(tǒng)主要包括以下組成部分:服務(wù)器端,接收客戶端所有請求,同時(shí)提供數(shù)據(jù)存儲(chǔ)服務(wù);安卓端,提供用戶注冊登錄、發(fā)布租入/租出需求、接單、完成租賃等功能。
2.2 系統(tǒng)功能
易租App主要功能有注冊登錄、發(fā)布租入/租出需求、接單、完成租賃。如圖1所示。
注冊登錄:為確保用戶人身及資金安全,用戶需提供學(xué)號密碼進(jìn)行注冊以證明是在校師生,注冊時(shí)提交學(xué)號密碼到易租服務(wù)器端,然后服務(wù)器端將數(shù)據(jù)發(fā)送到正方教務(wù)管理系統(tǒng)進(jìn)行校驗(yàn),通過后即可將此學(xué)號作為易租賬號使用,易租服務(wù)器端不對用戶學(xué)號的密碼進(jìn)行保留,而是提示客戶端進(jìn)行易租密碼設(shè)置,設(shè)置完即可登錄使用。
發(fā)布租入/租出需求:登錄且完成手機(jī)號綁定方可發(fā)布需求訂單,用戶可根據(jù)需要發(fā)布租入訂單,也可以將自己的閑置物品租出(發(fā)布租出訂單)。
接單:登錄且完成手機(jī)號綁定方可接單,接單后可聯(lián)系對方協(xié)商交易時(shí)間及地點(diǎn)。
完成租賃:在完成交易并歸還物品后,即可完成租賃。
3 系統(tǒng)設(shè)計(jì)
3.1 基本架構(gòu)
中商情報(bào)網(wǎng)資料顯示,至2017年2月中國Android 手機(jī)市場已暴漲至86.4%,是智能手機(jī)的主流操作系統(tǒng)。易租App包括服務(wù)器端應(yīng)用程序和客戶端應(yīng)用程序兩部分。系統(tǒng)釆用Client/Server總體架構(gòu),如圖2所示,該系統(tǒng)將支持Android移動(dòng)設(shè)備通過網(wǎng)絡(luò)連接云服務(wù)器來訪問各項(xiàng)數(shù)據(jù)。
Web應(yīng)用采用安全的HTTPS協(xié)議進(jìn)行通信,利用JSON格式傳輸數(shù)據(jù),客戶端利用HttpClient建立與服務(wù)器的連接,服務(wù)端通過Servlet獲取客戶端URL請求,通過Http Request獲取參數(shù)、查詢數(shù)據(jù)庫,進(jìn)而生成JSON格式的數(shù)據(jù),通過Http Response返回給客戶端,客戶端獲取到結(jié)果后進(jìn)行JSON解析并呈現(xiàn)給用戶。
3.3 系統(tǒng)邏輯結(jié)構(gòu)
本系統(tǒng)采用MVC框架(Model-View-Controller,即“模型-視圖-控制器”)。其中,模型層主要負(fù)責(zé)業(yè)務(wù)流程的處理;視圖層主要用于用戶與平臺(tái)之間的交互;控制層主要用于實(shí)現(xiàn)業(yè)務(wù)流程的控制,對模型層和視圖層進(jìn)行調(diào)度與控制。
3.4 界面流程設(shè)計(jì)
易租APP的界面流程設(shè)計(jì)如圖3所示。
4 系統(tǒng)實(shí)現(xiàn)
易租系統(tǒng)采用C/S架構(gòu),是由客戶端和服務(wù)器端兩部分組成。
4.1 客戶端Android 應(yīng)用程序
安卓端采用Java編寫,Android Studio開發(fā)。采用MVC架構(gòu),網(wǎng)絡(luò)請求使用HttpClient類,本地?cái)?shù)據(jù)存儲(chǔ)使用SharedPreference類,對子線程統(tǒng)一使用自定義線程池管理。易租App的主要界面如圖4所示。
其中首頁使用自定義線程池管理類ThreadPoolManager提交網(wǎng)絡(luò)請求,自定義請求工具類HttpUtil加載服務(wù)器端返回的網(wǎng)絡(luò)數(shù)據(jù),客戶端獲取到服務(wù)器返回的數(shù)據(jù)后由Handler類發(fā)送消息通知主線程更新UI界面顯示,代碼如下:
ThreadPoolManager.getInstance().addTask(new Runnable() {
@Override
public void run() {
String result = HttpUtil.post(HttpUtil.API + "loadRecords");
Message msg = Message.obtain();
msg.what = what_datas;
msg.obj = result;
mHandler.sendMessage(msg);
}});
其中ThreadPoolManager類采用單例模式,通過單例模式可以保證系統(tǒng)中,應(yīng)用該模式的類一個(gè)類只有一個(gè)實(shí)例。此類的構(gòu)造方法通過Runtime.getRuntime().availableProcessors()來獲取安卓設(shè)備處理器的虛擬機(jī)的最大數(shù)量,然后通過該值創(chuàng)建線程池,用于統(tǒng)一管理所有網(wǎng)絡(luò)請求線程,實(shí)現(xiàn)如下:
public class ThreadPoolManager {
private ExecutorService service;
private ThreadPoolManager() {
int num = Runtime.getRuntime().availableProcessors();
service = Executors.newFixedThreadPool(num * 2); }
private static ThreadPoolManager manager;
public static ThreadPoolManager getInstance() {
if (manager == null) {
manager = new ThreadPoolManager();}
return manager; }
public void addTask(Runnable runnable) {
service.submit(runnable); }}
Handler主要用于異步消息的處理:當(dāng)發(fā)出一個(gè)消息之后,首先進(jìn)入一個(gè)消息隊(duì)列,發(fā)送消息的函數(shù)即刻返回,而另外一個(gè)部分在消息隊(duì)列中逐一將消息取出,然后對消息進(jìn)行處理,也就是發(fā)送消息和接收消息不是同步的處理。 這種機(jī)制通常用來處理相對耗時(shí)比較長的操作。上述mHandler對象收到消息后,通過switch語句判斷出此消息為數(shù)據(jù)獲取,則調(diào)用initDatas方法解析json數(shù)據(jù)并更新UI界面,代碼如下:
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
String result = msg.obj.toString();
switch (msg.what) {
case what_datas:
initDatas(result);
break;
...... }}
其中initDatas方法先通過JSONArray解析數(shù)據(jù)集合,然后通過循環(huán)語句逐個(gè)取出訂單對象,最后用來初始化ListView的適配器對象,并通過ListView展示數(shù)據(jù),實(shí)現(xiàn)如下:
private void initDatas(String result) {
try {
JSONArray ja = new JSONArray(result);
for (int i = 0, n= ja.length() ; i JSONObject j = (JSONObject) ja.get(i); Order o = new Order(); ...... datas.add(o); } mAdapter = new ChCommonAdapter< Order>(this, datas, R.layout.item_list_goods) { @Override public void convert(ChViewHolder holder, final Order t) { …… }}; orderList.setAdapter(mAdapter); } catch (JSONException e) { e.printStackTrace();}} 4.2 后臺(tái)服務(wù)器端的實(shí)現(xiàn) 客戶端應(yīng)用程序主要通過WiFi或3G、4G網(wǎng)絡(luò)連接方式連接到Web服務(wù)器端??蛻舳送ㄟ^http請求將相關(guān)參數(shù)傳輸?shù)椒?wù)器端(數(shù)據(jù)采用AES雙向加密傳輸),服務(wù)器端接收數(shù)據(jù)后進(jìn)行業(yè)務(wù)邏輯處理,對數(shù)據(jù)庫的數(shù)據(jù)根據(jù)相應(yīng)的操作進(jìn)行增刪改查,并將查詢結(jié)果以JSON數(shù)據(jù)格式返回給客戶端。服務(wù)器端采用Servlet提供后臺(tái)服務(wù)和管理。其中,Servlet用于接收服務(wù)器請求,并將處理后的響應(yīng)內(nèi)容傳給服務(wù)器,由服務(wù)器將響應(yīng)內(nèi)容返回給客戶端。服務(wù)器端部署在某云服務(wù)器商上,數(shù)據(jù)采用MySQL數(shù)據(jù)庫存儲(chǔ)。 Servlet是Java Servlet的簡稱,稱為小服務(wù)程序或服務(wù)連接器,用Java編寫的服務(wù)器端程序,主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。在本系統(tǒng)中,服務(wù)器端應(yīng)用程序使用Servlet的doPost方法返回json數(shù)據(jù)給客戶端,返回訂單數(shù)據(jù)的代碼如下: public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { OutputStream os = response.getOutputStream(); Connection con = null; ArrayList con = dbUtil.getCon(); orderList = dao.loadRecords(con); JSONArray jsonArray = JSONArray.fromObject(orderList); os.write(jsonArray.toString().getBytes("utf-8")); os.close(); con.close();} 其中dbUtil為封裝了數(shù)據(jù)庫連接代碼的工具類,dao為數(shù)據(jù)訪問層對象,其loadHelps方法接收Connection對象作為參數(shù),將通過訪問數(shù)據(jù)庫將獲取到的訂單數(shù)據(jù)封裝成一個(gè)個(gè)訂單對象并添加到ArrayList中,最后返回訂單數(shù)據(jù)集,實(shí)現(xiàn)如下: public ArrayList ArrayList< Order> orderList = new ArrayList try { String sql = "select * from t_orders where order_state='waiting' order by order_id desc"; PreparedStatement pstmt = con.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { Order o = new Order (); ...... orderList.add(o); } } catch (SQLException e) { e.printStackTrace();} return orderList; } 5 結(jié)束語 隨著中國電子商務(wù)蓬勃發(fā)展,共享經(jīng)濟(jì)也趁勢強(qiáng)勁發(fā)展,C2C所提供資源共享逐漸成為新的經(jīng)濟(jì)增長點(diǎn),不管是校內(nèi)租賃APP,實(shí)現(xiàn)的“使用但不占有”成為一種新的消費(fèi)形式,整個(gè)市場也逐漸出現(xiàn)諸多不同類型的共享平臺(tái),這是一種趨勢?;ヂ?lián)網(wǎng)下C2C模式,加速了整個(gè)社會(huì)資源的合理利用。 參考文獻(xiàn): [1] 伊雙清,董杰,謝君. 基于C2C模式的校園二手商品“雙線”交易平臺(tái)研究[J].科技視界, 2017(3): 82-83. [2] 王福英,謝緯,范馨元.高校大學(xué)生租賃業(yè)務(wù)發(fā)展現(xiàn)狀及其對策研究[J].遼寧經(jīng)濟(jì),2017(10): 66-67. [3] 李建華.移動(dòng)互聯(lián)網(wǎng)的未來:機(jī)遇與挑戰(zhàn)并重[J].移動(dòng)通信,2013(7):10-12.