閻適成, 孟艷紅, 王澤京
(沈陽工業(yè)大學(xué) 軟件學(xué)院, 沈陽110023)
郭燕教授提到我國(guó)13 億多人口年產(chǎn)舊衣物達(dá)到約50 億件。 二手衣物的慈善化利用成為公眾習(xí)慣"斷舍離"后新的生活方式之一[1]。 很多人都想把舊衣物捐贈(zèng)到有需求的貧困地區(qū),但過高的運(yùn)費(fèi)以及捐贈(zèng)渠道等原因阻礙這一公益事業(yè)的發(fā)展。 有些貧困地區(qū)在網(wǎng)上發(fā)布需求信息后, 基本上能收到源源不斷寄過去的舊衣物。 而一些特別偏遠(yuǎn)沒有網(wǎng)絡(luò)發(fā)布的地區(qū), 卻很少能收到捐贈(zèng)。 雖然很多城市啟動(dòng)了廢舊衣物的回收箱,但是并未普及, 而且沒有明確說明舊衣物的去向[2]。
流入愛心捐贈(zèng)系統(tǒng)的舊衣物要保證可用性,達(dá)到足夠的衛(wèi)生水平,減輕倉(cāng)儲(chǔ)中的清洗消毒問題。對(duì)貧困地區(qū)的需求進(jìn)行調(diào)查,從周邊城市開始搜查貧困地區(qū),再逐漸擴(kuò)大化,避免出現(xiàn)某一地區(qū)的衣物堆積過多現(xiàn)象,同時(shí)能讓用戶明確舊衣物的去向。將舊衣物進(jìn)行捐贈(zèng)可以減少居民的存儲(chǔ)麻煩,而且?guī)屠е?,同時(shí)也實(shí)現(xiàn)舊衣物的再利用。
系統(tǒng)針對(duì)舊衣物丟棄造成資源浪費(fèi)和環(huán)境污染的問題,對(duì)舊衣舊物資源回收過程進(jìn)行管理,對(duì)回收過程中所出現(xiàn)的實(shí)際問題進(jìn)行探究設(shè)計(jì),解決貧困地區(qū)得不到充分的衣物供給等問題。 愛心捐贈(zèng)系統(tǒng)能有效地解決舊衣舊物的回收再且最大化利用,同時(shí)節(jié)省捐贈(zèng)者的時(shí)間,還可以將對(duì)捐贈(zèng)者來說沒有價(jià)值的衣物兌換成有價(jià)值的物品。 受贈(zèng)方可以無償獲得衣物資源。
系統(tǒng)利用Struts2+Spring+Hibernate 框架整合開發(fā),前端使用靜態(tài)網(wǎng)頁加JSP 的技術(shù)并運(yùn)用JSTL 標(biāo)簽庫簡(jiǎn)化了應(yīng)用程序的開發(fā)[3]。 SSH 框架的使用使得代碼具有良好的解耦性和可擴(kuò)展性,使應(yīng)用程序具備適應(yīng)大規(guī)模用戶同時(shí)在線的能力。
系統(tǒng)利用MVC 設(shè)計(jì)模式,將整個(gè)項(xiàng)目分為模型、試圖和控制器3 個(gè)層次。 JSP 技術(shù)在實(shí)際應(yīng)用過程中,不僅可以提高網(wǎng)頁開發(fā)效率,還可以保證質(zhì)量[4]。 使用其實(shí)現(xiàn)前端動(dòng)態(tài)頁面,并將其部署于網(wǎng)絡(luò)服務(wù)器上,可以響應(yīng)客戶端發(fā)送的請(qǐng)求,并根據(jù)請(qǐng)求內(nèi)容動(dòng)態(tài)地生成HTML、XML 或其他格式文檔的Web 頁面,然后返回給請(qǐng)求者[5-7]。
系統(tǒng)采用Eclipse 集成開發(fā)環(huán)境,Java 編程完成系統(tǒng)的各個(gè)功能的實(shí)現(xiàn),利用JSP 實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁的管理,網(wǎng)站開發(fā)過程相對(duì)簡(jiǎn)潔,使用少量的手寫代碼,簡(jiǎn)化實(shí)現(xiàn)對(duì)站點(diǎn)的編輯和管理。
回收舊衣物并通過有效方法捐贈(zèng)給貧困地區(qū)是愛心捐贈(zèng)系統(tǒng)的研究宗旨。 捐贈(zèng)者可將自己的舊衣物清洗干凈,登錄愛心捐贈(zèng)系統(tǒng),通過拍照?qǐng)D片和填寫捐贈(zèng)種類、數(shù)量和新舊程度信息后上傳到系統(tǒng)中。經(jīng)過管理員審核認(rèn)證后,可以通過快遞員上門取件或自行送到指定地點(diǎn)兩種方式將想要捐贈(zèng)的物品送出。 成功送出衣物后,系統(tǒng)自動(dòng)保存用戶的捐贈(zèng)訂單和狀態(tài),方便捐贈(zèng)者查看。 當(dāng)捐贈(zèng)的衣物積累到一定數(shù)量時(shí),通過聯(lián)系貧困地區(qū)寄出相應(yīng)的捐贈(zèng)品,同時(shí)更新捐贈(zèng)訂單的狀態(tài)。 本系統(tǒng)涉及到訂單商品管理表(orderitem)、連接商品表(goods)和訂單表(order),商品id 和訂單id 為訂單商品管理表的外鍵,實(shí)現(xiàn)每個(gè)訂單擁有對(duì)應(yīng)商品,有利于取數(shù)據(jù)庫的維護(hù)管理。 管理員(admin)具有對(duì)所有用戶信息(user)及物品信息的管理功能。 此外,數(shù)據(jù)庫中還有獎(jiǎng)品分類表(catelog),公告表(gonggao)和用戶留言表(liuyan)等,這些數(shù)據(jù)表之間的關(guān)系如圖1 所示。

