【正文】
CostDetailAction 類中可以直接使用這三個接口,而不需要實例化他們的實現(xiàn)類,再去使用它們。bean name=/costDetailAction class= property name=purchaseBoref bean=purchaseBo//propertyproperty name=singleMaterialProcessref bean=singleMaterialProcess//property property name=orderProcessref bean=orderProcess//property/bean上段配置文件中,我們可以看到,bean 下有三個 property 分別為purchaseBo、 singleMaterialProcess、orderProcess。27圖 43 查詢成本信息列表具體實現(xiàn)流程如下:登錄到服飾企業(yè)生產(chǎn)狀況聯(lián)絡(luò)表系統(tǒng)后,點(diǎn)擊成本管理?成本明細(xì)維護(hù)超鏈接,其地址為 會到 配置文件中查找 path=”/costDetailAction”的 Action。 成本管理模塊的具體實現(xiàn) 查詢成本信息列表功能的實現(xiàn)當(dāng)用戶登錄之后,點(diǎn)擊成本管理成本明細(xì)維護(hù),自動查詢出該登錄用戶曾經(jīng)添加過的所有成本明細(xì)信息列表,分頁顯示每頁顯示 50 條記錄,如圖 42 所示。 Java 程序在尋找自身引用的其他類文件時也會搜索該目錄。此外,還可以存放一些配置文件,該目錄是 Web 應(yīng)用程序的上下文類路徑。(6)struts:存放控制類 Action 和 ActionForm 類文件。(2)dao:用于存放各種操作數(shù)據(jù)庫的類及接口文件。6. 查詢數(shù)據(jù)庫,返回成本明細(xì)信息。2. Struts 會通過 的配置調(diào)用 CostDetailAction 類的 toView ()方法。5. 調(diào)用 HibernateTemplate 類的 delete()方法。C o s t _ M a . j s pU S E R S i n g l e M a t e r i a l P r o c e s s I m p l2 . d e l l ( )3 . d e l l S i n g l e M a t e r i a l B i l l ( )S i n g l e M a t e r i a l B i l l D A O I m p l H i b e rn a t e4 . d e l S i n g l e M a t e r i a l B i l l ( )H i b e r n a t e T e m p l a t e5 . d e l e t e ( )6 . r e t u r n d e l e t e s u c c e s s1 . d e l e t e ( )圖 37 刪除成本信息時序圖具體步驟如下:1. 用戶單擊成本維護(hù)界面右側(cè)的刪除按鈕時,Struts 的 ActionForward 通過 struts 的配置轉(zhuǎn)發(fā)至 頁面。238. 調(diào)用 SingleMaterialBillDAOImplHibernate 類的 saveSingleMaterialBill()方法。4. 調(diào)用 SingleMaterialBillDAOImplHibernate 類的 delSingleMaterialBill()方法。 修改成本信息列表時序圖如圖 36 所示,該圖為修改成本明細(xì)信息時序圖。3. CostDetailAction 類的 submitSingleMaterialBill()調(diào)用 SingleMaterialProcessImpl 類的 createSingleMaterialBill ()方法。6. 返回成本信息列表。2. 用戶填完新的成本信息后單擊提交按鈕時,Struts 會通過 的配置調(diào)用 CostDetailAction 類的 queryMa ()方法。表 32 SINGLE_MATERIAL_BILL 表序號 列名 數(shù)據(jù)類型 長度 主鍵 允許空 說明1 single_material_bill_id bigint 20 是 否 自增長2 approve_by_id bigint 20 是 審擬人 1ID3 approve_date datetime 是 審擬日期4 contact_id bigint 20 是 合同 ID5 contact_bill varchar 255 是6 createby_id bigint 20 是 創(chuàng)建人 ID7 create_date datetime 是 創(chuàng)建日期8 due_date datetime 是 交貨日期9 nation_id bigint 20 是 外銷地區(qū) ID10 single_material_bill_no varchar 255 是 編號11 number double 是 數(shù)量12 style_id bigint 20 是 款號13 update_date datetime 是 修改日期14 specification_from_id bigint 20 是15 specification_to_id bigint 20 是16 amount double 是 總額17 styleName varchar 500 是 款式18 img varchar 100 是 上傳文件路徑19 specification_term1 varchar 100 是 規(guī)格項 120 specification_term2 varchar 100 是 規(guī)格項 21921 specification_term3 varchar 100 是 規(guī)格項 322 specification_term4 varchar 100 是 規(guī)格項 423 approve_by_id2 bigint 20 是 審擬人 2ID24 issimple varchar 255 是 是否為簡單成本管理標(biāo)記25 bar_code varchar 255 是26 ments_sh varchar 255 是27 ponent varchar 255 是28 gramme varchar 255 是如表 33 所示,該表為 SINGLE_MATERIAL_BILL_ITEM 表結(jié)構(gòu),用于保存各成本子項明細(xì)信息。數(shù)據(jù)庫的設(shè)計一般主要包括兩個部分:? 對網(wǎng)站系統(tǒng)的設(shè)計進(jìn)行需求分析,確定所需要在數(shù)據(jù)庫中保存的信息。數(shù)據(jù)庫設(shè)計是信息資源管理最有效的手段,數(shù)據(jù)庫設(shè)計就是根據(jù)具體的應(yīng)用環(huán)境,構(gòu)造合理數(shù)據(jù)庫模式,建立數(shù)據(jù)庫邏輯結(jié)構(gòu),有效存儲數(shù)據(jù),滿足用戶實際需求和系統(tǒng)應(yīng)用處理要求。數(shù)據(jù)訪問層,主要是采用 Hibernate 持久層方案,通過 Hibernate 封裝對數(shù)據(jù)層的操作,方便于在不同的數(shù)據(jù)庫系統(tǒng)間移植。圖 31 表示前臺頁面主菜單結(jié)構(gòu)圖:①①①①①①①①①①①①①①①①①①①①①①①①①①16圖 3 1 前臺頁面主菜單 系統(tǒng)用例圖用戶成 本 管 理 模 塊新增成本明細(xì)信息查詢成本信息列表刪除成本明細(xì)信息顯示成本明細(xì)信息 u s e s u s e s 修改成本明細(xì)信息 u s e s u s e s 圖 32 成本管理模塊用例圖 系統(tǒng)設(shè)計 系統(tǒng)層次劃分該系統(tǒng)模塊中,模塊系統(tǒng)共分為五層,分別為表現(xiàn)層、控制層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層,數(shù)據(jù)層,如圖 32 所示。 系統(tǒng)前臺簡要設(shè)計概述該成本管理系統(tǒng)主要是針對服裝企業(yè)的,其成本管理模塊的前臺主要能完成以下功能:(1) 在用戶登錄之后,選擇成本管理中的成本明細(xì)維護(hù),能夠看到自己權(quán)限范圍內(nèi)的所有成本信息。本系統(tǒng)主要應(yīng)有如下要求:? 網(wǎng)頁風(fēng)格符合企業(yè)員工的特點(diǎn),簡單實用。(4) 開發(fā)者活躍,產(chǎn)品有穩(wěn)定的發(fā)展保障。(1) 開源和免費(fèi)的 License,方便需要是研究源代碼、改寫源代碼并進(jìn)行功能定制。但對于那些基于 Java 的中間件應(yīng)用中,設(shè)計采用面向?qū)ο蟮臉I(yè)務(wù)模型和商業(yè)邏輯時,Hibernate 是最有用的。面對復(fù)雜的企業(yè)環(huán)境,同時使用面向?qū)ο笳Z言和關(guān)系數(shù)據(jù)庫是相當(dāng)麻煩的,不但中間的過度難以理解,而且其開發(fā)周期也相當(dāng)長。其作者 Gavin King 在持久層設(shè)計上極富經(jīng)驗,采用非常少的代碼實現(xiàn)了整個框架,同時完全開放源代碼,即使偶爾遇到無法理解的情況,也可以參照源代碼來理解其在持久層上靈巧而智能的設(shè)計。 bean 工廠的概念是 Spring 作為 IOC 容器的基礎(chǔ)。Singleton 是默認(rèn)的也是最常用的對象模型。下一個最高級抽象是 BeanFactory 接口,它是工廠設(shè)計模式的實現(xiàn),允許通過名稱創(chuàng)建和檢索對象。所以,用 Spring AOP 編寫的應(yīng)用程序代碼是松散耦合的。AOP 和 IOC 是補(bǔ)充性的技術(shù),它們都運(yùn)用模塊化方式解決企業(yè)應(yīng)用程序開發(fā)中的復(fù)雜問題。下表列出了 IOC 的一個實現(xiàn)模式。控制反轉(zhuǎn)模式(也稱作依賴性介入)的基本概念是:不創(chuàng)建對象,但是描述創(chuàng)建它們的方式。通過策略接口,MVC 框架變成為高度可配置的, MVC 容納了大量視圖技術(shù),其中包括 JSP、Velocity、Tiles、iText 和 POI。 Spring Web 模塊:Web 上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于 Web 的應(yīng)用程序提供了上下文。異常層次結(jié)構(gòu)簡化了錯誤處理,并且極大地降低了需要編寫的異常代碼數(shù)量(例如打開和關(guān)閉連接)。所以,可以很容易地使 Spring 框架管理的任何對象支持 AOP。BeanFactory 使用控制反轉(zhuǎn) (IOC ) 模式將應(yīng)用程序的配置和依賴性規(guī)范與實際的應(yīng)用程序代碼分開。 七大模塊的架構(gòu),如圖 23 所示。主要作用是為了解決企業(yè)應(yīng)用程序維護(hù)的復(fù)雜性而創(chuàng)建的。(5) 再通過 文件的映射,找到功能邏輯處理結(jié)束后顯示給客戶端用戶看到的頁面,轉(zhuǎn)發(fā)功能通過 ActionForward 對象實現(xiàn)。(1) 客戶端瀏覽器發(fā)出請求。Struts 的自定義標(biāo)記還提供了很多定制頁面的功能。只需要配置ActionMapping 對象即可完成 URI 地址的映射及匹配用戶界面表單和 ActionForm 類的對應(yīng)關(guān)系。根據(jù)不同的請求從 Action 派生具體 Action 處理對象。(11)開發(fā)/測試/部署。(7) 開發(fā)被 ActionMapping 調(diào)用的 Action 對象。(3) 為每一個用戶界面 JSP 文件定義訪問路徑。①①①① ① ①①①①①①①①①①①①①①①①①①①①①①①①①①①① ①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①① ① ①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①①① ①①圖 2 1 MVC 組件關(guān)系和功能模 型封裝應(yīng)用程序狀態(tài)響應(yīng)狀態(tài)查詢應(yīng)用程序功能通知視圖改變10 Struts 框架Struts 已經(jīng)提供了一個非常好的 MVC 框架,利用 Struts 開發(fā) MVC 系統(tǒng)時可以大大加快開發(fā)速度??刂茖訋缀醪蛔鋈魏闻c業(yè)務(wù)有關(guān)的事情,比如登錄驗證這些。在 J2EE 技術(shù)中,常用的表示層技術(shù)主要由 JSP、JSF、Freemarker 等組成。模型(Model)層:也就是軟件業(yè)務(wù)的實現(xiàn)部分。同樣的,這樣的語句可以放在 HTML 文檔頭部或主體的任何部分。//Javascript 結(jié)束:雙斜杠表示 JavaScript 的注釋部分,即從 //開始到行尾的字符都被忽略。同時它又是專門為制作Web 網(wǎng)頁而量身定做的一種簡單的編程語言。JavaScript 是由 Netscape 公司開發(fā)的一種腳本語言(scripting language),或者稱為描述語言。4)Out 對象:主要功能是用于動態(tài)地向客戶端輸出數(shù)據(jù)信息,其主要作用是在 Web 瀏覽器內(nèi)輸出信息。3)Session 對象:主要功能用來保存每個用戶在會話期間的數(shù)據(jù)信息,這樣就方便了會話處理工作。2)Response 對象:主要功能是用來對客戶的請求做出響應(yīng),與 Request 對象對應(yīng)的就是 Response 對象。通過這些內(nèi)置對象,可以實現(xiàn)頁面的一些基本的請求輸入、輸出功能,且可實現(xiàn)數(shù)據(jù)在頁面之間的交互。當(dāng) JSP 頁面使用jsp:useBean標(biāo)記時,表示將引用一個 JavaBean 的實例。2)jsp:include允許包含其他動態(tài)和靜態(tài)文件。 JSP 的工作原理JSP 頁面以擴(kuò)展名為 JSP 的純文本文件的形式存在服務(wù)器上,當(dāng)服務(wù)器接收到客戶端對某個 JSP 頁面的請求時,如果這是對該頁面創(chuàng)建或修改后的第一次請求時,那么 JSP引擎就把該 JSP 頁面內(nèi)容轉(zhuǎn)換成一個純 Java 語言的 Servlet 源碼,然后將其編譯成 Servlet字節(jié)代碼,最后將 Servlet 的執(zhí)行結(jié)果返回至瀏覽器。Web 管理人員和頁面設(shè)計者,能夠編輯和使用 JSP 頁面,而不影響內(nèi)容的生成。Servlet 位于 Web 服務(wù)器內(nèi)部,由 Web 服務(wù)器進(jìn)行加載,該 Web 服務(wù)器必須包含支持 Servlet 的 Java 虛擬機(jī)。JSP最終要編譯為 Servlet 運(yùn)行。 系統(tǒng)開發(fā)技術(shù)服飾企業(yè)生產(chǎn)狀況聯(lián)絡(luò)表系統(tǒng)的開發(fā)技術(shù)是基于 J2EE 架構(gòu)的 SSH 組合技術(shù)。實際上 Tomcat 部分是 Apache 服務(wù)器的擴(kuò)展,但