国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

基于MVC的Struts在財務(wù)系統(tǒng)中的應(yīng)用

2024-07-21 02:14:57
字體:
供稿:網(wǎng)友
  摘要 對于項目開發(fā)人員來說,要加快系統(tǒng)的開發(fā)速度、提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性,首要的任務(wù)是劃分好系統(tǒng)的層次結(jié)構(gòu),合理地設(shè)計表示邏輯、業(yè)務(wù)處理邏輯和數(shù)據(jù)邏輯。mvc模式就是一個很好的將表示、控制和業(yè)務(wù)處理相分離的解決方案,本文則主要介紹了struts框架下的財務(wù)系統(tǒng)的設(shè)計和實現(xiàn)。
  關(guān)鍵詞  mvc模式;struts框架;web應(yīng)用
  中圖分類號 tp391      文獻(xiàn)標(biāo)識碼  a

  引言
  軟件開發(fā)工作中遇到的很多問題都可能在以往開發(fā)同類軟件的過程中同樣出現(xiàn)過并且已經(jīng)被解決,解決問題時所用到的好的方法、技術(shù)經(jīng)過積累并不斷的歸納、總結(jié)形成一種固定的解決方案、一種模式,以便在日后的系統(tǒng)開發(fā)過程中專門用來解決同類問題。設(shè)計模式就是對以往開發(fā)經(jīng)驗的總結(jié),它的提出使開發(fā)人員可以簡單、方便的復(fù)用成功的設(shè)計方案,而不必每次都做重復(fù)的工作。

  財務(wù)系統(tǒng)具有所涉及的業(yè)務(wù)邏輯復(fù)雜、需求靈活,甚至個別業(yè)務(wù)可能會在系統(tǒng)使用過程中發(fā)生變化的特點,因此如何組織應(yīng)用程序以使其易于維護(hù)和升級便成為擺在開發(fā)人員面前的首要問題。早些時候的應(yīng)用程序開發(fā)是用過程化語言來完成的,它們將數(shù)據(jù)庫查詢語句這樣的數(shù)據(jù)層代碼和html這樣的表示層代碼混合在一起,這樣一來無論是對業(yè)務(wù)邏輯的變更還是對界面顯示的修改都會涉及到應(yīng)用程序的整體,使程序維護(hù)起來相當(dāng)困難。
  web層的解決方案——mvc模式
  mvc模式的提出徹底解決了上述問題。mvc是model(模型)——view(視圖)——controller(控制器)的縮寫,它適用于大型可擴(kuò)展的web應(yīng)用的開發(fā),它強(qiáng)制性地將應(yīng)用程序的輸入、處理和輸出分開,將其劃分為模型、視圖和控制器三個核心部分,使它們各司其職,各自完成不同的任務(wù),其中任何一部分的修改都不會影響其它兩部分。
  在mvc模式中,模型封裝了應(yīng)用問題的核心數(shù)據(jù)、邏輯關(guān)系和業(yè)務(wù)規(guī)則,提供了業(yè)務(wù)邏輯的處理過程。模型一方面被控制器調(diào)用,完成問題處理的操作過程,另一方面為視圖獲取顯示數(shù)據(jù)提供了訪問數(shù)據(jù)的操作。因為模型是與數(shù)據(jù)格式無關(guān)的,因此一個模型可以為多個視圖提供數(shù)據(jù),這樣一個模型一次編寫可以被多個視圖重用,從而避免了代碼的重復(fù)編寫。

  視圖是mvc模式下用戶看到的并與之交互的界面。視圖從模型處獲得數(shù)據(jù),視圖的更新由控制器控制。視圖不包含任何業(yè)務(wù)邏輯的處理,它只是作為一種輸出數(shù)據(jù)的方式。
  mvc模式中,控制器主要起導(dǎo)航的作用,它根據(jù)用戶的輸入調(diào)用相應(yīng)的模型和視圖去完成用戶的請求。控制器本身不輸出任何東西,它接受用戶請求并決定調(diào)用哪個模型構(gòu)件去處理,以及由哪個視圖來顯示模型處理之后返回的數(shù)據(jù)。

  mvc的處理過程是這樣的:對于每一個用戶輸入的請求,首先被控制器接收,并決定由哪個模型來進(jìn)行處理,然后模型通過業(yè)務(wù)處理邏輯處理用戶的請求并返回數(shù)據(jù),最后控制器用相應(yīng)的視圖格式化模型返回的數(shù)據(jù),并通過顯示頁面呈現(xiàn)給用戶。圖1所示為模型、視圖、控制器這三個模塊各自的功能以及它們之間的相互關(guān)系:

