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

正文內容

基于mvc客戶管理子系統(tǒng)的設計與實現(xiàn)(編輯修改稿)

2025-07-21 03:46 本頁面
 

【文章內容簡介】 此范圍下是否存在對應的 Form Bean的實例;(4)假如在當前范圍內,相應的 Form Bean的實例己經(jīng)存在,而且對當前的請求來說是同一類型的話,就可以重用,否則,就要重新構建一個 Form Bean的實例;(5)調用Form Bean的reset()方法;(6)調用對應的set()方法,對狀態(tài)屬性賦值;(7)如果validated屬性值被設置為true,則調用Form Bean的validate()方法;(8)如果validate()方法沒有返回錯誤,控制器將ActionForm作為參數(shù),傳給Action實例的execute()方法執(zhí)行。 4. ActionForward當Action實例的execute()方法運行完畢后,控制器根據(jù)Mapping可以將響應信息轉到適當?shù)牡胤?,ActionForward的主要功能就是對將要轉向的視圖的地址的一個封裝。轉向的各種屬性也可以在配置文件中設置性,這樣就大大提高了軟件的復用性和可維護性。 5. ActionMappingActionMapping以Java的形式封裝了怎樣將一個請求URL映射到與其對應的Action的一些信息。ActionMapping對象幫助進行框架內部的流程控制,它們可以將請求URL映射到Action類,并且將Action類與 ActionForm Bean相關聯(lián)。Struts框架的控制器ActionServlet在內部使用這些映射將控制轉移到特定的Action類的實例。 Struts的工作流程采用Struts框架開發(fā)Web應用系統(tǒng)時,在Web應用啟動時就會自動地加載并初始化ActionServlet,并把它們存放到各種對應的配置對象中。當ActionServlet接受到一個客戶請求時,將執(zhí)行如下流程:(l)檢索與用戶請求匹配的Action實例,如果不存在,控制器直接將請求轉發(fā)給JSP或靜態(tài)頁面。如果有對應的Action,并且這個Action有一個相應的Form Bean,ActionForm被實例化并用Http請求的數(shù)據(jù)來填充其屬性,然后保存在ServletCotenxt中,以備其它Action對象或JSP調用。(2),對應的相關的 Form Bean的信息也一起發(fā)送給Action類的execute()方法。(3) Action的execute()方法返回一個ActionForward對象,控制器ActionServlet再通過該ActionForward對象來進行轉發(fā)工作。(4) Action根據(jù)業(yè)務處理的不同結果返回一個相應的目標響應對象給總控制器,這個目標響應對象可以對應一個具體的JSP頁面或者是另外一個Action。(5)總控制器ActionServlet根據(jù)業(yè)務功能Action返回的目標響應對象(多數(shù)情況下,該響應目標是一個JSP頁面),將Http請求轉換到該目標響應對象中,進一步將結果頁面展現(xiàn)給用戶。 Struts框架實現(xiàn)MVC模型Struts實質上就是JSP Model2的基礎上實現(xiàn)的一個MVC模式框架,MVC設計模式為構建可擴展、可重用的體系結構打下了很好的基礎,該設計模式需要用戶將自己的代碼抽象出來,把項目在一定的程度上分解為表示,邏輯和控制三部分,每部分之間的關系相對較小,以便使得軟件結構更加靈活,并具有較好的可重用性和可擴展性。在Struts框架中,模型一般有實現(xiàn)業(yè)務邏輯的JavaBean或EJB組件構成,控制器由ActionServlet和Action來實現(xiàn),視圖由一組JSP文件構成。 Struts實現(xiàn)的MVC模型Struts是Apache組織的一個項目,提供了一個實現(xiàn)MVC架構的高度自動化的方式,作為一個MVC的框架,Struts對Model、View和Controller都提供了對應的實現(xiàn)組件:(l)控制器(Controller):控制器的作用是從客戶端接收請求,并且選擇執(zhí)行相應的業(yè)務邏輯,然后把響應結果送回到客戶端。在Struts中Controller功能由ActionServlet和ActionMapping對象構成。ActionServlet是MVC設計模式的決策控制部分,也是Struts框架的核心。它根據(jù)ActionMapping把Http消息形式的用戶請求轉換成相應的應用程序的動作。ActionServlet還負責用相應的請求參數(shù)填充ActionForm(通常稱之為FormBean),并將其傳給對應的動作類(通常稱之為ActionBean)。動作類Action來實現(xiàn)核心商業(yè)邏輯,它可以訪問JavaBean或調用EJB,最后動作類指向相應的JSP文件,最終生成相關的視圖。ActionServlet包括一組基于配置的ActionMapping對象,每個ActionMapping對象實現(xiàn)了一個請求到一個具體的Model部分中Action處理器對象類之間的點到點的映射。ActionMapping中有Action對象的名字和地址的描述,當有請求傳入Controller時,它把請求的路徑映射到Action的地址,并把請求傳給那個Action類。ActionMapping類也包括一些程序中可能的唯一的信息,例如本地變量,特定環(huán)境數(shù)據(jù),或者URL。(2)模型(Model):表示應用程序的狀態(tài)和業(yè)務邏輯[9]。MVC系統(tǒng)中的Model部分從概念上可以分為兩類:系統(tǒng)的內部狀態(tài)和改變系統(tǒng)狀態(tài)的動作。Struts為Model部分提供了Action和ActionForm對象,所有的Action處理器對象都是程序開發(fā)者從Struts的Action類派生的子類,并對其中主要的方法進行覆蓋。Action處理器對象封裝了具體的業(yè)務處理邏輯,處理具體的業(yè)務邏輯操作,并且把響應提交到合適的View組件以產生響應。Struts提供的ActionForm組件對象,可以通過定義屬性描述客戶端表單數(shù)據(jù)。我們可以從它派生子類的對象,利用它可以實現(xiàn)對客戶端的表單數(shù)據(jù)的良好封裝和支持,相應的Action處理器對象可以直接對它的表單數(shù)據(jù)進行讀寫,而不再需要和Request、Response對象進行數(shù)據(jù)交互,通過ActionForm組件對象實現(xiàn)了對View和Model之間非持久性數(shù)據(jù)交互的支持。(3)視圖(View):視圖是用戶看到并與之交互的界面。Struts應用中的View部分是通過JSP技術實現(xiàn)的。Struts提供了自定義的標簽庫,通過使用這些標簽定義的JSP表單可以和Model部分中的ActionForm的映射,完成對用戶數(shù)據(jù)的相關封裝,同時還可以使用這些標簽來豐富JSP頁面。 Struts框架開發(fā)的優(yōu)缺點Struts是一個優(yōu)秀的基于J2EE的MVC應用框架,現(xiàn)在己經(jīng)越來越廣泛的運用于各種企業(yè)平臺之上。Struts在程序開發(fā)中有自身的優(yōu)缺點,具體表現(xiàn)在以下幾個方面:(l)具有MVC模型所有的特點和優(yōu)點,簡化了基于MVC模型的應用程序的開發(fā)。(2)允許開發(fā)人員使用XML文件來配置很多默認的框架。(3)它提供了一個靈活的機制來處理異常,而且提供了一個方便的方法對應用程序的信息進行國際化。(4)開源項目發(fā)展較快,但代碼、設計變動較大,利用不當會對系統(tǒng)的維護和升級不利。(5)Struts框架主要是針對表示層設計的,對后端的邏輯層的支持不強。Web應用系統(tǒng)的開發(fā),很多時候業(yè)務邏輯的處理都會是和后端的數(shù)據(jù)庫進行操作,然而Struts只為視圖、控制器提供了現(xiàn)成的框架,對于模型提供框架支持[10]。如果直接使用該框架進行開發(fā),就需要直接在用戶的業(yè)務邏輯中嵌入SQL代碼,這樣能夠加快程序開發(fā),但是會造成業(yè)務邏輯實現(xiàn)和關系數(shù)據(jù)庫的訪問實現(xiàn)的直接耦合,一旦數(shù)據(jù)庫的列或相關屬性發(fā)生一些簡單的改變,都會導致大量源代碼的修改,這個問題可以通過采用EJB或結合Hibernate等第三方工具來解決。對Struts框架進行不同的擴充,就可以得到符合很多設計要求的框架。 數(shù)據(jù)持久技術與Hibernate 在采用了Struts技術的框架中,Struts簡化了Web層的開發(fā),實現(xiàn)了應用程序的顯示邏輯和業(yè)務邏輯的分離,使應用程序更趨模塊化,應用程序更加容易維護。這種應用程序的基本架構是MVC(Struts)+DAO(Data Access Object)+JDBC+Databases。為了進一步地提高代碼的可復用性和可維護性,提高開發(fā)效率,需要一個更加有效的架構。因為大多數(shù)的應用程序都涉及到的數(shù)據(jù)庫操作,通常數(shù)據(jù)庫表會很多而且關系復雜,如果使用DAO+JDBC訪問數(shù)據(jù)庫將會使得編程過程復雜化,進而帶來的是大量的維護工作,特別是層與層之間的耦合性大,表格屬性的變動將極大的影響代碼的維護,因此需要有一種方便通用的方案來解決這個問題。這里將采用對象/關系映射(Object/Relational Mapping)的數(shù)據(jù)持久化技術來簡化編程的復雜度,目前實現(xiàn)對象關系映射也已經(jīng)有一些比較成熟的工具,如Caster,JDOGenie,Hibernate等。本文主要應用Hibernate:在Struts中,不需要太多的代碼,它能夠將對象映射到關系數(shù)據(jù)庫中的行,不需要編寫復雜的SQL語句,開發(fā)架構也就變成Struts+ DAO+ Hibernate+Database,毫無疑問使用Hibemate實現(xiàn)持久層是一種有效的選擇,它可以大大減少操作數(shù)據(jù)庫的工作量,并且使得系統(tǒng)更加易于維護。 數(shù)據(jù)持久技術簡介當前的應用程序中應用的數(shù)據(jù)主要有文件、對象數(shù)據(jù)庫、關系型數(shù)據(jù)庫等,其中關系型數(shù)據(jù)庫的應用最為廣泛,具有很高的可靠性和可擴展性,支持強大的查詢檢索功能:面向對象的設計是應用一些同時具有屬性和行為的對象來實現(xiàn)的符合人們認識習慣的編程技術。關系數(shù)據(jù)庫和面向對象技術在現(xiàn)今的很多大型應用中都有廣泛地應用,將這兩者結合起來將會出現(xiàn)更加復雜和高效的軟件系統(tǒng),然而很明顯面向對象設計使用的對象范例與關系數(shù)據(jù)庫使用的關系范例之間存在著“阻抗不匹配”[11]。對象范例基于軟件工程的一些原理耦合、聚合和封裝,而關系范例則基于數(shù)學原理。兩種不同的理論基礎必將導致各自有不同的側重點,對象范例側重于從包含數(shù)據(jù)和行為的對象中構建應用程序,而關系范例則主要側重于對數(shù)據(jù)的存儲。但是,隨著面向對象語言的快速發(fā)展應用和關系型數(shù)據(jù)庫的成熟,出現(xiàn)了這樣一個矛盾:數(shù)據(jù)庫是關系型的,以記錄的格式來存儲數(shù)據(jù);編程語言是面向對象的,數(shù)據(jù)以對象的形式存在并被應用程序訪問。數(shù)據(jù)持久層的提出就是在對象——關系數(shù)據(jù)庫之間提供一個成功的映射解決方案,盡可能彌補這兩種差異[12]。現(xiàn)今在項目中使用的實現(xiàn)數(shù)據(jù)持久層的方法有三種:一就是將SQL語句嵌入相關的業(yè)務邏輯實現(xiàn)類中,這樣做雖然會加快開發(fā)速度,經(jīng)常使用于小型的應用系統(tǒng)中,但它也會使程序的維護和擴張非常困難,所以這種做法很常見卻并不是個好的選擇;另一種是將SQL語句封裝到獨立的類中,這種做法并沒有改善以上的設計,只是將可能會在未來改動的SQL語句集中到單獨的類中;最后一種就是將數(shù)據(jù)庫表映射為對應的對象類,這樣就實現(xiàn)了面向對象的開發(fā)設計,也會使程序的維護和擴展變得更加容易[13]。Java語言有很多種數(shù)據(jù)持久化的實現(xiàn)方式,如 Object Serialization,JDBC和EJB,但相比較來說比較有效的應該是O/R Mapping技術,它給以上兩者之間提供了一個很好的過渡層,實現(xiàn)了面向對象的設計思想,能很好解決“阻抗不匹配”的問題,并且很快就得到了廣泛地應用。目前,Hibernate是基于。O/R Mapping實現(xiàn)數(shù)據(jù)持久技術的比較成熟且得到廣泛應用的框架,利用該框架來實現(xiàn)數(shù)據(jù)持久化,會更加有利于系統(tǒng)的維護和移植。 Hibernate的概述和特點Hibernate是一種很好的ORM(Object/Relational Mapping)映射工具,支持使用各種Java思想如:inheritance,association,position,collections等實現(xiàn)的對象。它可以直接映射大部分的JavaBean而不需要做任何修改,即使修改最多也就是在對應的Bean里面加上一些私有訪問方法;可以將一個用戶定義的多個實例映射到一張表的同一行。還可以用代理模式簡化載入類的過程[14]。對于使用JDBC和SQL手工操作數(shù)據(jù)庫來說,使用Hibernate,可以大大減少操作數(shù)據(jù)庫的工作量。因此使用它,既可以用來在Java應用程序中取代大部分JDBC代碼,也可以很方便地整合到系統(tǒng)中作為持久層框架。Hibernate使用數(shù)據(jù)庫和配置文件數(shù)據(jù)來給應用程序提供相應的持久化服務和持久化的對象PO(Persistent Objects)。,可以省去大量復雜的JDBC編程,Hibernate可以支持17種數(shù)據(jù)庫,同時它也支持連接池應用。(1)Hibernate是JDBC的輕量級的對象封裝,它是一個獨立的對象持久層框架。Hibernate的特點主要是簡單、易用、強大、靈活而且速度夠快。Hibernate可以代替JDBC的編程應用的場合,例如Java應用程序中訪問數(shù)據(jù)庫部分的代碼,DAO模型中接入數(shù)據(jù)庫時的訪問代碼,甚至可以是BMP里面的訪問數(shù)據(jù)庫的代碼。另外,Hibernate擁有自己的功能強大的查詢語言 (HQL),HQL與SQL非常相似,HQL基于SQL,但它提供了更加面向對象的封裝。(2)Hibernate不同于Entity Bean。Entity Bean由容器處理大部分的數(shù)據(jù)完整性、資源管理和并發(fā)性功能,因此開發(fā)人員只需要關注業(yè)務邏輯和數(shù)據(jù)處理。從軟件整體的框架來看,Hibernate不能用于完全替代 Entity Bean。Hibernate和 Entity Bean都為程序員實現(xiàn)了透明的持久性,而且程序員都不需要關心太多的技術細節(jié)[15]。Hibernate另外也為我們提供了更靈活的事務管理機制,Hibernate使用Session來管理事務,而 Entity Bean則將事務管理委派給了EJB容器。Hibernate雖然具有自己的事務管理,但是實際上它的事務管理是對 JDBC Transaction的封裝,或者是對 JTA Transaction的封裝,也就是上面提到的,Hibernate是對JDBC的輕量級對
點擊復制文檔內容
醫(yī)療健康相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1