劉瑾
摘要:該系統(tǒng)基于B/S架構(gòu),采用Spring+SpringMVC+Mybatis框架。購(gòu)物平臺(tái)主要實(shí)現(xiàn)用戶登錄注冊(cè)、查詢商品信息、商品詳細(xì)信息介紹、加入購(gòu)物車、下訂單以及支付等功能。后臺(tái)管理員主要職責(zé)是用戶管理,商品管理,訂單管理等。該系統(tǒng)性能穩(wěn)定、易擴(kuò)展,易維護(hù)。
關(guān)鍵詞:Spring;SpringMVC;Mybatis;購(gòu)物平臺(tái)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
1背景
隨著互聯(lián)網(wǎng)的迅速普及以及電子商務(wù)的飛速發(fā)展,網(wǎng)上購(gòu)物已經(jīng)成為很多消費(fèi)者,尤其是年輕一代消費(fèi)群體所接受和青睞的消費(fèi)模式。本網(wǎng)絡(luò)購(gòu)物平臺(tái)采用主流的MVC模式和Spring+SpringMVC+Mybatis框架,SSM的配置越來(lái)越輕量級(jí),注解開發(fā)發(fā)揮到極致,ORM實(shí)現(xiàn)更加靈活,且SQL優(yōu)化更簡(jiǎn)便。三層架構(gòu)使顯示模塊與功能模塊分離,提高了程序的可維護(hù)性、可移植性、可擴(kuò)展性與可重用性,具備了良好的容錯(cuò)能力和負(fù)載平衡能力。
2系統(tǒng)的分析和設(shè)計(jì)
2.1開發(fā)技術(shù)分析
本系統(tǒng)是基于MVC模式下的多層結(jié)構(gòu)應(yīng)用系統(tǒng)。主要使用Spring+SpringMVC+Mybatis框架開發(fā)。
MVC是模型(model)-視圖(view)-控制器(controller)的縮寫,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫業(yè)務(wù)邏輯。
Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。其大小與開銷是輕量的。Spring通過(guò)控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。Spring提供了面向切面編程的豐富支持,允許通過(guò)分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)進(jìn)行內(nèi)聚性的開發(fā)。Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,可以配置每個(gè)bean如何被創(chuàng)建。Spring可以將簡(jiǎn)單的組件配置組合成為復(fù)雜的應(yīng)用。
MyBatis是一款優(yōu)秀的持久層框架,它支持定制化SQL、存儲(chǔ)過(guò)程以及高級(jí)映射。MyBatis避免了幾乎所有的JDBC代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis可以使用簡(jiǎn)單的XML或注解來(lái)配置和映射原生信息,將接口和Java的POJOs映射成數(shù)據(jù)庫(kù)中的記錄。
2.2需求分析
網(wǎng)上購(gòu)物平臺(tái)主要由前臺(tái)買家購(gòu)物模塊和后臺(tái)管理員管理模塊組成。買家注冊(cè)后可以瀏覽商品,當(dāng)看到心儀的商品后可以點(diǎn)擊商品進(jìn)入詳細(xì)頁(yè)面,在商品詳細(xì)頁(yè)面里可以添加商品到購(gòu)物車,或者直接購(gòu)買商品。訂單提交完成后,用戶可以查看訂單,取消訂單,付款。后臺(tái)管理員登錄后,可以對(duì)商品信息進(jìn)行增、刪、改、查操作,也可以查看訂單信息和用戶信息,對(duì)訂單信息進(jìn)行狀態(tài)修改,設(shè)置網(wǎng)站前臺(tái)的廣告內(nèi)容。管理員是不需要注冊(cè)的,其賬號(hào)是系統(tǒng)設(shè)置的。
系統(tǒng)具體功能如下:
1)用戶注冊(cè)、登錄;
2)瀏覽、搜索商品,查看商品詳細(xì)信息;
3)加入購(gòu)物車;
4)提交訂單、取消訂單、付款;
5)用戶評(píng)價(jià);
6)管理員對(duì)用戶信息、訂單信息進(jìn)行查看和修改;
7)管理員對(duì)商品信息進(jìn)行增加、刪除、修改、查詢等管理。
2.3數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)是軟件開發(fā)系統(tǒng)的基礎(chǔ)及核心,設(shè)計(jì)的質(zhì)量直接關(guān)系到軟件系統(tǒng)開發(fā)的成敗。本系統(tǒng)選擇mysql數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)主要由7張表組成,分別是:
1)用戶表(user):該表用于存儲(chǔ)用戶信息,包括用戶id、用戶名、登錄密碼、電話、郵箱、注冊(cè)時(shí)間、使用狀態(tài)、賬戶余額、地址等字段。
2)商品分類表(category):該表用于存放商品的分類信息,包括類目id、類目名稱、父類id等字段。
3)商品表(product):該表用于存放商品的基本信息,包括商品id、商品名稱、類別id、商品狀態(tài)、數(shù)量、單價(jià)等字段。
4)訂單表(order):該表用于存放每個(gè)用戶的訂單信息,包括訂單id、用戶id、訂單明細(xì)id,金額、創(chuàng)建時(shí)間,付款時(shí)間、發(fā)貨時(shí)間、狀態(tài)、評(píng)價(jià)、收貨人姓名、收貨人電話、收貨人地址、物流編號(hào)等字段。
5)訂單明細(xì)表(item):該表用于存放訂單的商品明細(xì),包括訂單明細(xì)id、訂單id、商品id、數(shù)量等字段。
6)支付表(payment):該表用于存放訂單支付的詳細(xì)信息,包括支付單號(hào),訂單號(hào)、日期、用戶id、交易狀態(tài)、支付類型等字段。
7)廣告表(ad):該表用于存放網(wǎng)站前臺(tái)的廣告鏈接和圖片鏈接,包括id、標(biāo)題、內(nèi)容、鏈接、圖片、狀態(tài)、排序等字段。
3系統(tǒng)實(shí)現(xiàn)
3.1用戶注冊(cè)登錄
在用戶注冊(cè)頁(yè)面,用戶輸入用戶名和密碼,瀏覽器會(huì)通過(guò)Ajax將用戶名和密碼傳到后臺(tái)控制器,后臺(tái)調(diào)用userAdd方法,在數(shù)據(jù)庫(kù)中查找該用戶名是否已經(jīng)被注冊(cè)。如果已存在,提示注冊(cè)失敗;如果不存在,則數(shù)據(jù)被保存到數(shù)據(jù)庫(kù)中。用戶登錄時(shí),后臺(tái)調(diào)用Controller中對(duì)應(yīng)的方法在數(shù)據(jù)庫(kù)中進(jìn)行數(shù)據(jù)的查找,如果用戶名、密碼一致則登錄成功,否則登錄失敗。
3.2商品搜索
在商品搜索中,引入了PageHelper包,代碼通過(guò)findPage方法,把查詢條件封裝成TbBrand類,這樣減少了代碼的重復(fù)率,大大增加了開發(fā)效率。TbBrandExample是PageHelper提供的查詢條件類,原理就是根據(jù)設(shè)置的屬性去拼接SQL,達(dá)到條件查詢的目的。
3.3加入購(gòu)物車
用戶在選擇加入購(gòu)物車時(shí)會(huì)出現(xiàn)兩種情況,一種是已經(jīng)登錄的情況,另一種是沒(méi)有登錄的情況。如果用戶沒(méi)有登錄,系統(tǒng)進(jìn)入登錄頁(yè)面提示登錄。如果用戶已登錄,系統(tǒng)判斷cookie里是否存在購(gòu)物車數(shù)據(jù),如果有就拿出來(lái)放到redis里。
3.4管理員管理
管理員的賬號(hào)設(shè)置并沒(méi)有選擇在數(shù)據(jù)庫(kù)里,而是使用SpringSecurity設(shè)置在XML里。管理員對(duì)數(shù)據(jù)的管理主要實(shí)現(xiàn)了數(shù)據(jù)的增、刪、改、查和分頁(yè)查詢,增刪改查是通過(guò)Mybatis的逆向工程生成mapper和SQL,通過(guò)創(chuàng)建criteria對(duì)象進(jìn)行條件查詢;另外后端分頁(yè)采用PageHelper插件,只需要前臺(tái)傳來(lái)pageNum和PageSize參數(shù)即可快速實(shí)現(xiàn)分頁(yè),簡(jiǎn)化了開發(fā)步驟。
4結(jié)束語(yǔ)
本文主要針對(duì)網(wǎng)絡(luò)購(gòu)物平臺(tái)的開發(fā)進(jìn)行了技術(shù)和需求的分析、結(jié)構(gòu)和數(shù)據(jù)庫(kù)的設(shè)計(jì),介紹了具體實(shí)現(xiàn)過(guò)程。通過(guò)測(cè)試,該系統(tǒng)性能穩(wěn)定、可靠,具有較強(qiáng)的可擴(kuò)展性。