專利名稱:一種基于門面模式的產(chǎn)品信息控制系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息系統(tǒng)領(lǐng)域,特別涉及一種基于門面模式的產(chǎn)品信息控制系統(tǒng)及 方法。
背景技術(shù):
Internet是現(xiàn)今人類使用最為廣泛同時更新也是最快的技術(shù)。隨著技術(shù)的發(fā)展, Internet已經(jīng)應(yīng)用已經(jīng)涉及到我們生活的方方面面。例如網(wǎng)上商城,在過去,開商店一 般都是指實體店,地段,面積一直都是需要很多本錢的,并且承擔著一定的風險。而現(xiàn) 如今,通過網(wǎng)上商城,我們可以很快捷地將自己想要賣的商品放在網(wǎng)上。隨著電腦的普 及,網(wǎng)上購物已經(jīng)成為一種時尚,一種消費的方式。
對于網(wǎng)上商城,不管是網(wǎng)上書店還是網(wǎng)上銷售其他物品的系統(tǒng),其作為一個信 息系統(tǒng),其使用的設(shè)計模式均是有所不同,各有優(yōu)勢的。發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于門面模式的產(chǎn)品信息控制系統(tǒng)及方法,其能通過 一個接口實現(xiàn)外部用戶與信息系統(tǒng)的交互。
一方面,本發(fā)明提供一種基于門面模式的產(chǎn)品信息控制系統(tǒng),其基于JSP技術(shù) 實現(xiàn),包括
數(shù)據(jù)庫,存儲產(chǎn)品信息以及用戶信息;
界面顯示單元,通過JSP頁面顯示所述系統(tǒng)存儲的產(chǎn)品信息以及用戶對所述產(chǎn) 品的操作選項;
購物車單元,用以集中存放并顯示用戶選擇形成的包含產(chǎn)品信息的訂單列表;
訂單處理單元,用以對所述購物車單元的訂單列表進行處理;
所述控制系統(tǒng)還包括一門面接口,所述系統(tǒng)的各單元通過所述門面接口響應(yīng)外 部的用戶請求,所述系統(tǒng)的Struts控制器的模型組件執(zhí)行與所述用戶請求對應(yīng)的業(yè)務(wù)邏 輯,將執(zhí)行結(jié)果返回至所述系統(tǒng)各單元。
所述購物車單元以產(chǎn)品的id、數(shù)量、單價、總價為一個單位封裝為一個對象, 通過修改、刪除按鈕對所述對象進行相應(yīng)的操作。
所述訂單處理單元將所述購物車單元中所有信息轉(zhuǎn)換為訂單對象,通過調(diào)用業(yè) 務(wù)邏輯持久化所述訂單對象并插入所述數(shù)據(jù)庫存儲。
所述界面顯示單元的JSP頁面使用客戶化標簽,所述客戶化標簽源自Struts HTML、Bean 和 Logic 標簽庫。
所述Struts控制器包括Action Servlet組件,用以作為Struts中央控制器; Request Processor組件,用以作為系統(tǒng)每個子應(yīng)用模塊單元的請求處理器;Action組件,用以負責處理一項具體的業(yè)務(wù)。
另一方面,本發(fā)明還提供一種基于門面模式的產(chǎn)品信息控制方法,其基于JSP技術(shù)實現(xiàn),包括以下步驟建立數(shù)據(jù)庫,存儲產(chǎn)品信息以及用戶信息;建立一門面接口,響應(yīng)外部的用戶請求,配合所述系統(tǒng)的Struts控制器的模型組 件執(zhí)行與所述用戶請求對應(yīng)的業(yè)務(wù)邏輯;通過JSP頁面顯示所述系統(tǒng)存儲的產(chǎn)品信息以及用戶對所述產(chǎn)品的操作選項;建立一購物車單元,用以集中存放并顯示用戶選擇形成的包含產(chǎn)品信息的訂單 列表;建立一訂單處理單元,根據(jù)用戶的請求,用以對所述購物車單元的訂單列表進 行處理。所述購物車單元以產(chǎn)品的id、數(shù)量、單價、總價為一個單位封裝為一個對象, 通過修改、刪除按鈕對所述對象進行相應(yīng)的操作。所述訂單處理單元將所述購物車單元中所有信息轉(zhuǎn)換為訂單對象,通過調(diào)用業(yè) 務(wù)邏輯持久化所述訂單對象并插入所述數(shù)據(jù)庫存儲。所述界面顯示單元的JSP頁面使用客戶化標簽,所述客戶化標簽源自Struts HTML、Bean 和 Logic 標簽庫。所述Struts控制器包括Action Servlet組件,用以作為Struts中央控制器; Request Processor組件,用以作為系統(tǒng)每個子應(yīng)用模塊單元的請求處理器;Action組件,
用以負責處理一項具體的業(yè)務(wù)。采用本發(fā)明所述的一種基于門面模式的產(chǎn)品信息控制系統(tǒng)及方法,其通過建立 門面模式的門面接口來實現(xiàn)外部用戶和信息系統(tǒng)的交互。門面模式工作時,使用門面對 象的客戶端無需直接訪問系統(tǒng)對象,而是由門面對象將客戶端的請求傳遞給適當?shù)南到y(tǒng) 對象,讓系統(tǒng)對象完成實際的工作。這就是說,由門面對象來調(diào)用相關(guān)系統(tǒng)的方法,并 把系統(tǒng)的接口轉(zhuǎn)換成客戶端需要的接口??蛻舳酥缓鸵粋€門面對象打交道。這樣一來就 降低了系統(tǒng)之間的依賴性和復雜性。
圖1是門面模式的原理示意圖;圖2是本發(fā)明所述控制系統(tǒng)的原理框圖;圖3是本發(fā)明所述控制方法的流程圖。
具體實施例方式下面結(jié)合附圖和實施例進一步說明本發(fā)明的技術(shù)方案,本發(fā)明以在線書籍控制 系統(tǒng)為實施例。首先介紹一下門面模式(Facade),指的是外部用戶對象通過一個統(tǒng)一的門面的 對象來與一個系統(tǒng)進行交互。門面模式為系統(tǒng)中的一組接口,提供一個統(tǒng)一的門面供外 部對象訪問。也就是門面模式定義了一個更高層次的接口讓外部對象容易使用這個系 統(tǒng)。參見圖1,外部與一個子系統(tǒng)的通信必須通過一個統(tǒng)一的門面(Facade)對象進 行,這就是門面模式。門面模式要求一個子系統(tǒng)的外部與其內(nèi)部的通信必須通過一個統(tǒng)一的門面(Facade)對象進行。門面模式提供一個高層次的接口,使得子系統(tǒng)更易于使 用。它的角色包括門面角色和子系統(tǒng)角色,門面(Facade)角色客戶端可以調(diào)用這個 角色的方法。在正常情況下,本角色會將所有從客戶端發(fā)來的請求委派到相應(yīng)的子系統(tǒng) 去。子系統(tǒng)(Subsystem)角色每一個子系統(tǒng)都可以被客戶端直接調(diào)用,或者被門面角色 調(diào)用。子系統(tǒng)并不知道門面的存在,對于子系統(tǒng)而言,門面僅僅是另一個客戶端而已。 在門面模式中,通常只需要一個門面類,并且此門面類只有一個實例,換言之它是一個 單例類。但如果一個系統(tǒng)有好幾個子系統(tǒng)的話,每個子系統(tǒng)都可有一個門面類,整個系 統(tǒng)可以有數(shù)個門面類。如果一個門面模式不能將子系統(tǒng)的所有行為提供給外界,那么可 以通過修改或繼承門面類的方法將子系統(tǒng)的行為提供給外界。但是,如果一個子系統(tǒng)沒 有某個行為,想通過修改或繼承門面類的辦法來提供這個新的行為是錯誤的。facade是 構(gòu)筑成系統(tǒng)的其他參與者的單一窗口,facade參與者對系統(tǒng)外部提供較高且單一的接口, facade參與者讓復雜的內(nèi)容看起來很簡單。參見圖2,圖2是本發(fā)明所述一種基于門面模式的產(chǎn)品信息控制系統(tǒng)100,包 括數(shù)據(jù)庫110,存儲書籍信息以及用戶信息;用戶驗證單元120,所述用戶登陸所述系統(tǒng)時,所述用戶驗證單元120將其輸入 的用戶名和密碼與所述數(shù)據(jù)庫110存儲用戶信息的進行比對,若一致則進入所述界面顯 示單元130。界面顯示單元130,通過JSP頁面顯示所述系統(tǒng)存儲的書籍信息以及用戶對所述 書籍的操作選項。所述JSP頁面使用客戶化標簽,所述客戶化標簽源自StrutsHTML、 Bean和Logic標簽庫。購物車單元140,用以集中存放并顯示用戶選擇形成的包含書籍信息的訂單列 表。所述訂單列表具體包括書籍名稱、書籍價格以及訂單配送方式。所述購物車單元 140以產(chǎn)品的id、數(shù)量、單價、總價為一個單位封裝為一個對象,通過修改、刪除按鈕對 所述對象進行相應(yīng)的操作。訂單處理單元150,用以對所述購物車單元140的訂單列表進行處理。所述訂單 處理單元150將所述購物車單元140中所有信息轉(zhuǎn)換為訂單對象,通過調(diào)用業(yè)務(wù)邏輯持久 化所述訂單對象并插入所述數(shù)據(jù)庫110存儲。一門面接口 160,所述系統(tǒng)的各單元通過所述門面接口 160響應(yīng)外部的用戶請 求,所述系統(tǒng)的Struts控制器的模型組件執(zhí)行與所述用戶請求對應(yīng)的業(yè)務(wù)邏輯,將執(zhí)行結(jié) 果返回至所述系統(tǒng)各單元。下面介紹一下實體設(shè)計,對于本發(fā)明所述系統(tǒng)100的數(shù)據(jù)庫110,其存儲了很 多實體文件Product(商品),每本書都有一個屬于秘書的類型,所以還要有一個類型 實體Category(種類),而且系統(tǒng)中所有功能都是由用戶驅(qū)動的,所以還在有一個用 戶實體EsUn_B00k_User(用戶),每個用戶都有自己的地址信息,所以有一個地址實 體Contactinfo(用戶信息)。當用戶選購完自己的商品后,必須為他生成一份定單存 放在數(shù)據(jù)庫110中,所以還在有一個定單實體orders (定單)。每一個定單都有它的 一個狀態(tài)(比如已發(fā)貨,待發(fā)貨,發(fā)貨中),所以也要為定單狀態(tài)建立一個實體 OrderStatus(定單狀態(tài))。定單中一個有款不同類型的書籍,所以還在為它創(chuàng)建一個條目實體(Items)條目。每一個定單都有它的配送方式,所以還要為定單配送方式建立一個 實體PayWay (定單配送方式)。 實體與實體之間存在三種關(guān)系一對一、一對多和多對多。本系統(tǒng)100中的實 體之間存在以下關(guān)系 Esun_Book_User (用戶)和Contactinfo (用戶信息)實體一對一。一個客戶只
能填寫一個有效地址,一個有效地址也只能對應(yīng)一個客戶。Esun_Book_User(用戶)和Orders(定單)實體一對多。一個客戶有多個訂
單,而一個訂單只能屬于一個客戶。Category (種類)和Product (商品)實體一對多。一件商品只有一個類別,而
一個類別可以對應(yīng)多件商品。Item(條目)禾Π Product (商品)實體一對一。一個條目對應(yīng)一件商品,一件 商品對應(yīng)一個條目。Item(條目)和Orders (定單)實體一對多。一個條目對應(yīng)一張定單,一張定 單可以擁有多個條目。PayWay (定單配送方式)和Orders (定單)實體一對多。一張定單只能有一 個配送方式,而一種配送方式可以對應(yīng)多張定單。本系統(tǒng)100中的界面顯示單元130的實現(xiàn),也可以稱之為表示層設(shè)計表示 層,即顯示給用戶看的頁面。在本系統(tǒng)100的JSP頁面中使用客戶化標簽,可以把java 程序代碼和JSP頁面分離,使JSP頁面重于生成動態(tài)網(wǎng)頁,而不涉及應(yīng)用邏輯。本系 統(tǒng)100的所有都頁面都使用了 StratsHTML、Bean和Logic標簽庫中的標簽。客戶化標 簽有以下優(yōu)點標簽具有可重用性,因此可以提高開發(fā)效率;可以在JSP頁面以靜態(tài) 或動態(tài)的方式客戶化設(shè)置自定義標簽的屬性;標簽可以訪問JSP網(wǎng)頁中的所有對象,如 HttpServletRequest和HttpServletResponse等;標簽可以相互嵌套,來完成邏輯;標簽可 以使JSP頁面變得更加簡潔,提高可讀性。本系統(tǒng)100的控制層的設(shè)計實現(xiàn)本系統(tǒng)100的各單元基于Struts控制器接收用 戶請求,并調(diào)用Struts控制器的模型組件執(zhí)行與所述用戶請求對應(yīng)的業(yè)務(wù)邏輯,將執(zhí)行結(jié) 果返回至所述系統(tǒng)各單元。所述Struts控制器包括ActionServlet組件,用以作為Struts 中央控制器;RequestProcessor組件,用以作為系統(tǒng)每個子應(yīng)用模塊單元的請求處理器; Action組件,用以負責處理一項具體的業(yè)務(wù)。Struts控制器組件負責接收用戶請求、更新模型,以及選擇合適視圖組件返回給 用戶。控制器組件有助于疳模型層和視圖層分離,有了這種分離,就可在同一個模型的 基礎(chǔ)上得心應(yīng)手地開發(fā)多種類型的視圖。本系統(tǒng)采用Struts框架的控制器組件來預(yù)處理所有的客戶請求,這種集中控制方 式可以滿足MVC設(shè)計模式的兩大需求首先,控制器在用戶輸入數(shù)據(jù)和模型之間充當媒 介翻譯者的角色,提供一些通用功能。如安全、登入和其他針對具體用戶請求的重要服 務(wù),當系統(tǒng)的這些通用功能出現(xiàn)需求變更時,不需要修改整個應(yīng)用,只需要修改局部的 控制器組件即可。其次,由于所有的請求都經(jīng)過控制器過濾,因此可以降低視圖組件之 間,以及視圖組件和模型組件之間的相互依賴關(guān)系,提高每個組件的相對獨立性。由控 制器組件來決定把合適的視圖組件返回給用戶,這可以減少視圖組件之間直接的、錯綜
7復雜的鏈接關(guān)系,使應(yīng)用更加靈活,便于維護。
本系統(tǒng)100的各單元模塊的代碼實現(xiàn)
1、界面顯示單元130,界面顯示單元130通過JSP頁面進行可視化顯示,下面的 代碼實現(xiàn)一個JSP頁面,該頁面具有書籍顯示列表,并具有指向購物
public List getPartOfProduct(int firstNun.int max,String type){ Session session=sessionfactory.openSession(); String hql="fron Product*車的Query query=session.createQuery(hql); query.setFirstResult(firstNun); querp.setMaxResults(nax); List products=query.list(); return products;鏈接。
2、購物車單元140,下面的代碼實現(xiàn)購物車單元140的一個頁面,具體包括書 籍名稱、書籍價格以及訂單配送方式等
public IlctioiiForird ㈨ti_pping napping, ActiooFori forn, Http_Me釋st request, HttpSergletResponse response) tires Exception { Iten IiiMew lten();S_ingCartForM scform=(SlioppiiigCartFori) fori; liiif.setteiscfori.getNiiiiO);line.setP_u 咁 shDpp_art^tPr_ct(Integer.parselnt(哪吧 t.getPaMter("pt"_i;tiir)川; stioppingcart.updatfProiliictllinf); request.getSfssionO.setllttritiuteC'stioppiiigcart", slioppingcart); return napping.fiitdForiHnlC'success");}public OctionForird r_e(fictio_piiig napping, HctionFori fori, flttpServlet_est request,HUpSml咖spouse response) tans Exception { ItiVi liirnen ItM();line.setPr_t(s_ingMrt.getP_ct(Meger.parsflnt(reflue比 getParafterrptetid")川; s_ingc3il_yfP_ct(lii)p); request.getSessionO.setllttriliuteC'slioppiiigcart", slioppingcart); return najiping.fiiiilForirilC'success");
3、訂單處理單元150,下面的代碼實現(xiàn)該單元的一個頁面,其顯示了購物車單 元包括的訂單信息,并具有對訂單進行修改和刪除的連接
權(quán)利要求
1.一種基于門面模式的產(chǎn)品信息控制系統(tǒng),其基于JSP技術(shù)實現(xiàn),包括 數(shù)據(jù)庫,存儲產(chǎn)品信息以及用戶信息;界面顯示單元,通過JSP頁面顯示所述系統(tǒng)存儲的產(chǎn)品信息以及用戶對所述產(chǎn)品的 操作選項;購物車單元,用以集中存放并顯示用戶選擇形成的包含產(chǎn)品信息的訂單列表; 訂單處理單元,用以對所述購物車單元的訂單列表進行處理; 其特征在于,所述控制系統(tǒng)還包括一門面接口,所述系統(tǒng)的各單元通過所述門面接 口響應(yīng)外部的用戶請求,所述系統(tǒng)的Struts控制器的模型組件執(zhí)行與所述用戶請求對應(yīng)的 業(yè)務(wù)邏輯,將執(zhí)行結(jié)果返回至所述系統(tǒng)各單元。
2.如權(quán)利要求1所述的系統(tǒng),其特征在于,所述購物車單元以產(chǎn)品的id、數(shù)量、 單價、總價為一個單位封裝為一個對象,通過修改、刪除按鈕對所述對象進行相應(yīng)的操 作。
3.如權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述訂單處理單元將所述購物車單元 中所有信息轉(zhuǎn)換為訂單對象,通過調(diào)用業(yè)務(wù)邏輯持久化所述訂單對象并插入所述數(shù)據(jù)庫 存儲。
4.如權(quán)利要求3所述的系統(tǒng),其特征在于,所述界面顯示單元的JSP頁面使用客戶化 標簽,所述客戶化標簽源自Struts HTML、Bean和Logic標簽庫。
5.如權(quán)利要求4所述的系統(tǒng),其特征在于,所述Struts控制器包括ActionServlet組 件,用以作為Struts中央控制器;Request Processor組件,用以作為系統(tǒng)每個子應(yīng)用模塊單元的請求處理器;Action組件,用以負責處理一項具體的業(yè)務(wù)。
6.—種基于門面模式的產(chǎn)品信息控制方法,其基于JSP技術(shù)實現(xiàn),其特征在于,包括 以下步驟建立數(shù)據(jù)庫,存儲產(chǎn)品信息以及用戶信息;建立一門面接口,響應(yīng)外部的用戶請求,配合所述系統(tǒng)的Struts控制器的模型組件執(zhí) 行與所述用戶請求對應(yīng)的業(yè)務(wù)邏輯;通過JSP頁面顯示所述系統(tǒng)存儲的產(chǎn)品信息以及用戶對所述產(chǎn)品的操作選項; 建立一購物車單元,用以集中存放并顯示用戶選擇形成的包含產(chǎn)品信息的訂單列表;建立一訂單處理單元,根據(jù)用戶的請求,用以對所述購物車單元的訂單列表進行處理。
7.如權(quán)利要求6所述的方法,其特征在于,所述購物車單元以產(chǎn)品的id、數(shù)量、 單價、總價為一個單位封裝為一個對象,通過修改、刪除按鈕對所述對象進行相應(yīng)的操作。
8.如權(quán)利要求6或7所述的方法,其特征在于,所述訂單處理單元將所述購物車單元 中所有信息轉(zhuǎn)換為訂單對象,通過調(diào)用業(yè)務(wù)邏輯持久化所述訂單對象并插入所述數(shù)據(jù)庫 存儲。
9.如權(quán)利要求8所述的方法,其特征在于,所述界面顯示單元的JSP頁面使用客戶化 標簽,所述客戶化標簽源自Struts HTML、Bean和Logic標簽庫。
10.如權(quán)利要求9所述的方法,其特征在于,所述Struts控制器包括ActionServlet組件,用以作為Struts中央控制器;Request Processor組件,用以作為系統(tǒng)每個子應(yīng)用模塊單元的請求處理器;Action組件,用以負責處理一項具體的業(yè)務(wù)。
全文摘要
本發(fā)明揭示了一種基于門面模式的產(chǎn)品信息控制系統(tǒng)及方法,其通過建立門面模式的門面接口來實現(xiàn)外部用戶和信息系統(tǒng)的交互。門面模式工作時,使用門面對象的客戶端無需直接訪問系統(tǒng)對象,而是由門面對象將客戶端的請求傳遞給適當?shù)南到y(tǒng)對象,讓系統(tǒng)對象完成實際的工作。這就是說,由門面對象來調(diào)用相關(guān)系統(tǒng)的方法,并把系統(tǒng)的接口轉(zhuǎn)換成客戶端需要的接口??蛻舳酥缓鸵粋€門面對象打交道。這樣一來就降低了系統(tǒng)之間的依賴性和復雜性。
文檔編號G06Q30/00GK102024231SQ20091019620
公開日2011年4月20日 申請日期2009年9月23日 優(yōu)先權(quán)日2009年9月23日
發(fā)明者唐奇, 宋濤 申請人:上海杉達學院