《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動(dòng)態(tài) > 基于J2EE(羊毛衫)遠(yuǎn)程定制系統(tǒng)的設(shè)計(jì)研究

基于J2EE(羊毛衫)遠(yuǎn)程定制系統(tǒng)的設(shè)計(jì)研究

2009-01-06
作者:方曄,石金華,郭放

1 引言
目前制約我國服裝生產(chǎn)企業(yè)發(fā)展的瓶頸已經(jīng)從生產(chǎn)環(huán)節(jié)轉(zhuǎn)向市場營銷與貿(mào)易環(huán)節(jié),許多服裝生產(chǎn)企業(yè)都開始采用網(wǎng)上定制的方式來開拓銷售市場。另一方面,借助于WWW通過動(dòng)態(tài)的交互式信息發(fā)布,出現(xiàn)了諸如網(wǎng)上購物、網(wǎng)上銀行、網(wǎng)上書店等一系列在線電子商務(wù)服務(wù)系統(tǒng)。這些系統(tǒng)都離不開分布式的數(shù)據(jù)庫、與用戶及后臺數(shù)據(jù)庫交互的動(dòng)態(tài)Web應(yīng)用程序、安全認(rèn)證等技術(shù)。因此在Internet/Intranet環(huán)境下如何構(gòu)建分布式動(dòng)態(tài)Web應(yīng)用系統(tǒng)的開發(fā)自然而然地成為一項(xiàng)熱門技術(shù)。
文中所介紹的服裝(羊毛衫)遠(yuǎn)程定制系統(tǒng),采用了基于J2EE / EJB的分布式應(yīng)用體系結(jié)構(gòu)和MVC開發(fā)模型,使分布在不同地理位置上的花型數(shù)據(jù)庫、遠(yuǎn)程定制系統(tǒng)與遠(yuǎn)程診斷系統(tǒng),通過Internet互連在一起,共享信息資源,實(shí)現(xiàn)羊毛衫的遠(yuǎn)程定制生產(chǎn)和電腦橫機(jī)遠(yuǎn)程維護(hù)。
2? 基于J2EE分布式開發(fā)技術(shù)簡介
目前使用的分布式開發(fā)技術(shù)主要有以下幾種C/S、C/A/S、B/A/S等。這幾種技術(shù)共同點(diǎn)在于都可以實(shí)現(xiàn)數(shù)據(jù)的共享,對數(shù)據(jù)進(jìn)行統(tǒng)一管理和維護(hù)。
分布式技術(shù)發(fā)展到現(xiàn)在,出現(xiàn)了許多相關(guān)的標(biāo)準(zhǔn)和產(chǎn)品。其中最為引人注目的就是SUN公司推出的J2EE / EJB的體系結(jié)構(gòu)了。這是自SUN公司推出JAVA后的又一大手筆。Enterprise JavaBean這一名稱利用了JavaBean這種可移植、可重用的Java軟件組件的聲望。Enterprise JavaBean技術(shù)把Java組件的概念從客戶機(jī)域擴(kuò)展到了服務(wù)器域,這是Java技術(shù)成長過程中有重大意義的一步,它使Java技術(shù)發(fā)展成為一種強(qiáng)健的、可伸縮的環(huán)境,能夠支持以任務(wù)為關(guān)鍵的信息系統(tǒng)。下圖是J2EE / EJB的分布式應(yīng)用模型:

