岳紹敏+王國春+董亞則+成錦暉
摘要:傳統(tǒng)的電子商務網(wǎng)站的開發(fā)周期比較長,而且運營之后經(jīng)常出現(xiàn)難以擴展、可維護性不高等問題。論文對Spring MVC進行了深入的研究,并基于它來構建了一個電子商務網(wǎng)站,使得電商網(wǎng)站具有良好的框架結構,對以后的維護和擴展工作提供了方便。
關鍵詞:spring MVC;estore;電子商務;freemarker
中圖分類號:TP39 文獻標識碼:A
The Research and Design of Electric Business Platform Based on Spring MVC Framework
YUE Shaomin,WANG Guochun,DONG Yaze,CHENG Jinhui
(College of Computer Science and Engineering,Changchun University of Technology,Changchun 130012,China)
Abstract:Traditional development cycle of ecommerce website is long.And it is difficult to extend,low maintainability after operation usually.Paper makes a deep study of Spring MVC,and based on which builds an ecommerce site,which makes ecommerce sites have good frame structure,and convenience is provided for future maintenance and extension work.
Keywords:spring MVC;estore;electronic commerce;freemarker
1 引言(Introduction)
隨著互聯(lián)網(wǎng)寬帶技術應用的成熟,以及物流和支付系統(tǒng)的完善,電子商務成為互聯(lián)網(wǎng)普及應用的主流,影響著千家萬戶的生活和經(jīng)濟行為,并日益成為社會商業(yè)活動的重要形式。因此,各行業(yè)均希望可以快速展開網(wǎng)上營銷渠道。新形式下,電商網(wǎng)站開發(fā)人員如何縮短開發(fā)周期,進一步提高工作效率,是每一個程序員所面臨的問題。各大WEB框架的出現(xiàn),使得電商網(wǎng)站服務器端邏輯的設計非常便利,利用它進行網(wǎng)站的開發(fā),可以節(jié)省很多的時間和精力。本文基于Spring MVC來構建一個電子商務網(wǎng)站,希望可以對讀者學習和使用Spring MVC建站產(chǎn)生一些幫助。
2 網(wǎng)上電商平臺Estore(Online electric business
platform estore)
2.1 Estore簡介
Estore是采用Java技術設計開發(fā)的網(wǎng)上電子商務平臺,采用了Spring MVC3、Hibernate3和Freemarker相結合的技術架構。繼承了Java高效、跨平臺、穩(wěn)定且安全等多方面的優(yōu)點[1],能夠支持Oracle、Sqlserver、Mysql等數(shù)據(jù)庫,統(tǒng)一在后臺管理網(wǎng)站的模板,用戶可利用標簽自定義顯示內(nèi)容和方式。
2.2 Estore的運行環(huán)境
Estore原則上支持全系列JAVA運行環(huán)境、數(shù)據(jù)庫,主要使用以下環(huán)境:
(1)WEB服務器:Weblogic、Tomcat、WebSphere、JBoss等。
(2)數(shù)據(jù)庫服務器:Oracle、Mysql、SqlServer、DB2等。
(3)操作系統(tǒng):Windows、Linux、Unix等。
3 基于Spring MVC的電商平臺的設計與開發(fā)
(The design and development of electric business
platform based on the spring MVC )
3.1 Spring MVC簡介
3.1.1 Spring MVC架構
Spring MVC的整體架構如圖1所示[2],視圖層采用Html或Jsp實現(xiàn);控制層采用Servlet實現(xiàn),整個框架采用同一個Servlet,以實現(xiàn)請求的中轉(zhuǎn);模型層采用Java實現(xiàn),主要決定用來做什么;在模型層后面添加了一個DAO,目的是將決定做什么和具體怎么做分開。
圖1 Spring MVC的架構
Fig.1 The architecture of spring MVC
整個Web框架大致的流程是:首先客戶端發(fā)送請求,提交Html或Jsp頁面給中轉(zhuǎn)器(Servlet);中轉(zhuǎn)器按照客戶的請求,選擇相應的模型層,即Logic進行相應的邏輯處理;如果需要使用數(shù)據(jù)庫,則通過DAO進行相應的數(shù)據(jù)庫操作。
3.1.2 Spring MVC重要組件
圖2 Spring MVC的組件
Fig.2 The component of spring MVC
Spring MVC的組件如圖2所示[3]。
(1)Spring MVC將所有的請求都提交給DispatcherServlet,它會委托應用系統(tǒng)的其他模塊負責對請求進行真正的處理工作。
(2)DispatcherServlet查詢一個或多個HandlerMapping,找到處理請求的Controller。
(3)DispatcherServlet把請求提交到目標Controller。
(4)Controller進行業(yè)務邏輯處理后,會返回一個ModelAndView。
(5)Dispathcher查詢一個或多個ViewResolver視圖解析器,找到ModelAndView對象指定的視圖對象。
(6)視圖對象負責渲染并返回給客戶端。
3.2 Hibernate框架
3.2.1 Hibernate簡介
Hibernate是一個開源免費的Java包,它使得程序與數(shù)據(jù)庫的交互變得十分容易,更加符合面向?qū)ο蟮脑O計思想[4]。Hibernate使開發(fā)者可以專注于應用程序的對象和功能,而不用關心如何保存它們或查找這些對象。
在對SQL語句完全不了解的情況下,使用Hibernate仍然可以開發(fā)出優(yōu)秀的包含數(shù)據(jù)庫訪問的應用程序。
3.2.2 Hibernate運行過程
圖3 Hibernate運行過程
Fig.3 The running process of hibernate
Hibernate的運行過程如圖3所示。
應用程序先調(diào)用Configuration類,該類讀取Hibernate配置文件及映射文件中的信息,并用這些信息生成一個SessionFactory對象,然后從SessionFactory對象生成一個Session對象,并用Session對象生成Transaction對象。可通過Session對象的get()、load()、save()、update()、delete()和saveOrUpdate()等方法對PO(persistent object持久對象)進行加載、保存、更新、刪除等操作。
在查詢的情況下,可通過Session對象生成一個Query對象,然后利用Query對象執(zhí)行查詢操作:如果沒有異常,Transaction對象將提交這些操作到數(shù)據(jù)庫中;如果有異常,則執(zhí)行回滾操作。
endprint
3.3 Freemarker簡介
FreeMarker是一個模板引擎[5],它由Java語言編寫而成,基于模板來生成文本輸出。FreeMarker與Web容器沒有關系,即Web運行時,并不知道HTTP或Servlet。它不僅能夠用于表現(xiàn)層的實現(xiàn),而且還可以用于生成Xml、Jsp或Java等。FreeMarker允許Java servlet保持圖形設計與應用程序邏輯的分離,這是通過在模板中封裝Html完成的。模板用Servlet提供的數(shù)據(jù)動態(tài)地生成Html。模板語言是直觀且強大的,編譯器的速度快,輸出接近靜態(tài)HTML頁面的速度。
雖然FreeMarker具有一些編程的能力,但通常由Java程序負責要顯示的數(shù)據(jù),由FreeMarker生成頁面,通過模板來顯示數(shù)據(jù)。
下面是用Freemarker來做的一個顯示頁面:
3.4 按Spring MVC框架分層設計電商平臺
3.4.1 Dao層
Dao層分析模塊所要涉及的表,確定表之間的關系,編寫Hibernate Mapping文件和持久化類,它使用Hibernate連接數(shù)據(jù)庫、操作數(shù)據(jù)庫(增刪改查)。根據(jù)模塊需要的各種持久化操作,確定對應的方法,據(jù)此來編寫Dao接口和實現(xiàn)類。
3.4.2 Entity層
Entity層是實體類層,也屬于MVC中的model層,它的主要功能是把用戶提交過來的參數(shù)封裝成一個對象給Dao層也就是Hibernate操作。
3.4.3 Service層
引用對應的Dao數(shù)據(jù)庫操作,在這里可以編寫自己需要的代碼(比如簡單的判斷、校驗等操作)。
3.4.4 Action層
引用對應的Service層,在這里依據(jù)配置文件,跳轉(zhuǎn)到指定的頁面,當然也能接受頁面?zhèn)鬟f的請求數(shù)據(jù),也可以做些計算處理。
3.4.5 顯示層
一個或多個HTML頁面為模型提供數(shù)據(jù)顯示,HTML頁面主要使用HTML標記和Freemarker標簽來顯示數(shù)據(jù)。
綜上所述,各層之間的關系為:action調(diào)用service中的方法,service調(diào)用dao中的方法,調(diào)用時的參數(shù)使用entity傳遞,最后把結果顯示在HTML界面,以響應用戶請求。
4 Estore的個性化功能(Personalization capabilities
of estore )
4.1 Estore標簽的執(zhí)行流程
標簽是Estore中的一個重要概念,利用它可以執(zhí)行許多操作,比如對搜索結果分頁、獲得商品品牌的列表、獲得商品子欄目的列表等,它的執(zhí)行流程如下:
(1)訪問某個頁面(如:頁頭導航欄.html),瀏覽器執(zhí)行解析代碼,執(zhí)行到標簽時跳轉(zhuǎn)到后臺estore-context.xml文件。
(2)estore-context.xml文件中,假如有
(3)到后臺執(zhí)行CategoryListDirective類中默認方法execute(如:[@shop_Category parentId=category.id],參數(shù):父類別ID parentId)。
(4)CategoryListDirective類鏈接數(shù)據(jù)庫,獲取目標數(shù)據(jù)并放入Map集合:
如:Map
(5)將獲取的目標數(shù)據(jù)返回給前臺,通過標簽展示:
[@shop_Category]
[#list tag_list as ctg]
[/#list]
[/@shop_Category]
4.2 制作“商業(yè)廣告位”
一幅色彩絢麗、形象生動的廣告作品,能以其非同凡響的美感力量增強廣告的感染力,使消費者沉浸在商品和服務形象給予的愉悅中,使其自覺接受廣告的引導。在Estore平臺上,可以為網(wǎng)站的首頁添加一個“商業(yè)廣告位”,具體步驟如下:
(1)在系統(tǒng)后臺的“輔助”中的菜單“廣告版位”,添加一個“版位”,(如:頁中廣告)。
注意:記錄下此時的“ID”(如ID=6)。
(2)“廣告管理”中,修改“頁中廣告”,選擇圖片之后,改一下圖片地址,去掉“/u”(如:把‘/u/201403/231829044ug5.jpg變?yōu)椤?201403/231829044ug5.jpg)。
(3)在“WEB-INF store plinclude”下,新建文件“頁中廣告位.html”,內(nèi)容如下:
注意:此處的ID,其值取自第(1)步中的ID。
(4)在“首頁”相應的廣告位置,加入如下語句:[#include "../include/頁中廣告位.html"/]。
至此,即在網(wǎng)站首頁添加了一個“商業(yè)廣告位”,根據(jù)客戶的需求,只需要更改后臺的廣告圖片,即可在網(wǎng)站首頁看到客戶的廣告宣傳。
4.3 Estore的后臺處理流程
當用戶剛接觸Estore時,可能對其后臺的處理流程有點頭痛,不知道應該如何學習,常常會感覺到無從下手,本文以訪問后臺的主界面為例,特在此做出一個簡要的介紹,用戶可以按照以下步驟來了解其處理過程:
(1)用戶查看瀏覽器端的訪問請求路徑,看要訪問資源的后綴名,如“http://localhost:8080/storeOracle/eadmin/estore/index.do”的后綴名為“*.do”。
注意:“eadmin/estore/”是虛擬訪問路徑,它在web.xml中設置。
(2)web.xml文件的重要標簽:
注意:①因為擴展名為“.do”,所以找到值為“/eadmin/estore/*”的
②“eadmin/estore/”是虛擬訪問路徑,在此處設置。
(3)去所有的action文件里找到相應“@RequestMapping”的value等于“index.do”的方法,看該方法返回什么字符串(如:“l(fā)ogin”)。
(4)去estore-servlet-admin.xml中找到id="freemarkerViewResolver"的bean,該bean中name分別為“prefix”、“suffix”的
(5)登錄頁login.html會向名叫“index.do”的action發(fā)送請求,按照步驟(3)和(4)操作后,可以直接訪問文件“/estore_sys/index.html”。
(6)文件“/estore_sys/index.html”里嵌套有“主體框架”:
(7)在main.html里,又有左右兩部分frame:
至此,Estore系統(tǒng)后臺的主界面全部形成。
5 結論(Conclusion)
通過研究可以證明,利用Spring MVC可以快速地開發(fā)一個具有良好架構的電子商務網(wǎng)站,并且易于維護、支持擴展,這大大地提高了建站的效率,節(jié)省了大量的時間和精力。同時,電子商務網(wǎng)站的開發(fā)還應考慮安全支付、快速物流等問題,這是今后需要研究的對象。
參考文獻(References)
[1] Java 2 Platform,Enterprise Edition Specification Version l.2[EB/0L].http://java.sun.com/J2ee/docus.Htm,2014-05-23.
[2] 陸榮幸,等.J2EE平臺上MVC設計模式的研究與實現(xiàn)[J].計算機應用研究,2003,3:144-146.
[3] 何成萬,余秋惠.MVC模型2及軟件框架Struts的研究[J].計算機工程,2002,6:274-281.
[4] 高昂,衛(wèi)文學.基于Hibernate與Struts框架的數(shù)據(jù)持久化應用研究[J].計算機應用,2005,12:2817-2820.
[5] 冷威龍.Freemarker[EB/OL].http://baike.baidu.com/view/1278430.htm,2014-05-23.
作者簡介:
岳紹敏(1988-),男,碩士研究生在讀.研究領域:智能系統(tǒng).
王國春(1978-),男,碩士,講師.研究領域:軟件工程與智能系統(tǒng).
董亞則(1982-),女,碩士,講師.研究領域:軟件工程.
成錦暉(1989-),男,碩士研究生在讀.研究領域:軟件工程,智能計算.
注意:此處的ID,其值取自第(1)步中的ID。
(4)在“首頁”相應的廣告位置,加入如下語句:[#include "../include/頁中廣告位.html"/]。
至此,即在網(wǎng)站首頁添加了一個“商業(yè)廣告位”,根據(jù)客戶的需求,只需要更改后臺的廣告圖片,即可在網(wǎng)站首頁看到客戶的廣告宣傳。
4.3 Estore的后臺處理流程
當用戶剛接觸Estore時,可能對其后臺的處理流程有點頭痛,不知道應該如何學習,常常會感覺到無從下手,本文以訪問后臺的主界面為例,特在此做出一個簡要的介紹,用戶可以按照以下步驟來了解其處理過程:
(1)用戶查看瀏覽器端的訪問請求路徑,看要訪問資源的后綴名,如“http://localhost:8080/storeOracle/eadmin/estore/index.do”的后綴名為“*.do”。
注意:“eadmin/estore/”是虛擬訪問路徑,它在web.xml中設置。
(2)web.xml文件的重要標簽:
注意:①因為擴展名為“.do”,所以找到值為“/eadmin/estore/*”的
②“eadmin/estore/”是虛擬訪問路徑,在此處設置。
(3)去所有的action文件里找到相應“@RequestMapping”的value等于“index.do”的方法,看該方法返回什么字符串(如:“l(fā)ogin”)。
(4)去estore-servlet-admin.xml中找到id="freemarkerViewResolver"的bean,該bean中name分別為“prefix”、“suffix”的
(5)登錄頁login.html會向名叫“index.do”的action發(fā)送請求,按照步驟(3)和(4)操作后,可以直接訪問文件“/estore_sys/index.html”。
(6)文件“/estore_sys/index.html”里嵌套有“主體框架”:
(7)在main.html里,又有左右兩部分frame:
至此,Estore系統(tǒng)后臺的主界面全部形成。
5 結論(Conclusion)
通過研究可以證明,利用Spring MVC可以快速地開發(fā)一個具有良好架構的電子商務網(wǎng)站,并且易于維護、支持擴展,這大大地提高了建站的效率,節(jié)省了大量的時間和精力。同時,電子商務網(wǎng)站的開發(fā)還應考慮安全支付、快速物流等問題,這是今后需要研究的對象。
參考文獻(References)
[1] Java 2 Platform,Enterprise Edition Specification Version l.2[EB/0L].http://java.sun.com/J2ee/docus.Htm,2014-05-23.
[2] 陸榮幸,等.J2EE平臺上MVC設計模式的研究與實現(xiàn)[J].計算機應用研究,2003,3:144-146.
[3] 何成萬,余秋惠.MVC模型2及軟件框架Struts的研究[J].計算機工程,2002,6:274-281.
[4] 高昂,衛(wèi)文學.基于Hibernate與Struts框架的數(shù)據(jù)持久化應用研究[J].計算機應用,2005,12:2817-2820.
[5] 冷威龍.Freemarker[EB/OL].http://baike.baidu.com/view/1278430.htm,2014-05-23.
作者簡介:
岳紹敏(1988-),男,碩士研究生在讀.研究領域:智能系統(tǒng).
王國春(1978-),男,碩士,講師.研究領域:軟件工程與智能系統(tǒng).
董亞則(1982-),女,碩士,講師.研究領域:軟件工程.
成錦暉(1989-),男,碩士研究生在讀.研究領域:軟件工程,智能計算.
注意:此處的ID,其值取自第(1)步中的ID。
(4)在“首頁”相應的廣告位置,加入如下語句:[#include "../include/頁中廣告位.html"/]。
至此,即在網(wǎng)站首頁添加了一個“商業(yè)廣告位”,根據(jù)客戶的需求,只需要更改后臺的廣告圖片,即可在網(wǎng)站首頁看到客戶的廣告宣傳。
4.3 Estore的后臺處理流程
當用戶剛接觸Estore時,可能對其后臺的處理流程有點頭痛,不知道應該如何學習,常常會感覺到無從下手,本文以訪問后臺的主界面為例,特在此做出一個簡要的介紹,用戶可以按照以下步驟來了解其處理過程:
(1)用戶查看瀏覽器端的訪問請求路徑,看要訪問資源的后綴名,如“http://localhost:8080/storeOracle/eadmin/estore/index.do”的后綴名為“*.do”。
注意:“eadmin/estore/”是虛擬訪問路徑,它在web.xml中設置。
(2)web.xml文件的重要標簽:
注意:①因為擴展名為“.do”,所以找到值為“/eadmin/estore/*”的
②“eadmin/estore/”是虛擬訪問路徑,在此處設置。
(3)去所有的action文件里找到相應“@RequestMapping”的value等于“index.do”的方法,看該方法返回什么字符串(如:“l(fā)ogin”)。
(4)去estore-servlet-admin.xml中找到id="freemarkerViewResolver"的bean,該bean中name分別為“prefix”、“suffix”的
(5)登錄頁login.html會向名叫“index.do”的action發(fā)送請求,按照步驟(3)和(4)操作后,可以直接訪問文件“/estore_sys/index.html”。
(6)文件“/estore_sys/index.html”里嵌套有“主體框架”:
(7)在main.html里,又有左右兩部分frame:
至此,Estore系統(tǒng)后臺的主界面全部形成。
5 結論(Conclusion)
通過研究可以證明,利用Spring MVC可以快速地開發(fā)一個具有良好架構的電子商務網(wǎng)站,并且易于維護、支持擴展,這大大地提高了建站的效率,節(jié)省了大量的時間和精力。同時,電子商務網(wǎng)站的開發(fā)還應考慮安全支付、快速物流等問題,這是今后需要研究的對象。
參考文獻(References)
[1] Java 2 Platform,Enterprise Edition Specification Version l.2[EB/0L].http://java.sun.com/J2ee/docus.Htm,2014-05-23.
[2] 陸榮幸,等.J2EE平臺上MVC設計模式的研究與實現(xiàn)[J].計算機應用研究,2003,3:144-146.
[3] 何成萬,余秋惠.MVC模型2及軟件框架Struts的研究[J].計算機工程,2002,6:274-281.
[4] 高昂,衛(wèi)文學.基于Hibernate與Struts框架的數(shù)據(jù)持久化應用研究[J].計算機應用,2005,12:2817-2820.
[5] 冷威龍.Freemarker[EB/OL].http://baike.baidu.com/view/1278430.htm,2014-05-23.
作者簡介:
岳紹敏(1988-),男,碩士研究生在讀.研究領域:智能系統(tǒng).
王國春(1978-),男,碩士,講師.研究領域:軟件工程與智能系統(tǒng).
董亞則(1982-),女,碩士,講師.研究領域:軟件工程.
成錦暉(1989-),男,碩士研究生在讀.研究領域:軟件工程,智能計算.