freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于改進(jìn)型mvc設(shè)計(jì)模式的人力資源規(guī)劃系統(tǒng)的研發(fā)畢業(yè)論文-資料下載頁

2025-05-29 23:27本頁面
  

【正文】 一個完整的產(chǎn)品。這個觀念如果應(yīng)用到軟件開發(fā)領(lǐng)域,就是一次性建立小型的、可重用的組件,并且盡可能多地重用,從而使整個開發(fā)過程成為一個整體。軟件組件技術(shù)的核心是組件模型,它定義了組件的結(jié)構(gòu)以及組件是如何與外部進(jìn)行交互的。所有的組件模型都定義了兩種基本元素:組件與容器。組件模型是組件的創(chuàng)建與利用的基礎(chǔ)。換句話說,組件模型提供了創(chuàng)建組件對象的模板。組件模型的容器部分定義了將組件集中起來成為有用結(jié)構(gòu)的方法。容器提供了安排組件以及與其他組件相互作用的語言環(huán)境,例如一組組件的應(yīng)用程序可以作為組件的容器。一個完善的組件模型可支持下列六種主要服務(wù) [32]:內(nèi)省;事件處理;持續(xù)性;布局;對應(yīng)用程序建立容器的支持;對分布式計(jì)算的支持。2. 作為組件的 JavaBeanJavaBean 是 Java 的可重用組件技術(shù)。在 Java 模型中,通過 JavaBean 可以無限擴(kuò)充 Java 程序的功能,通過 JavaBean 的組合可以快速的生成新的應(yīng)用程序。JSP 通過 Java Bean 可擴(kuò)充復(fù)雜的功能,例如文件上傳、發(fā)送 Email 及將業(yè)務(wù)處理或復(fù)雜計(jì)算分離出來成為獨(dú)立可重復(fù)利用的模塊,JSP 對于在 Web 應(yīng)用中集成Java Bean 組件提供了完善的支持,這種支持不僅能縮短開發(fā)時間(可直接利用現(xiàn)華中科技大學(xué)工程碩士學(xué)位論文23有成熟的組件,避免重復(fù)開發(fā)),也為 JSP 應(yīng)用帶來了更多的可伸縮性。在 JSP應(yīng)用中,Java Bean 組件常用來封裝事務(wù)邏輯、數(shù)據(jù)庫操作等,可以很好地實(shí)現(xiàn)業(yè)務(wù)邏輯和前臺程序(如 JSP 文件) 的分離,使得系統(tǒng)具有更好的健壯性和靈活性。大量 J2EE 采用基于實(shí)體 Bean(entity bean)[33]的持久化方式。實(shí)體 Bean 本質(zhì)上是對關(guān)系型數(shù)據(jù)的一種面向?qū)ο蠓庋b,應(yīng)用服務(wù)器通常采用封裝機(jī)制來管理對實(shí)體 Bean的并發(fā)訪問,并應(yīng)用緩存等技術(shù)提高數(shù)據(jù)訪問性能。 JavaScript 技術(shù)JavaScript 是一種基于對象(Object )和事件驅(qū)動(Event Driven),并具有安全性能的腳本語言。使用它的目的是與 HTML 超文本標(biāo)識語言、Java 腳本語言(Java 小程序)一起實(shí)現(xiàn)在一個 Web 頁面中鏈接多個對象,與 Web 客戶交互作用。從而可以開發(fā)客戶端的應(yīng)用程序等。它是通過嵌入在標(biāo)準(zhǔn)的 HTML 語言中實(shí)現(xiàn)的。JavaScript 具有以下幾個基本特征:(1).簡單性。它是一種腳本語言,采用小程序段的方式實(shí)現(xiàn)編程,在程序運(yùn)行過程中被逐行地解釋,它與 HTML 標(biāo)識結(jié)合在一起,方便用戶的使用操作。(2).基于對象的語言。它能運(yùn)用自己已經(jīng)創(chuàng)建的對象。(3).動態(tài)性。它是動態(tài)的,可以直接對用戶或客戶端輸入做出響應(yīng),無須經(jīng)過Web 服務(wù)程序。(4).較強(qiáng)的安全性。它是一種安全性語言,不允許訪問本地硬盤,并不能將數(shù)據(jù)存入到服務(wù)器上,不允許網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過瀏覽器實(shí)現(xiàn)信息瀏覽或動態(tài)交互,從而有效地防止“病毒”的入侵。(5).多平臺性。它依賴于瀏覽器本身,與操作環(huán)境無關(guān)。 IMVC 應(yīng)用框架IMVC 是基于 MVC 設(shè)計(jì)模式,在具體設(shè)計(jì)和實(shí)現(xiàn)中最主要考慮的是如何劃分設(shè)計(jì) Controller、Model 和 View,以及如何解決三者之間的相互聯(lián)系問題。IMVC應(yīng)用框架是由課題組共同完成的,我的分工是 IMVC 應(yīng)用框架的模型研究與實(shí)現(xiàn),因此,本節(jié)重點(diǎn)對 IMVC 模型的部分開展研究。華中科技大學(xué)工程碩士學(xué)位論文24 IMVC 應(yīng)用框架頂級包框架是另一種研究和構(gòu)造軟件體系結(jié)構(gòu)的方法,伴隨著軟件開發(fā)的發(fā)展,在多層的軟件開發(fā)項(xiàng)目中,可重用、易擴(kuò)展的,而且是經(jīng)過良好測試的軟件組件,越來越為人們所青睞。這意味著人們可以將充裕的時間用來分析、構(gòu)建業(yè)務(wù)邏輯的應(yīng)用上,而非繁雜的代碼工程。于是人們將相同類型問題的解決途徑進(jìn)行抽象,抽取成一個應(yīng)用框架。應(yīng)用框架是一個給定應(yīng)用領(lǐng)域中的完全的軟件系統(tǒng)模式,是一個等待實(shí)例化的完整的系統(tǒng),在面向?qū)ο蟓h(huán)境中,簡單地說,應(yīng)用框架由一組類和接口組成,它們相互協(xié)作以解決特定類型的軟件問題。它具有以下特征 [22]:? 框架包括大量類或組件,每一種類或組件都提供了某種概念的抽象。? 框架定義了這些抽象如何協(xié)作解決問題。? 框架組件可以重用。? 框架在更高層次上組織模型。軟件開發(fā)者開始一個軟件項(xiàng)目時,首先應(yīng)該構(gòu)思該軟件應(yīng)用的框架,規(guī)劃軟件模塊,并定義這些模塊之間的接口和關(guān)系??蚣芸梢蕴岣哕浖_發(fā)速度和效率,并且使軟件更加便于維護(hù)。根據(jù) MVC 模式的基本思想,通過對當(dāng)今流行的 Struts 框架包的構(gòu)成進(jìn)行分析研究,提出了 IMVC 應(yīng)用框架的頂級包的構(gòu)成方案,如圖 33 所示。每個包的功能總體規(guī)劃如下:? Architect 包:包含控制器類、模型中數(shù)據(jù)訪問對象類與模型中業(yè)務(wù)對象基礎(chǔ)類以及自定義異常類和系統(tǒng)日志類,是 IMVC 應(yīng)用框架的核心包。? Crm 包:包含與用戶驗(yàn)證相關(guān)的類,供應(yīng)用系統(tǒng)在進(jìn)行用戶驗(yàn)證時調(diào)用。? Database 包:包含模型中與數(shù)據(jù)庫操作相關(guān)的類。? Utility 包:包含 IMVC 應(yīng)用框架中使用的公共實(shí)用工具類。華中科技大學(xué)工程碩士學(xué)位論文25CrmActionConfig Architec UtilyDatbse圖 33 IMVC 應(yīng)用框架的頂級包? Action 包:包含控制業(yè)務(wù)執(zhí)行流程的類。? Config 包:包含 IMVC 應(yīng)用框架中使用的配置文件。在規(guī)劃好 IMVC 應(yīng)用框架頂級包的功能之后,就可以對 IMVC 應(yīng)用框架進(jìn)行具體研究與設(shè)計(jì)。 IMVC 應(yīng)用框架的模型實(shí)現(xiàn)應(yīng)用程序的模型組件是一個組織機(jī)構(gòu)最具價值的軟件工具[34]。模型包含了商業(yè)實(shí)體及控制訪問和修改數(shù)據(jù)的規(guī)則。一定要將其保存在一個單獨(dú)位置,以維護(hù)有效數(shù)據(jù)完整性,減少冗余并增加重用性,這點(diǎn)非常重要。另外,模型應(yīng)該保持對用于訪問業(yè)務(wù)對象及其相關(guān)規(guī)則的客戶機(jī)類型的無關(guān)性。因此,在設(shè)計(jì)模型組件時,有這樣一個原則:“依賴性下行,數(shù)據(jù)上行”。按照上述原則,優(yōu)化設(shè)計(jì)出一種分層模型并加以具體實(shí)現(xiàn)。由于業(yè)務(wù)層的模型包含了商業(yè)實(shí)體、控制訪問和修改數(shù)據(jù)的規(guī)則,是整個應(yīng)用系統(tǒng)的核心部分,不同類型的用戶可以調(diào)用相同的模型進(jìn)行處理,由此可以看到系統(tǒng)的重用在很大程度上取決于模型的重用,因此,增加模型部分的重用性是優(yōu)化模型設(shè)計(jì)的主要目的。由于業(yè)務(wù)層的模型非常復(fù)雜,為此,按照軟件工程的方法,對業(yè)務(wù)層中的模型作進(jìn)一步地劃分,設(shè)計(jì)了圖 34 所示的優(yōu)化分層模型,該模型分為三層:。在該模型中,業(yè)務(wù)對象 Bean 是整個業(yè)務(wù)層的核心,它通過數(shù)據(jù)訪問對象(Data Access Object,簡稱 DAO)訪問后臺數(shù)據(jù)庫系統(tǒng);業(yè)務(wù)代表(Business Delegate Interface,簡稱 BDI)包裝業(yè)務(wù)對象 Bean 并提供表示層代碼訪問業(yè)務(wù)對象 Bean 的接口。這樣劃分的目的有兩個:第一,進(jìn)一步向客戶端隱藏模型的底層組件及其華中科技大學(xué)工程碩士學(xué)位論文26變化,降低模塊間的耦合度,提高模型組件的重用性;第二,通過對業(yè)務(wù)對象Bean 的合理分類與設(shè)計(jì),減少客戶端遠(yuǎn)程調(diào)用的數(shù)目,從而提高網(wǎng)絡(luò)訪問速度。下面對這幾個細(xì)化的層次做進(jìn)一步的設(shè)計(jì)說明。圖 34 優(yōu)化分層模型(1)業(yè)務(wù)對象 Bean業(yè)務(wù)對象就是簡單的現(xiàn)實(shí)世界實(shí)體的軟件抽象,表示商業(yè)域中的一個人、一個地方、一件事或一個概念,業(yè)務(wù)對象由狀態(tài)和行為組成。業(yè)務(wù)對象根據(jù)其行為作用的不同,又可分為實(shí)體業(yè)務(wù)對象、過程業(yè)務(wù)對象和事件業(yè)務(wù)對象三類 [35]。實(shí)體業(yè)務(wù)對象:表示了一個人、地點(diǎn)、事物或概念,它們通常是考慮業(yè)務(wù)中的名詞而從業(yè)務(wù)域中直接抽取 [36]。在 EJB 應(yīng)用程序中,它們作為模型的實(shí)體bean,在非 EJB 的應(yīng)用程序中,它們可能是包含業(yè)務(wù)應(yīng)用程序的狀態(tài)和行為的普通 JavaBean。過程業(yè)務(wù)對象:表達(dá)應(yīng)用程序中的業(yè)務(wù)處理過程或者工作流程任務(wù),它們通常依賴于實(shí)體業(yè)務(wù)對象,是業(yè)務(wù)的動詞 [37]。在 EJB 應(yīng)用程序中,它們作為模型的會話 bean,或者有時作為消息驅(qū)動 bean。在非 EJB 應(yīng)用程序中,它們可能是普通JavaBean,包含特定的行為,作為應(yīng)用程序的管理者或控制者。事件業(yè)務(wù)對象:表達(dá)應(yīng)用程序中由于系統(tǒng)中的一些操作造成或產(chǎn)生的一些事件(異常事件、警告事件、計(jì)時事件)。業(yè)務(wù)對象 Bean 即業(yè)務(wù)對象 Java 類,是整個業(yè)務(wù)層的核心。在設(shè)計(jì)和開發(fā)過程中,針對業(yè)務(wù)的復(fù)雜度,開發(fā)者可以進(jìn)行適當(dāng)?shù)娜∩?,可以采用將三種不同的業(yè)務(wù)對象用不同的業(yè)務(wù)對象 bean 來實(shí)現(xiàn),也可以將兩種或三種不同的業(yè)務(wù)對象合并在一種業(yè)務(wù)對象 bean 中實(shí)現(xiàn),但總目標(biāo)一樣,就是:業(yè)務(wù)對象 Bean 應(yīng)該封裝業(yè)務(wù)對象的狀態(tài)和行為,為上層提供各種接口服務(wù)。數(shù)據(jù)庫表示層代碼數(shù)據(jù)訪問對象業(yè)業(yè)務(wù)代表DBID業(yè)務(wù)對象Bean業(yè)務(wù)層華中科技大學(xué)工程碩士學(xué)位論文27(2)數(shù)據(jù)訪問對象在 Web 應(yīng)用系統(tǒng)中,由于數(shù)據(jù)源不同,數(shù)據(jù)訪問也會不同。異類數(shù)據(jù)源潛在地導(dǎo)致了應(yīng)用程序代碼與數(shù)據(jù)訪問代碼之間的依賴。當(dāng)業(yè)務(wù)對象 bean 需要訪問某數(shù)據(jù)源時,它們可以使用合適的 API 來獲取連接性并操作該數(shù)據(jù)源。但是在這些組件中,由于包含連接性和數(shù)據(jù)訪問代碼,勢必會引入這些組件與數(shù)據(jù)源實(shí)現(xiàn)之間的緊密耦合。組件中這類代碼的依賴性使應(yīng)用程序從某種數(shù)據(jù)源遷移到其它種類的數(shù)據(jù)源將變得非常麻煩和困難。當(dāng)數(shù)據(jù)源變化時,組件也需要變化。解決的方法是:使用數(shù)據(jù)訪問對象(Data Access Object,簡稱 DAO)分離一個應(yīng)用程序的業(yè)務(wù)邏輯和數(shù)據(jù)訪問邏輯間的關(guān)系,用 DAO 來抽象和封裝所有對數(shù)據(jù)源的訪問,DAO 管理著與數(shù)據(jù)源的連接以便于檢索和存儲數(shù)據(jù),DAO 實(shí)現(xiàn)了用來操作數(shù)據(jù)源的訪問機(jī)制,數(shù)據(jù)源可以多種多樣,依賴于 DAO 的業(yè)務(wù)對象 bean 可以使用 DAO 提供的更簡單接口,DAO 完全向客戶端或業(yè)務(wù)對象 bean 隱藏了數(shù)據(jù)源實(shí)現(xiàn)細(xì)節(jié)。這樣,當(dāng)?shù)讓訑?shù)據(jù)源的實(shí)現(xiàn)發(fā)生變化時,DAO 向客戶端或業(yè)務(wù)對象bean 提供的接口不會變化,從而不會影響其客戶端或業(yè)務(wù)組件。通過使用 DAO,業(yè)務(wù)對象可以直接使用數(shù)據(jù)源,而無需了解其實(shí)現(xiàn)的具體細(xì)節(jié);數(shù)據(jù)源類型的改變變得很容易,應(yīng)用的可伸縮性得到了增強(qiáng);業(yè)務(wù)對象通過調(diào)用 DAO 降低了代碼的復(fù)雜度。與此同時,也可看到,引入 DAO 會在系統(tǒng)中添加其他層,增加設(shè)計(jì)的復(fù)雜度,因此,在引入時需要做適當(dāng)?shù)臋?quán)衡.(3)業(yè)務(wù)代表表示層組件(客戶機(jī))直接與業(yè)務(wù)對象交互,它把業(yè)務(wù)對象提供服務(wù)的 API的底層實(shí)現(xiàn)細(xì)節(jié)暴露給表示層,當(dāng)業(yè)務(wù)對象提供的服務(wù)細(xì)節(jié)發(fā)生變化時,在表示層被暴露的實(shí)現(xiàn)代碼需要同步更改;同時,把服務(wù) API 直接暴露給客戶端會強(qiáng)迫客戶端處理與 EJB 技術(shù)分布式屬性相關(guān)的網(wǎng)絡(luò)問題。解決問題的方法是使用業(yè)務(wù)代表,通過業(yè)務(wù)代表來降低表示層客戶端和業(yè)務(wù)服務(wù)間的耦合,業(yè)務(wù)代表通常用 JavaBean 接口來實(shí)現(xiàn),在接口中定義了表示層客戶端調(diào)用業(yè)務(wù)對象所有可能的方法,但方法的具體實(shí)現(xiàn)細(xì)節(jié)被隱藏。根據(jù)實(shí)現(xiàn)策略的不同,業(yè)務(wù)代表會保護(hù)表示層客戶端免受業(yè)務(wù)對象服務(wù)實(shí)現(xiàn)的易變性的影響,這樣,當(dāng)業(yè)務(wù)對象服務(wù)和其底層實(shí)現(xiàn)變化時,不必對表示層客戶端代碼做大量更改 [38]。根據(jù)上述優(yōu)化分層模型的設(shè)計(jì)思想,我們設(shè)計(jì)了幾個相關(guān)的組件來實(shí)現(xiàn)優(yōu)化華中科技大學(xué)工程碩士學(xué)位論文28分層模型,下面對這些組件進(jìn)行具體介紹。 數(shù)據(jù)訪問對象組件的實(shí)現(xiàn)在 Web 應(yīng)用系統(tǒng)中,由于數(shù)據(jù)源不同,數(shù)據(jù)訪問也會不同。異類數(shù)據(jù)源潛在地導(dǎo)致了應(yīng)用程序代碼與數(shù)據(jù)訪問代碼之間的依賴。當(dāng)業(yè)務(wù)對象 bean 需要訪問某數(shù)據(jù)源時,它們可以使用合適的 API 來獲取連接性并操作該數(shù)據(jù)源。但是在這些組件中,由于包含連接性和數(shù)據(jù)訪問代碼,勢必會引入這些組件與數(shù)據(jù)源實(shí)現(xiàn)之間的緊密耦合。組件中這類代碼的依賴性使應(yīng)用程序從某種數(shù)據(jù)源遷移到其它種類的數(shù)據(jù)源將變得非常麻煩和困難。當(dāng)數(shù)據(jù)源變化時,組件也需要變化。解決的方法是:使用數(shù)據(jù)訪問對象(Data Access Object,簡稱 DAO)分離一個應(yīng)用程序的業(yè)務(wù)邏輯和數(shù)據(jù)訪問邏輯間的關(guān)系,用 DAO 來抽象和封裝所有對數(shù)據(jù)源的訪問,DAO 管理著與數(shù)據(jù)源的連接以便于檢索和存儲數(shù)據(jù),DAO 實(shí)現(xiàn)了用來操作數(shù)據(jù)源的訪問機(jī)制,數(shù)據(jù)源可以多種多樣,依賴于 DAO 的業(yè)務(wù)對象 bean 可以使用 DAO 提供的更簡單接口,DAO 完全向客戶端或業(yè)務(wù)對象 bean 隱藏了數(shù)據(jù)源實(shí)現(xiàn)細(xì)節(jié)。這樣,當(dāng)?shù)讓訑?shù)據(jù)源的實(shí)現(xiàn)發(fā)生變化時,DAO 向客戶端或業(yè)務(wù)對象bean 提供的接口不會變化,從而不會影響其客戶端或業(yè)務(wù)組件。通過使用 DAO,業(yè)務(wù)對象可以直接使用數(shù)據(jù)源,而無需了解其實(shí)現(xiàn)的具體細(xì)節(jié);數(shù)據(jù)源類型的改變變得很容易,應(yīng)用的可伸縮性得到了增強(qiáng);業(yè)務(wù)對象通過調(diào)用 DAO 降低了代碼的復(fù)雜度。與此同時,也可看到,引入 DAO 會在系統(tǒng)中添加其他層,增加設(shè)計(jì)的復(fù)雜度,因此,在引入時需要做適當(dāng)?shù)臋?quán)衡。在 IMVC 的模型組件中,數(shù)據(jù)訪問對象組件的作用是實(shí)現(xiàn)事務(wù)控制與數(shù)據(jù)庫連接操作,由一組 JavaBean 和接口來實(shí)現(xiàn)。主要包括:TransactionControl、Transationcontrolpool、connectionpoolManager、Context、Constant 等 5 個自定義的 Java 類。下面對各相關(guān)類的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行介紹。(1)Context 類它是一個包含了數(shù)據(jù)庫用戶信息、事務(wù)控制、特定本地信息及業(yè)務(wù)角色
點(diǎn)擊復(fù)制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1