圖1 數(shù)據(jù)庫表關(guān)系圖Fig. 1 The relationships diagram of database tables
系統(tǒng)由兩部分組成:客戶端和后臺(tái)服務(wù)器端??蛻舳俗鳛樾畔⒄故竞徒换サ钠脚_(tái),主要包括我的信息、捐獻(xiàn)、論壇分享、積分兌換專區(qū)4 個(gè)功能模塊。服務(wù)器端由用戶信息管理、積分管理、訂單管理和系統(tǒng)設(shè)置4 個(gè)主要模塊構(gòu)成。
客戶端主要功能:
(1)我的信息。 個(gè)人信息,捐贈(zèng)記錄,積分查看,聯(lián)系客服,積分兌換規(guī)則。
(2)捐獻(xiàn)。 捐贈(zèng)分類(每個(gè)注冊(cè)的用戶可選擇捐贈(zèng)衣物的種類和件數(shù)),選擇捐贈(zèng)地區(qū),預(yù)約回收時(shí)間(也可根據(jù)用戶需求更改捐獻(xiàn)時(shí)間),取消捐獻(xiàn)等。
(3)論壇分享。 用戶可以在這個(gè)頁面分享自己的捐贈(zèng)經(jīng)歷與捐贈(zèng)心得,并且與其他用戶進(jìn)行交流溝通。
(4)積分專區(qū)。 顯示出每一種物品兌換0 所需要的積分,兌換功能(用戶可根據(jù)自己所得積分兌換相應(yīng)物品)。
服務(wù)器端主要功能:
(1)用戶信息管理。 儲(chǔ)存管理用戶基本信息。
(2)積分管理。 記錄每一次捐獻(xiàn)獲得的積分時(shí)間,積分詳情,捐獻(xiàn)記錄列表接口。
(3)訂單管理。 對(duì)客戶端提交的捐獻(xiàn)訂單進(jìn)行管理,完成訂單的相關(guān)信息的管理。
(4)系統(tǒng)設(shè)置。 后臺(tái)維護(hù)和升級(jí),防火墻的設(shè)置,設(shè)置對(duì)應(yīng)級(jí)別的人員管理權(quán)限。
系統(tǒng)的功能圖如圖2 所示。

圖2 愛心捐贈(zèng)系統(tǒng)的功能圖Fig. 2 The function diagram of love donation system
捐贈(zèng)者登錄時(shí)通過Ajax 異步加載其各功能部分通過TUserDao.findById 方法取得數(shù)據(jù),并以Json 輸出實(shí)現(xiàn)那動(dòng)態(tài)頁面的加載。 在捐贈(zèng)者對(duì)系統(tǒng)進(jìn)行操作時(shí),實(shí)現(xiàn)瀏覽器動(dòng)態(tài)加載的效果,Struts2 框架對(duì)Ajax 提供支持,只需要調(diào)用action 中的getter 方法就能獲取到相應(yīng)的值,使系統(tǒng)在對(duì)請(qǐng)求action 的處理上更加靈活。減輕了系統(tǒng)接收請(qǐng)求的負(fù)擔(dān),登錄后跳轉(zhuǎn)到系統(tǒng)首頁,如圖3 所示,系統(tǒng)首頁公告由后臺(tái)統(tǒng)一管理。