??? 從圖中可以看出,Servlet/JSP起著聯(lián)系前后臺的橋梁作用??蛻舳薆rowser通過HTTP協(xié)議向Java應(yīng)用服務(wù)器發(fā)送請求。Web層的Servlet或JSP生成網(wǎng)頁用來完成表示層邏輯,它們的主要作用是接受并檢驗(yàn)用戶輸入,調(diào)用后端的業(yè)務(wù)邏輯層,并把業(yè)務(wù)邏輯層處理的結(jié)果返回給用戶[2]。JSP和Servlet都運(yùn)行在應(yīng)用服務(wù)器端,業(yè)務(wù)邏輯層由EJB或JavaBean來實(shí)現(xiàn),他們通過JDBC訪問DBMS,或通過其它途徑去訪問遺留系統(tǒng)。
??? J2EE思想的一個(gè)重要的實(shí)現(xiàn)構(gòu)架就是MVC(Model-View-Controller,模型-視圖-控制器)模式。在MVC模型中,應(yīng)用程序被分解成獨(dú)立的3個(gè)部分:
??? 2 模型:即程序?qū)⒁獙?shí)現(xiàn)的業(yè)務(wù)邏輯
??? 2?視圖:又稱用戶界面
??? 2?控制:用來管理模型和視圖之間交互以及應(yīng)用程序的流程的構(gòu)件
??? 在這種設(shè)計(jì)模式下,JSP主要用來實(shí)現(xiàn)MVC模型的視圖部分,Servlet用來實(shí)現(xiàn)模型的控制部分(控制用戶輸入和流程),JavaBean等后臺Java技術(shù)則用來實(shí)現(xiàn)MVC的模型部分。這種模式比較適合控制邏輯較復(fù)雜的情況,如用戶輸入情況復(fù)雜或者程序流程復(fù)雜的情況。
??? 在遠(yuǎn)程定制系統(tǒng)設(shè)計(jì)的具體實(shí)踐中,在J2EE中間件應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器的選取可考慮使用IBM的WebSphere和DB2的組合或BEA的WebLogic和ORACLE的組合,這兩種方法是目前比較流行和性能較好的方法,在大型的系統(tǒng)中得到了廣泛的使用。
3? (羊毛衫)遠(yuǎn)程定制系統(tǒng)的設(shè)計(jì)內(nèi)容
??? 本系統(tǒng)以大型電腦針織橫機(jī)為基礎(chǔ),將羊毛衫銷售商場的遠(yuǎn)程定制用戶端計(jì)算機(jī)通過Internet網(wǎng)絡(luò)與羊毛衫設(shè)計(jì)中心的Web服務(wù)器以及企業(yè)的大型電腦針織橫機(jī)互連在一起,實(shí)現(xiàn)羊毛衫遠(yuǎn)程定制設(shè)計(jì)與生產(chǎn)。整個(gè)定制系統(tǒng)總體構(gòu)造示意圖如下:

?????????

??? 2 花型數(shù)據(jù)庫模塊
??? 羊毛衫花型設(shè)計(jì)中心通過基于Web的花型數(shù)據(jù)系統(tǒng)。可以定制或選擇各種不同類型的花型,可對花型圖案數(shù)據(jù)進(jìn)行查詢、編輯、修改、打印等。從攝像輸入、圖片掃描、或直接繪圖取得花型圖像轉(zhuǎn)換成花型數(shù)據(jù)文件,羊毛衫生產(chǎn)企業(yè)也可以對花型數(shù)據(jù)庫進(jìn)行編輯修改。
??? 2?遠(yuǎn)程定制模塊
??? 羊毛衫專賣商場采用基于Web的遠(yuǎn)程定制系統(tǒng),共享花型設(shè)計(jì)中心資源。顧客可以在線瀏覽現(xiàn)有的羊毛衫產(chǎn)品或者根據(jù)自己喜好選擇花型式樣,品種和顏色等款式信息進(jìn)行羊毛衫定制,向羊毛衫生產(chǎn)企業(yè)提交定制工藝單,并由系統(tǒng)提供模擬橫機(jī)編織和試穿效果演示。
??? 2?遠(yuǎn)程診斷模塊
??? 大型電腦針織橫機(jī)制造與售后服務(wù)基地,通過基于Web的遠(yuǎn)程監(jiān)測維護(hù)系統(tǒng),將被監(jiān)測的電腦針織橫機(jī)運(yùn)行狀況,以頁面形式顯示到自己的計(jì)算機(jī)上,對遠(yuǎn)方的大型電腦針織橫機(jī)進(jìn)行遠(yuǎn)程監(jiān)測、故障診斷、遠(yuǎn)程交談、文件傳輸?shù)取?BR>??? 系統(tǒng)設(shè)計(jì)采用SQL Server 2000數(shù)據(jù)庫系統(tǒng)建立羊毛衫花型數(shù)據(jù)庫,服務(wù)器操作系統(tǒng)為Windows 2000 server,遠(yuǎn)程定制和診斷模塊的開發(fā)都采用基于J2EE的JSP / Servlet,JavaBean,JDBC的三層結(jié)構(gòu)。J2EE應(yīng)用服務(wù)器為BEA WebLogic6.1,Web服務(wù)器采用微軟的IIS4.0。Borland Jbuilder6.0作為J2EE的開發(fā)工具。系統(tǒng)采用Browser / Web / DBMSServer三層結(jié)構(gòu)作為總體結(jié)構(gòu)設(shè)計(jì)的計(jì)算模式。此三層結(jié)構(gòu)最大的優(yōu)點(diǎn)是將用戶界面、應(yīng)用邏輯與數(shù)據(jù)管理三層分開,使得系統(tǒng)可以靈活多變地應(yīng)付各種變化。
??? 下面介紹基于MVC開發(fā)模型設(shè)計(jì)遠(yuǎn)程定制模塊。
4? 遠(yuǎn)程定制模塊的具體實(shí)現(xiàn)
4.1? 用JSP實(shí)現(xiàn)視圖