圖1

  struts是實現(xiàn)mvc模式的框架

  設(shè)計模式是軟件開發(fā)經(jīng)驗的總結(jié),它是一個概念,是一個邏輯實體,而框架可以看成是基于某一特定平臺的一種或幾種設(shè)計模式的物理實現(xiàn)。設(shè)計模式比框架更抽象,設(shè)計模式只有其實例才能表示為代碼,而框架本身可以用代碼表示,框架是一套設(shè)計詳細(xì)的類,類與類之間功能各異,又彼此聯(lián)系,相輔相成,形成了對某一類問題的可重用的、易擴(kuò)展的解決方案。
  struts是實現(xiàn)mvc模式的通用框架,它由四個主要部分組成,模型、視圖、控制器和xml文件。模型通常由java bean或ejb組件實現(xiàn),負(fù)責(zé)處理業(yè)務(wù)邏輯;視圖包括一組jsp文件,這些文件主要由jsp標(biāo)簽或客戶化標(biāo)簽構(gòu)成,它簡化了jsp頁面的編碼工作;在struts框架中控制器主要包括action servlet類和action類,action servlet是struts的核心部件,它接受用戶的http請求,根據(jù)配置信息將請求轉(zhuǎn)發(fā)給適當(dāng)?shù)腶ction對象,action類負(fù)責(zé)調(diào)用模型的方法,并幫助控制應(yīng)用程序的流程;struts包括web.xml和struts—config.xml兩個配置文件,其中web.xml是web應(yīng)用的發(fā)布描述文件,struts—config.xml是與struts相關(guān)的特殊信息配置的描述文件。

  struts框架下的財務(wù)系統(tǒng)的設(shè)計與實現(xiàn)
  整個項目由財務(wù)系統(tǒng)、物流系統(tǒng)和客戶管理系統(tǒng)三個部分構(gòu)成,由于財務(wù)的結(jié)算業(yè)務(wù)與采購、出入庫和銷售等物流環(huán)節(jié)都存在著一定的聯(lián)系,因此,財務(wù)系統(tǒng)功能的實現(xiàn)以及維護(hù)的方便與否對于整個項目的成敗起著致關(guān)重要的作用。

  財務(wù)系統(tǒng)主要包括與結(jié)算相關(guān)的業(yè)務(wù)處理,如供貨商結(jié)算、客戶結(jié)算、返款處理、各種帳簿的查詢、科目表的維護(hù)等等。下面以客戶結(jié)算為例說明struts框架下系統(tǒng)的設(shè)計與實現(xiàn)。
  用戶選擇客戶結(jié)算子菜單后進(jìn)入客戶結(jié)算頁面,在該頁面上需填入客戶名稱、銷售單編碼、費用的支付方式以及詳細(xì)的收款信息。其中客戶名稱和銷售單編碼支持模糊查詢功能;支付方式包括現(xiàn)金、銀行、預(yù)收款三種方式,可點選輸入;詳細(xì)的收款信息包括業(yè)務(wù)員姓名或編碼、總的結(jié)算金額、登錄帳簿。以上信息均填寫完畢后,可點擊提交,若填寫的信息符合結(jié)算條件,則經(jīng)業(yè)務(wù)處理邏輯處理后,系統(tǒng)向用戶顯示結(jié)算單頁面,若提交不成功,則顯示錯誤信息。web組件之間信息的轉(zhuǎn)發(fā)關(guān)系如圖2所示 

