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

正文內(nèi)容

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

2024-07-21 03:46 本頁面
 

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