??? 由于JSP程序的特點(diǎn),宜采用獨(dú)立的JSP程序來實(shí)現(xiàn)不同的程序功能模塊,或者說,用不同的JSP程序?qū)崿F(xiàn)不同的程序頁面。下圖說明了模塊的主要頁面以及實(shí)現(xiàn)它們的JSP程序:
??????????

??? 其中白色方框代表程序中顯示給用戶的頁面,灰色方框代表程序后臺實(shí)現(xiàn)的功能,箭頭表示了頁面之間的鏈接關(guān)系和功能調(diào)用關(guān)系。這樣分立的實(shí)現(xiàn)比單一的程序結(jié)構(gòu)更容易調(diào)試,也更容易維護(hù)。
4.2 用JavaBean實(shí)現(xiàn)模型
??? (1)業(yè)務(wù)實(shí)體
??? 整個(gè)模塊中存在著5個(gè)業(yè)務(wù)實(shí)體,為了實(shí)現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯,需要定義如下的JavaBean(每個(gè)實(shí)體對應(yīng)一個(gè)Bean):Catalog:羊毛衫分類目錄;Product:羊毛衫產(chǎn)品信息;User: 用戶信息,它包含了Order;Order定制工藝單,它包含了Item;Item:定制信息條目。
??? 每個(gè)業(yè)務(wù)實(shí)體都具有若干主要功能操作(方法)。例如定制工藝單管理實(shí)體,它可以增加定制信息(addOrderItem方法)、刪除定制信息(delOrderItem方法)、修改定制信息(setOrderItem方法)和清空所有定制信息(clearOrder方法)。
??? 另外,為了使對數(shù)據(jù)庫的訪問得到統(tǒng)一的管理,將數(shù)據(jù)庫訪問的各個(gè)操作進(jìn)行了封裝,封裝到一個(gè)Java類DBSQL中。這樣,程序的數(shù)據(jù)庫訪問都可以通過這個(gè)類的方法來實(shí)現(xiàn)。經(jīng)過這樣的抽象以后,上層的Bean無需關(guān)心如何訪問數(shù)據(jù)庫,它只需要知道DBSQL類的接口就可以了;而DBSQL類只要保持接口不變,內(nèi)部的實(shí)現(xiàn)可以任意改變,例如進(jìn)行優(yōu)化,并且不會影響到上層應(yīng)用。
??? (2)JavaBean的定義
??? 下面列出了實(shí)現(xiàn)用戶實(shí)體Bean(User)屬性和方法的部分程序,User Bean是一個(gè)按標(biāo)準(zhǔn)定義的JavaBean,它定義了以下一組屬性:
public class User {
??? int UserID;?????只讀屬性,標(biāo)示登錄用戶的編號
??? String UserName;????可讀可寫屬性,標(biāo)示登錄用戶的姓名
??? String Password;????可讀可寫屬性,標(biāo)示登錄用戶的密碼
??? boolean Login;????可讀可寫屬性,標(biāo)示用戶是否登錄成功
??? Order order;?只讀屬性,標(biāo)示用戶的定制工藝單對象,這個(gè)對象如果存在,它本身也是一個(gè)Bean,在Order類中定義
……
// checkUser方法用來檢查用戶登錄信息。通過JDBC訪問數(shù)據(jù)庫,檢查用戶名稱和口令是否正確,如果正確就把login屬性設(shè)置為true,并為該用戶創(chuàng)建一個(gè)定制工藝單對象保存在屬性order中
……
??? db.openDB();
??? String strSQL = "select UserID from USER where Name='"+UserName+"' and Password='"+Password+"' and Type=0";
??? try {
????? ResultSet sqlRst = db.executeQuery(strSQL);
????? if (sqlRst.next()) {
??????? Login = true;
??????? UserID = sqlRst.getInt(1);
??????? order = new Order();
????? } else {
????? ?Login = false;
????? ?order = null;
}
……
// orderPay方法用來實(shí)現(xiàn)定制工藝單提交。它獲取定制工藝單中的款式定制信息,然后通過JDBC將工藝單信息增加到數(shù)據(jù)庫的表中。該方法返回boolean值,標(biāo)示定制工藝單提交是否成功
……
??? db.openDB();
??? try {
????? ……
????? strSQL = "select OrderID from order where UserID="+(new Integer(UserID)).toString()+" and OrderCount="
??????? +OrderCount+" and OrderTotal="+OrderTotal+" and OrderDate=Date() order by OrderID desc";
????? ResultSet sqlRst = db.executeQuery(strSQL);?????????? 取得當(dāng)前定制款式的用戶號
????? sqlRst.next();
????? String OID = sqlRst.getString(1);
????? sqlRst.close();
????? for(int i=0; i??????? item anItem = (item) order.getOrderItem(i);?????? 定制工藝單上的每一種款式
??????? String PID = (new Integer(anItem.getPID())).toString();??? ? 定制款式號
??????? String Price = (new Integer(anItem.getPrice())).toString();??? 定制款式價(jià)格
??????? String Qty = (new Integer(anItem.getQty())).toString();?????? 定制款式數(shù)量
??????? strSQL = "insert into orderlist (OrderID,ProductID,Price,Qty) values ("
????????? +OID+","+PID+","+Price+","+Qty+")";??? 將定制工藝單信息添加到數(shù)據(jù)庫中
??????? sqlRet = db.executeUpdate(strSQL);
????? }
……
??? User Bean在程序中是作為session范圍的Bean定義的。它在程序中的第一個(gè)用處是獲取login的屬性值,檢查是否是登錄會員的訪問;第二個(gè)用處是在member.jsp程序中使用checkUser方法執(zhí)行會員登錄認(rèn)證操作;第三個(gè)用處是在pay.jsp程序中使用orderPay方法執(zhí)行定制工藝單提交操作。
4.3? 用Servlet實(shí)現(xiàn)控制
???? (1)JSP / Servlet設(shè)計(jì)模型
???? JSP / Servlet設(shè)計(jì)模型的原理如下圖所示:

??? 用戶瀏覽器發(fā)出的訪問請求都發(fā)送到Servlet統(tǒng)一處理,Servlet解釋請求信息,進(jìn)行相應(yīng)處理,如果需要同實(shí)現(xiàn)業(yè)務(wù)邏輯的模型部分交互則同相應(yīng)的模型Bean交互。實(shí)現(xiàn)業(yè)務(wù)邏輯模型的Bean被稱為“模型Bean”,它們封裝了程序的業(yè)務(wù)邏輯,將后臺的模型同前臺的控制與視圖分離開,如果業(yè)務(wù)邏輯比較復(fù)雜,“模型Bean”往往還需要同其他的后臺系統(tǒng)交互,例如數(shù)據(jù)庫,其他的EJB等等。最后,Servlet調(diào)用(通過forward或include機(jī)制)JSP程序顯示相應(yīng)的頁面。
??? (2)使用JSP / Servlet設(shè)計(jì)模型實(shí)現(xiàn)頁面調(diào)用
??? 由于定制工藝單的管理比較復(fù)雜,包含多個(gè)功能,即需要根據(jù)用戶的不同請求,進(jìn)行不同的定制工藝單操作。因此采用Servlet類OrderServlet實(shí)現(xiàn)這個(gè)控制邏輯,而另外編寫一個(gè)order.jsp程序,它就只需要完成調(diào)用頁面各部分的顯示程序顯示管理頁面內(nèi)容就可以了,所有的根據(jù)用戶請求進(jìn)行定制工藝單管理操作的控制都在OrderServlet中實(shí)現(xiàn),定制功能的業(yè)務(wù)邏輯則仍在實(shí)現(xiàn)定制工藝單實(shí)體的JavaBean中實(shí)現(xiàn)。
??? (3)編寫部署描述文件
??? 在使用WebLogic6.1對系統(tǒng)進(jìn)行裝配和部署時(shí),需要在部署描述文件web.xml中將order.jsp映射到OrderServlet這個(gè)Servlet,這樣,當(dāng)在其他程序中訪問order.jsp時(shí),系統(tǒng)實(shí)際執(zhí)行的是OrderServlet。
……

??
?????
????????? OrderServlet
?????

?????
????????? OrderServlet
?????

???

???
???????
??????????? OrderServlet
???????

???????
??????????? /order.jsp
???????

???


5? 結(jié)束語
??? J2EE是一個(gè)比較成熟的分布式體系結(jié)構(gòu),只需按照其規(guī)范和對應(yīng)的開發(fā)工具的文檔來編寫程序和配置容器就可以實(shí)現(xiàn)整個(gè)系統(tǒng)的標(biāo)準(zhǔn)化。實(shí)現(xiàn)整個(gè)遠(yuǎn)程定制系統(tǒng)的過程體現(xiàn)了使用J2EE體系結(jié)構(gòu)編寫分布式系統(tǒng)的許多優(yōu)勢:通過Session Bean封裝業(yè)務(wù)邏輯,Entity Bean完成數(shù)據(jù)庫的訪問實(shí)現(xiàn)的系統(tǒng)分布式的組件編程;通過JSP定制標(biāo)簽庫構(gòu)成模板,實(shí)現(xiàn)頁面內(nèi)容和布局的分離。這個(gè)系統(tǒng)是全部利用JAVA編寫,而像Servlet、JSP等也基本上遵循JAVA的語法,因此非常方便。
參考文獻(xiàn):
[1] 柳樹春,廖孟揚(yáng),王思賢,徐振勤. Browser/Server模式管理信息系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與應(yīng)用,2002.06
[2] 常晉義,沈健. 基于J2EE的電子商務(wù)網(wǎng)構(gòu)建技術(shù)及應(yīng)用[J]. 計(jì)算機(jī)應(yīng)用研究,2002.04
[3] Nicholas Kassem and the Enterprise Team.? Designing Enterprise Applications with the Java TM 2 Platform [J], Enterprise Edition Version 1.0.1 Final Release October 3.2000
[4] Khawar Zaman Ahmed,Cary E.Umrysh.? Developing Enterprise Java Application with
J2EE and UML [M]. 2002,Pearson Education,California,120-160
[5] Michael Girdley,Rob Woollen,Sandra L. Emerson.? J2EE Application and BEA WebLogic Server [M]. 2002,Prentice Hall PTR,American,1-36

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。