圖2

  ctmbform作為actionform bean可以在視圖和控制器之間傳遞html表單,其屬性與表單中的字段是一一對應(yīng)的,ctmbform的validate()方法可以完成與表單的數(shù)據(jù)格式和語法相關(guān)的有效性檢查,如銷售單編碼、結(jié)算金額不能為空等。

  struts框架的核心控制器組件actionservlet的doget()或dopost()方法在收到用戶請求后都會調(diào)用其process()方法處理請求。首先選擇能夠處理當(dāng)前請求的子應(yīng)用模塊,并在request范圍內(nèi)寫入配置信息和消息資源;之后完成一些預(yù)處理請求操作,在預(yù)處理請求操作的尾部創(chuàng)建并保存ctmbaction實例,并調(diào)用ctmbaction實例的execute()方法,該方法再調(diào)用相應(yīng)模型進(jìn)行實際的業(yè)務(wù)邏輯處理,完成用戶的請求;最后根據(jù)execute()方法返回的結(jié)果執(zhí)行請求轉(zhuǎn)發(fā)或重定向。

  在系統(tǒng)中模型由ejb組件實現(xiàn),系統(tǒng)多層結(jié)構(gòu)的設(shè)計如圖3所示:

 
圖3

  ctmbejb作為一種jndi資源運行在ejb容器中,在多層結(jié)構(gòu)中ctmbejbdelegateimpl業(yè)務(wù)代理實現(xiàn)類無法創(chuàng)建ctmbejb組件,而是通過查找名為“ejb/ctmbejb”的jndi資源獲得該資源的引用。

  ictmb接口的作用是削弱客戶程序與模型的關(guān)系,客戶程序通過該接口來訪問ejb組件的業(yè)務(wù)方法。
  ctmbaction對ejb組件進(jìn)行調(diào)用的時序圖如圖4所示:


圖4

  在多層結(jié)構(gòu)中,業(yè)務(wù)對象bo主要封裝了一些實體,如客戶customerbo、銷售單salesslipbo、結(jié)算單balancingslipbo、應(yīng)收款帳accountsreceivablebo、預(yù)收款帳prereceivingbo、現(xiàn)金帳cashaccountbo和銀行帳bankaccountbo等等。圖5所示為上述七個業(yè)務(wù)對象之間的關(guān)聯(lián)關(guān)系,以及部分業(yè)務(wù)對象的屬性和方法:                               
 

圖5

  數(shù)據(jù)訪問對象(data access object,簡稱dao)是實現(xiàn)持久化框架的一種設(shè)計模式,它的引入可以削弱業(yè)務(wù)處理邏輯和數(shù)據(jù)庫訪問之間的聯(lián)系,它一方面可以將對業(yè)務(wù)對象bo的處理轉(zhuǎn)化為對數(shù)據(jù)庫的操作,另一方面也可以把查詢數(shù)據(jù)庫的結(jié)果映射為業(yè)務(wù)對象bo。dao提供了對關(guān)系數(shù)據(jù)庫操作的接口,如創(chuàng)建數(shù)據(jù)庫,定義表、索引,對表進(jìn)行增、刪、改、查詢等操作。系統(tǒng)選用了ojb軟件,它是一種采用dao設(shè)計模式實現(xiàn)的持久化框架。

  結(jié)束語

  struts為web應(yīng)用程序的開發(fā)提供了框架結(jié)構(gòu),jsp頁面中不包含任何業(yè)務(wù)邏輯,控制器組件actionservlet可使用struts框架所提供的,開發(fā)人員只需將大部分精力集中到實際業(yè)務(wù)邏輯的處理,這樣有利于快速有效的開發(fā)出web應(yīng)用程序。struts框架下用戶顯示、控制邏輯和業(yè)務(wù)處理邏輯相分離,若業(yè)務(wù)需求發(fā)生變化則主要修改用于處理業(yè)務(wù)邏輯的ejb或javabean組件,因此便于系統(tǒng)的維護(hù)和升級。總之,struts框架適用于可擴(kuò)展的大型web應(yīng)用的開發(fā)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 东乌珠穆沁旗| 霍城县| 白水县| 苏尼特右旗| 页游| 奇台县| 离岛区| 龙泉市| 宜兰市| 洛隆县| 化德县| 景宁| 上高县| 松江区| 丰城市| 舒兰市| 云阳县| 南华县| 邮箱| 得荣县| 江西省| 普安县| 宜宾市| 任丘市| 阜阳市| 贵阳市| 五指山市| 涟水县| 霍山县| 临桂县| 北流市| 汤原县| 乌海市| 麻阳| 开原市| 乌鲁木齐县| 榆社县| 肇庆市| 林甸县| 吴桥县| 南召县|