圖3 客戶端主頁面Fig. 3 Main interface of client
選擇進(jìn)入兌換頁面,確認(rèn)要兌換物品,服務(wù)器利用 goodsAction ( ), 將 獲 取 的 goodsID 調(diào) 用getHibernateTemplate(),再通過數(shù)據(jù)庫查詢函數(shù)"from TGoods where goodsDel='no' and goodsCatelogId=? order by goodsCatelogId 獲取商品ID 對(duì)應(yīng)信息,由service 返回結(jié)果,跳轉(zhuǎn)到goodsDetail.jsp 兌換頁面,顯示兌換的物品詳細(xì)描述。 響應(yīng)確認(rèn)按鈕,調(diào)用buy1()函數(shù),將接收到的數(shù)值交互給action。 服務(wù)器端利用ResquestBody 實(shí)現(xiàn)接收HTTP 請(qǐng)求的數(shù)據(jù),將數(shù)據(jù)轉(zhuǎn)化為Java 對(duì)象進(jìn)行計(jì)算,為訂單做一個(gè)自動(dòng)增長(zhǎng)的表,用表里自動(dòng)增長(zhǎng)field 生成訂單號(hào),action 層處理請(qǐng)求通過service()接口實(shí)現(xiàn)數(shù)據(jù)通信,通過Response 響應(yīng)給客戶端,更新訂單頁面。
服務(wù)器端界面由上端標(biāo)題、左側(cè)功能導(dǎo)航欄以及右側(cè)工作區(qū)構(gòu)建。 客戶端發(fā)送請(qǐng)求,服務(wù)器端生成XMLHttpRequest 對(duì)象通過請(qǐng)求url,利用Method中的Post 方法向服務(wù)器發(fā)送請(qǐng)求,將返回值壓入棧中,并以Json 的輸出,將得到的字符串賦值在生成的樹中,實(shí)現(xiàn)客戶端頁面更新。 在Dao 層中,Hibernate 自動(dòng)生成SQL 語句,實(shí)現(xiàn)TAdminDAO、TCatelogDAO、TGoodsDAO、TLiuyanDAO、TUserDAO類的方法。 在Service 層中,所有實(shí)現(xiàn)類都放到Spring 中管理,由Spring 創(chuàng)建數(shù)據(jù)庫連接池,調(diào)用Dao 層方法定義需要調(diào)用方法所屬類的接口,而后添加get/set 方法,Spring 管理事務(wù)。 在Action 層中,Action 組織Service,由前端獲取用戶輸入值,發(fā)送給Action,Service 返回結(jié)果,進(jìn)行頁面跳轉(zhuǎn)。 服務(wù)器端界面設(shè)計(jì)如圖4 所示。

圖4 服務(wù)器端界面Fig. 4 Interface of server side
系統(tǒng)針對(duì)舊衣舊物資源回收所出現(xiàn)的實(shí)際問題進(jìn)行探究設(shè)計(jì),有效地解決舊衣舊物的回收再利用,實(shí)現(xiàn)其最大化利用。 對(duì)于捐贈(zèng)者不僅節(jié)省時(shí)間而且可以將對(duì)自己沒有價(jià)值的衣物兌換成有價(jià)值的物品。受贈(zèng)方可以無償獲得所需的衣物。 系統(tǒng)采用目前比較成熟的框架結(jié)構(gòu)及開發(fā)工具,在一定程度上減輕了開發(fā)的負(fù)擔(dān)。 客戶端利用Ajax 技術(shù)動(dòng)態(tài)加載用戶登陸后的頁面,提高程序的加載效率和加快頁面的加載速度,減少了響應(yīng)時(shí)間。 采用MySQL 數(shù)據(jù)庫,服務(wù)穩(wěn)定而且有利于后期的維護(hù)。 服務(wù)器端與客戶端采用POST 請(qǐng)求方式進(jìn)行數(shù)據(jù)交互,返回值由Json 格式輸出。 該系統(tǒng)為舊衣物的回收再利用提供了新思路。