關鍵詞電子商務;實驗模擬系統;Java開源技術
1簡介
目前,在高校電子商務專業相關課程的教學中,迫切需要建立壹個電子商務實驗軟件平臺。平臺應實現包括B2C、C2C、B2B、電子數據交換(EDI)、現代物流應用系統、電子金融、安全電子交易身份認證等必要的軟件功能模塊。電子商務的快速發展對軟件開發技術提出了強有力的挑戰。由於電子商務復雜的內部邏輯、苛刻的安全要求和快速變化的業務規則,要求電子商務實驗模擬系統的開發技術功能強大且靈活,以滿足電子商務實驗教學的需要。
在電子商務系統的設計和開發中,有迫切需要解決的問題:可維護性、可擴展性、可測試性、可靠性、高性能和安全性。目前的N層軟件架構很好地解決了上述問題。系統通常分為表示層、業務邏輯層和持久存儲層。
J2EE規範從設計、集成、性能、安全和可靠性等方面為多層應用的開發提供了技術規範,如表示層、業務邏輯框架、持久性、事務、安全和日誌服務等。目前,符合J2EE規範的開源項目如雨後春筍般湧現,其中不乏優秀的技術。利用現有的優秀開源技術,可以大大降低應用系統的開發周期和成本,同時提高整個系統的靈活性。
2本系統使用的開源技術。
對於現有成熟的WEB應用框架,其解決的主要問題如下:
1)將客戶端網頁請求中的輸入數據封裝到壹個(請求的)數據對象中。
2)驗證WEB請求中數據的有效性。
3)根據不同的網頁請求,調度相應的業務邏輯對象進行處理,(請求的)數據對象作為參數傳入。
4)業務邏輯對象處理業務規則後返回結果數據對象。
5)通過表示層將結果數據對象中的數據展示給用戶。
6)業務實體的持久存儲。
WebWork2、Sitemesh、Hibernate、Junit、XDoclet、Ant等開源項目都是比較成熟的開源項目。該系統的設計和實現綜合利用了上述開源技術,很容易地解決了上述問題。
WebWork是由OpenSymphony開源組織開發的J2EE Web框架,致力於組件化和代碼重用。WebWork由Xwork1和WebWork2***組成。
Xwork1簡潔、靈活、功能強大。它是壹個標準的命令模式實現,並且與web層完全分離。Xwork提供了很多核心功能:前端攔截器、運行時表單屬性驗證、類型轉換、強大的表達式語言等等。攔截器就像壹個過濾網,用來攔截客戶端的調用,做壹些處理,比如檢查客戶端調用的合法性,實現安全策略,支持事務等。
WebWork2構建於Xwork之上,後者處理HTTP響應和請求。WebWork2使用ServletDispatcher將HTTP請求變成動作(業務邏輯對象由Action類調用完成業務處理),實現會話和應用範圍的映射,以及請求參數的映射。每個動作不依賴於任何層或任何容器。它們通過ActionContext使用請求和響應對象,從而將WEB層與邏輯層分開。Webwork的動作可以通過分配某些屬性值來運行,而無需啟動Web容器進行測試,這增強了WEB組件的可測試性。
WebWork2支持多視圖表示,視圖部分可以使用JSP、Velocity、FreeMarker、JasperReports、XML等。
在Web應用開發中,我們經常面臨如何保證輸入數據的合法性這壹令人頭痛的問題。對輸入數據的驗證有兩種方式:頁面Java腳本驗證和服務器執行邏輯代碼前的數據驗證。前者難以保證系統安全性,通常作為輸入數據驗證的輔助技術。
WebWork使用Xwork的驗證框架進行驗證處理,可以通過配置攔截器來激活。它可以為每個需要驗證的類指定壹個xml驗證文件,也可以在不同的情況下為壹個類指定不同的xml驗證文件。WebWork可以為每個動作類指定相應的驗證文件,也可以為動作類的屬性字段指定驗證文件。最後使用攔截器組裝動作及其驗證文件,使得邏輯層不需要考慮額外的數據驗證,簡化了業務處理邏輯。
Sitemesh也是opensymphony開源組織開發的j2ee應用框架之壹。主要用於管理網頁的布局,致力於為眾多頁面組成的大型網站提供統壹的樣式、導航和布局功能。SiteMesh通過過濾器攔截請求和響應,給原始頁面添加壹個裝飾器,然後將結果返回給客戶端,被裝飾的原始頁面並不知道SiteMesh的裝飾,從而避免了頁面之間相互包含而導致的頁面之間的耦合。
本系統采用面向對象的設計與實現,系統使用關系數據庫管理數據,因為系統中的持久對象需要用關系數據庫存儲,帶來了對象與關系之間的映射問題。關系表的記錄很難完全映射到持久對象的關系上,主要體現在多表的關系映射類型多樣,關聯數據表的數量難以確定。可能是壹個表映射多個持久對象,多個表映射壹個持久對象,更有可能是壹個表的壹些字段映射到壹個持久對象,而其他字段映射到其他持久對象。如果對象使用直接的數據庫操作訪問成員來實現持久化對象編程,那麽1: n關系的持久化對象對數據庫的查詢實際上就是1+n SQL,必然導致數據庫訪問效率的大幅下降。
Hibernate是持久層設計的最佳技術,優雅地解決了上述對象和關系的映射問題。它是開源免費的,API也是開放的。自身功能不夠用的時候,可以通過自己編碼來擴展。
Junit用於類模塊的單元測試。XDoclet和Ant是支持項目自動重構和文檔自動生成的優秀開源工具,可以大大提高程序員的工作效率和質量。
3系統總體設計
該系統的主要目標是實現電子商務系統的仿真,為教師和學生提供壹個進行相關實驗的軟件平臺。重點是模擬電子商務環境下交易和管理各方的業務流程,同時便於交易各方根據需要制定相應的業務規則。因此,系統的設計要能夠適應業務規則的變化,不必真實再現某些功能的實現,比如安全認證子系統中認證中心安全認證服務的實現。此外,系統還應加強實驗過程管理的功能設計,使師生能快速掌握實驗的過程和進度,並能自動處理實驗結果,提供相關查詢。
在壹個實驗中,學生通常在多個虛擬企業中扮演多種不同的業務角色,系統應提供快速角色轉換功能,以便學生輕松理解不同業務流程的相關操作之間的關系和交互。
基於上述目標,系統分為兩個子系統:業務系統和實驗系統。
業務系統分為五個二級子系統:電子銀行系統、認證系統、交易系統、企業業務管理系統和物流系統。實驗系統分為兩個子系統:學生自助系統和學生實驗管理系統。
在每個子系統中,根據不同的操作員角色劃分子模塊,如“交易系統”(系統結構如圖1所示),分為交易大廳、會員企業後臺管理、交易中心後臺管理三個子系統。在會員企業後臺管理中,可以根據當前學員所承擔的業務角色,列出所涉及的多個企業供其選擇。整個系統采用單點登錄驗證,減少了學生在使用各模塊功能時的登錄操作,避免了壹些流行的實驗模擬系統需要學生記住多個密碼,在同壹個實驗中重復登錄的問題,使學生更加關註業務流程,提高了實驗效率。
圖1交易系統結構圖
實驗系統分為學生自助和實驗管理兩個子系統。通過學生自助子系統,學生可以查詢老師布置的實驗任務、所做實驗的結果以及實驗操作步驟中的主要錯誤,從而了解不足並及時改進。通過實驗管理模塊,教師可以安排實驗任務,查詢學生實驗進度和結果,了解學生實驗過程中的常見問題,以便及時指導。
系統的分析和設計采用面向對象的UML建模語言。在充分分析系統需求後,用UML的用例圖和序列圖描述了系統的概念模型,然後進行詳細設計,描述了系統的類圖和類關系圖,建立了初步的數據模型。利用Borland公司的協同建模工具,實現了系統模型與源代碼和數據庫之間的雙向自動轉換。
為了滿足本系統開發的工程需求,開發人員分為以下幾類:a、系統分析師;b、後臺組件開發程序員(主要是動作類和業務邏輯類);c .後臺組件測試器;d .前臺用戶界面程序員(主要是JSP程序員+美工);e、前臺測試技術員。通過Sitemesh和WebWork的結合,實現了各模塊用戶界面和後臺組件的獨立開發和測試,有利於分工協作,大大減少了開發人員在信息交流上花費的時間,提高了系統開發的效率。
4系統實施
4.1,操作環境
為了適應高校計算機系統軟件環境的多樣性,該系統可以運行在任何符合J2EE規範的WEB容器和最流行的關系數據庫中。本系統的開發選擇了開源項目Tomcat和Mysql。
4.2 Web應用程序的配置
限於篇幅,僅列出部分關鍵配置信息。根據J2EE規範,本系統的目錄規劃如下(表1):
父目錄子目錄描述
/src Java類源代碼
/lib系統需要的第三方類庫文件
/docs系統開發文檔
/ROOT WEB應用程序根目錄
/ROOT WEB-INF WEB應用程序配置目錄
/ROOT/
WEB-INF類Java類字節碼文件目錄
/ROOT _decorators站點網格裝飾頁面
表1系統目錄結構
在/ROOT/WEB-INF中,存儲了web.xml、sitemesh.xml、decorators.xml等配置文件。
WEB視圖層的配置:
本系統設計了幾個裝飾頁面,下面列出了/WEB-INF/decorators.xml中主要裝飾頁面的配置信息:
& ltdecorators default dir = "/_ decorators " & gt;
& ltdecorator name = " main " page = " main . JSP " & gt;
& lt模式& gt* & lt/pattern & gt;
& lt/decorator & gt;
& lt/decorators & gt;
主裝修頁面main.jsp的布局形成了流行的“左上、中右下”的頁面結構。上半部分顯示系統logo和主頁鏈接,各大子系統鏈接,下半部分顯示版權聲明和聯系方式,左右部分顯示常用模塊,中間部分是當前頁面的主要功能操作區。其JSP頁面的主體如下所示:
& lttable width = " 100% " align = " center " >
& lttr & gt& lttd width="134" valign="top " >
& ltpage:apply decorator name = " simple "
page = "/site mesh/left . JSP "/& gt;& lt/TD & gt;& lt/tr & gt;
& lttr & gt& lttd width="488" valign="top " >
& ltpage:apply decorator name = " simple "
page = "/site mesh/middle _ top . JSP "/& gt;& ltbr & gt
& ltdecorator:body/& gt;& ltbr & gt
& ltpage:apply decorator name = " simple "
page = "/site mesh/middle _ bottom . JSP "/& gt;& lt/TD & gt;& lt/tr & gt;
& lttr & gt& lttd width="122" valign="top " >
& ltpage:apply decorator name = " simple "
page = "/site mesh/right . JSP "/& gt;& lt/TD & gt;& lt/tr & gt;
& lt/table & gt;
持久層休眠的配置:
首先,通過classes/hibernate.cfg.xml文件配置Hibernate的數據庫連接信息。然後在每個類二進制文件需要持久化的目錄下建立壹個與類同名的hbm.xml文件,配置這個類屬性與數據表中字段的對應關系以及類之間的映射關系。以下是Customer.hbm.xml的內容
& lthibernate-mapping package = " com . un . eclab " & gt;
& ltclass name = " Customer " table = " Customer " >
& ltid name="id" column="CID " >
& lt生成器class="increment" />& lt/id & gt;
& ltproperty name = " struser name " column = " username "/& gt。
& ltproperty name = " str password " column = " password "/& gt;
& lt/class & gt;
& lt/hibernate-mapping & gt;
當您需要持久化客戶對象時,請使用以下代碼:
會話工廠sf =
新配置()。配置()。buildSessionFactory();
session session = SF . opensession();
transaction tx = session . begin transaction();
客戶customer =新客戶();
customer.setUsername(“客戶名稱”);
customer . set password(" customer password ");
session.save(客戶);
tx . commit();
session . close();
4.3業務邏輯層的實現
以交易系統為例,該子系統實現的主要類如下所示(表2):
類名主函數
IProduct產品類接口,規範了產品類的主要操作,適應不同企業對產品類的要求。
Product產品類,實現Iproduct接口。企業可以繼承這個品類,實現對自己產品的管理。
EccCart交易中心購物車類,可以管理多種交易類型。
EccCartItem購物汽車類別
EccOrder訂單類別
選項企業選項類,管理業務規則。
表2主要交易系統類型列表
通過以上幾個類的配合,實現了交易系統的主要業務邏輯。
5結束語
總的來說,利用開源技術設計電子商務實驗模擬系統具有開發周期短、系統靈活性高、易於開發和維護等優點,大大降低了系統開發的復雜度和開發成本,能夠適應不斷變化的用戶需求,具有廣闊的應用前景。