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

正文內(nèi)容

武漢大學(xué)工程碩士專(zhuān)業(yè)學(xué)位論文模板-在線(xiàn)瀏覽

2024-09-14 02:05本頁(yè)面
  

【正文】 容的顯示、業(yè)務(wù)邏輯的編寫(xiě)以及流程的控制,從而快速地完成應(yīng)用開(kāi)發(fā)。其具體的實(shí)現(xiàn)方式如圖22所示。正是由于JSP頁(yè)面本身同時(shí)充當(dāng)了View和Controller兩種角色,控制邏輯和表示層邏輯混雜在一起,導(dǎo)致代碼的可重用性和可擴(kuò)展性下降。在Model 2中采用Servlet作為控制器(Controller),負(fù)責(zé)接收客戶(hù)端Web瀏覽器發(fā)送來(lái)的所有請(qǐng)求,并根據(jù)處理的不同結(jié)果,轉(zhuǎn)發(fā)到對(duì)應(yīng)的JSP頁(yè)面(View)實(shí)現(xiàn)在瀏覽器客戶(hù)端的顯示。由于引入了MVC設(shè)計(jì)模式,Model 2實(shí)際上是實(shí)現(xiàn)了基于組件的開(kāi)發(fā),在整個(gè)軟件開(kāi)發(fā)過(guò)程中實(shí)現(xiàn)了具體清晰的邏輯劃分,能夠有效的區(qū)分不同的角色,這就更適合于大規(guī)模系統(tǒng)的開(kāi)發(fā)和管理。 Struts概述作為基于MVC設(shè)計(jì)模式的Web應(yīng)用的一種典型體現(xiàn),Struts架構(gòu)實(shí)際上是建立在Model 2基礎(chǔ)之上的,對(duì)Model、View和Controller都提供了現(xiàn)成組件,其實(shí)現(xiàn)方式如圖24所示。從View角度看, ,Java開(kāi)發(fā)者繼承該類(lèi)來(lái)創(chuàng)建表單bean。 從Controller角度看,在Struts體系機(jī)構(gòu)中, Controller主要是ActionServlet,但是對(duì)于業(yè)務(wù)邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個(gè)組件協(xié)調(diào)完成(也許這幾個(gè)組件,應(yīng)該劃分到模型中的業(yè)務(wù)邏輯一塊)。 Struts核心組件對(duì)于Struts 如何控制、處理客戶(hù)請(qǐng)求,讓我們通過(guò)對(duì)struts的四個(gè)核心組件介紹來(lái)具體說(shuō)明。u Struts ActionServlet ,其在Struts 框架中扮演的角色是中心控制器??刂破鰽ctionServlet主要負(fù)責(zé)將HTTP的客戶(hù)請(qǐng)求信息組裝后,根據(jù)配置文件的指定描述,轉(zhuǎn)發(fā)到適當(dāng)?shù)奶幚砥?。同樣,ActoinServlet必須在Web Application配置文件()中描述。Action 類(lèi)主要負(fù)責(zé)將客戶(hù)請(qǐng)求映射到處理這些請(qǐng)求的業(yè)務(wù)邏輯Bean,再轉(zhuǎn)向生成響應(yīng)回送給客戶(hù)端的頁(yè)面,實(shí)際上充當(dāng)?shù)氖荂ontroller和Model之間的一個(gè)適配器(Adaptor),其功能就是將請(qǐng)求與業(yè)務(wù)邏輯分開(kāi)。而且Action類(lèi)通常還提供了其它的輔助功能,比如:認(rèn)證(authorization)、日志(logging)和數(shù)據(jù)驗(yàn)證(validation)。在系統(tǒng)啟動(dòng)初始化的時(shí)候,會(huì)對(duì)這些配置信息進(jìn)行處理,系統(tǒng)針對(duì)每個(gè)action,以供struts應(yīng)用程序運(yùn)行期間使用。u ActionForwardAction類(lèi)的execute()方法,返回值即為ActionForward類(lèi)型。ActionForward對(duì)象映射的是配置文件()中的forward元素,封裝了目標(biāo)響應(yīng)頁(yè)面的URI。具體來(lái)說(shuō),ActionForm Bean對(duì)象主要用于保存用戶(hù)請(qǐng)求表單中的數(shù)據(jù),并可保持其狀態(tài)的連續(xù)性,即在不同的頁(yè)面間傳遞這些數(shù)據(jù)。 Struts 的工作流程Struts架構(gòu)從接收請(qǐng)求到返回響應(yīng)的工作流程如圖25所示。比如配置文件中的Action映射定義都保存在ActionConfig集合中。圖25 Struts請(qǐng)求響應(yīng)流程在控制器調(diào)用具體的Action的Execute方法之前,ActionForm對(duì)象將利用Http請(qǐng)求中的參數(shù)來(lái)填充自己。Struts將會(huì)使用HttpServLetRequest的相應(yīng)字段來(lái)設(shè)置UserActionForm的狀態(tài)。如果執(zhí)行成功,ActionForm自動(dòng)將這些參數(shù)信息以JavaBean(一般稱(chēng)之為Form Bean)的方式保存在ServletContext中,這樣它們就可以被其他Action對(duì)象或者JSP調(diào)用。控制器從這個(gè)對(duì)象中獲取下一個(gè)視圖的路徑和重定向?qū)傩?,最終將頁(yè)面顯示給用戶(hù)。本章主要介紹了ORM機(jī)制、Hibernate的核心接口以及Hibernate的檢索方式。它提供一個(gè)易用的框架來(lái)實(shí)現(xiàn)把一個(gè)面向?qū)ο蟮挠蚰P陀成涞揭粋鹘y(tǒng)的關(guān)系數(shù)據(jù)庫(kù)。Hibernate技術(shù)本質(zhì)上是一個(gè)提供數(shù)據(jù)庫(kù)服務(wù)的中間件。 ORM介紹ORM(即對(duì)象關(guān)系映射)模式指的是在單個(gè)組件中負(fù)責(zé)所有實(shí)體域?qū)ο蟮某志没庋b數(shù)據(jù)訪(fǎng)問(wèn)細(xì)節(jié)。如下圖所示。域模型和關(guān)系模型都分別建立在概念模型的基礎(chǔ)上。描述對(duì)象和關(guān)系數(shù)據(jù)庫(kù)之間映射細(xì)節(jié)的元數(shù)據(jù)通常采用XML格式,并且存放在專(zhuān)門(mén)的對(duì)象關(guān)系映射文件中。 Hibernate的核心接口應(yīng)用程序可以直接通過(guò)Hibernate API訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。使用這些接口可以?xún)?chǔ)存和取出持久對(duì)象或?qū)κ聞?wù)進(jìn)行控制。 圖33 Hibernate的核心接口的類(lèi)框圖u Session接口 Session(會(huì)話(huà))接口是Hibernate應(yīng)用使用最廣泛的接口。Session不是線(xiàn)程安全的,因此在設(shè)計(jì)軟件架構(gòu)時(shí),應(yīng)該避免多個(gè)線(xiàn)程共享同一個(gè)Session實(shí)例。這意味著在程序中根據(jù)需要可以經(jīng)常創(chuàng)建或銷(xiāo)毀Session對(duì)象??梢院?jiǎn)單地認(rèn)為會(huì)話(huà)是對(duì)于一個(gè)單獨(dú)的工作單元已裝載對(duì)象的緩存或集合。有時(shí)也將會(huì)話(huà)稱(chēng)為持續(xù)性管理器,因?yàn)樗彩桥c持續(xù)性有關(guān)的操作例如存儲(chǔ)和取出對(duì)象的接口。一個(gè)SessionFactory實(shí)例對(duì)應(yīng)一個(gè)數(shù)據(jù)存儲(chǔ)源。會(huì)話(huà)工廠緩存了生成的SQL語(yǔ)句和Hibernate在運(yùn)行時(shí)使用的映射元數(shù)據(jù)等。所以它是重量級(jí)的,這意味著不能隨意創(chuàng)建或銷(xiāo)毀它的實(shí)例。如果應(yīng)用同時(shí)訪(fǎng)問(wèn)多個(gè)數(shù)據(jù)庫(kù),則需要為每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)單獨(dú)的會(huì)話(huà)工廠實(shí)例。Hibernate使用一個(gè)配置實(shí)例來(lái)指定映射文件的位置和Hibernate的特定屬性,然后創(chuàng)建會(huì)話(huà)工廠。Hibernate應(yīng)用可以選擇不使用這個(gè)接口,而是在它們自己的底層代碼中管理事務(wù)。這有助于保持Hibernate應(yīng)用在不同類(lèi)型的執(zhí)行環(huán)境或容器中的可移植性。Query實(shí)例包裝了一個(gè)HQL(Hibernate Query Language)查詢(xún)語(yǔ)句,HQL查詢(xún)語(yǔ)句類(lèi)似于SQL查詢(xún)語(yǔ)句,但HQL查詢(xún)語(yǔ)句是面向?qū)ο蟮?,它引用?lèi)名及類(lèi)的屬性名,而不是表名及表的字段名。 Hibernate的檢索方式從數(shù)據(jù)庫(kù)中檢索對(duì)象是使用Hibernate最有趣(也是最復(fù)雜)的部分。根據(jù)已經(jīng)加載的對(duì)象,導(dǎo)航到其他對(duì)象。如果Session是打開(kāi)的,當(dāng)你導(dǎo)航圖時(shí),Hibernate會(huì)自動(dòng)裝載圖的節(jié)點(diǎn)。當(dāng)對(duì)象的唯一標(biāo)識(shí)符值是已知的時(shí)候,通過(guò)標(biāo)識(shí)符檢索是最方便最有性能的方法。③HQL檢索方式。Session的find()方法用于執(zhí)行HQL查詢(xún)語(yǔ)句。這是Hibernate使用的最為廣泛的一種檢索方式。使用QBC(Query By Criteria)API來(lái)檢索對(duì)象。⑤本地SQL檢索方式。 第四章 Spring技術(shù)介紹Spring 是一個(gè)以控制反轉(zhuǎn)(Inversion of Control)原則為基礎(chǔ)的輕量級(jí)框架。本章主要闡述了Spring框架的七個(gè)功能模塊:Spring核心模塊、Spring AOP模塊、Spring上下文(Context)模塊、Spring Web模塊、Spring DAO模塊、Spring ORM模塊、Spring Web MVC模塊以及Spring IoC、Spring Bean的封裝機(jī)制和Spring AOP。Spring框架提供一種簡(jiǎn)單的開(kāi)發(fā)技術(shù),用于自動(dòng)化處理工程中大量的屬性文件和助理類(lèi)。Spring 模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理 bean 的方式,圖41所示。每個(gè)模塊的功能如下:① Spring核心容器模塊:核心容器提供 Spring 框架的基本功能。BeanFactory 使用控制反轉(zhuǎn) (IOC) 模式將應(yīng)用程序的配置和依賴(lài)性規(guī)范與實(shí)際的應(yīng)用程序代碼分開(kāi)。Spring 上下文模塊除了繼承Spring核心模塊的功能外,還添加了用于資源綁定、事件移植、資源裝載以及透明地裝載上下文等功能。③ Spring AOP:通過(guò)配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。Spring AOP 模塊為基于 Spring 的應(yīng)用程序中的對(duì)象提供了事務(wù)管理服務(wù)。④ Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來(lái)管理異常處理和不同數(shù)據(jù)庫(kù)供應(yīng)商拋出的錯(cuò)誤消息。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結(jié)構(gòu)。⑤ Spring ORM:Spring 框架插入了若干個(gè) ORM 框架,從而提供了 ORM 的對(duì)象關(guān)系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。借助于Spring框架提供的簡(jiǎn)單事務(wù)聲明,開(kāi)發(fā)者能夠很容易實(shí)現(xiàn)對(duì)O/R Mapping中操作的事務(wù)控制。所以,Spring 框架支持與 Jakarta Struts 的集成。⑦ Spring MVC 框架:MVC 框架是一個(gè)全功能的構(gòu)建 Web 應(yīng)用程序的 MVC 實(shí)現(xiàn)。 Spring IoC(Inversion of control)控制反轉(zhuǎn)(IoC)也稱(chēng)依賴(lài)注入(Dependence Injection簡(jiǎn)稱(chēng)DI),它的基本概念是:不創(chuàng)建對(duì)象,但是描述創(chuàng)建它們的方式。容器 (在 Spring 框架中是 IOC 容器) 負(fù)責(zé)將這些聯(lián)系在一起。這也就是所謂“控制反轉(zhuǎn)”的概念所在:控制權(quán)由應(yīng)用代碼中轉(zhuǎn)到了外部容器,控制權(quán)的轉(zhuǎn)移,是所謂反轉(zhuǎn)。而Type2和Type3型的依賴(lài)注入實(shí)現(xiàn)是目前主流的IoC實(shí)現(xiàn)模式。為了實(shí)現(xiàn)對(duì)Spring IoC容器的訪(fǎng)問(wèn),應(yīng)用代碼可以通過(guò)如下兩個(gè)接口完成。它是工廠設(shè)計(jì)模式的實(shí)現(xiàn),允許通過(guò)名稱(chēng)創(chuàng)建和檢索對(duì)象,也可以管理對(duì)象之間的關(guān)系② ApplicationContext:..context包中。下面具體介紹這兩個(gè)接口。當(dāng)應(yīng)用創(chuàng)建BeanFactory實(shí)例時(shí),實(shí)際上是完成了JavaBean的實(shí)例化、配置以及管理,即BeanFactory在訪(fǎng)問(wèn)和操作IoC容器的初期充當(dāng)了IoC容器的作用??膳渲玫捻?xiàng)目有:Bean屬性值及依賴(lài)關(guān)系(對(duì)其它Bean的引用)、Bean的創(chuàng)建模式(是否Singleton模式,即是否只針對(duì)指定類(lèi)維持全局唯一的實(shí)例)、Bean的初始化和銷(xiāo)毀方法。最常用的 BeanFactory 定義是 XmlBeanFactory,它根據(jù) XML 文件中的定義裝入 bean,然后調(diào)用BeanFactory實(shí)例的getBean()方法,傳入要檢索的Bean的名稱(chēng)就可以檢索出應(yīng)用程序中所需要的Bean。u ApplicationContext從上述分析可知,為了從BeanFactory獲取JavaBean實(shí)例,必須通過(guò)應(yīng)用代碼顯示的實(shí)化BeanFactory。與獲取BeanFactory實(shí)例不同,ApplicationContext實(shí)例可以以聲明的方式使用它, 或者除了提供了BeanFactory的所有功能,ApplicationContext提供了以下擴(kuò)展功能: ①?lài)?guó)際化支持,對(duì)程序中的語(yǔ)言信息(如提示信息)進(jìn)行定義,將程序中的提示信息抽取到配置文件中加以定義,為我們進(jìn)行應(yīng)用的各語(yǔ)言版本轉(zhuǎn)換提供了極大的靈活性。③事件傳播事件傳播特性為系統(tǒng)中狀態(tài)改變時(shí)的檢測(cè)提供了良好支持。 Spring AOPAOP(AspectOriented Programming)指面向切面編程,是在J2EE領(lǐng)域比較熱門(mén)的話(huà)題,它針對(duì)業(yè)務(wù)處理過(guò)程中的切面進(jìn)行提取,所面對(duì)的是處理過(guò)程中的某個(gè)步驟或階段,以獲得邏輯過(guò)程中各部分之間低耦合性的隔離效果。通過(guò)切面,我們可以將系統(tǒng)中各個(gè)不同層次上的問(wèn)題隔離開(kāi)來(lái),實(shí)現(xiàn)統(tǒng)一集約式處理。這一方面使得開(kāi)發(fā)邏輯更加清晰,專(zhuān)業(yè)化分工更加易于進(jìn)行;另一方面,由于切面的隔離,降低了耦合性,我們就可以在不同的應(yīng)用中將各個(gè)切面組合使用,從而使得代碼可重用性大大增強(qiáng)。如某個(gè)方法調(diào)用,或者某個(gè)異常被拋出。處理邏輯的調(diào)用模式通常有5種:l Before:僅在連接點(diǎn)之前插入預(yù)處理過(guò)程。l Around:在連接點(diǎn)前后插入預(yù)處理過(guò)程和后處理過(guò)程。l Introduction:。⑤AOP代理(AOP Proxy):AOP框架創(chuàng)建的對(duì)象,包含Advice。Spring中提供的內(nèi)置AOP支持,是基于動(dòng)態(tài)AOP機(jī)制實(shí)現(xiàn)。Spring AOP實(shí)現(xiàn)是Spring框架的重要組成部分,它允許開(kāi)發(fā)者使用聲明式企業(yè)級(jí)服務(wù),比如事務(wù)服務(wù)、安全服務(wù)。Spring提供了代表切入點(diǎn)和各種處理邏輯的類(lèi),Spring使用術(shù)語(yǔ)advisor來(lái)代表切面的對(duì)象,它包含一個(gè)處理邏輯和一個(gè)指定連接點(diǎn)的切入點(diǎn)。Before處理邏輯是一種簡(jiǎn)單類(lèi)型的Advice,它不需要一個(gè)MethodInvocation對(duì)象,因?yàn)樗辉谶M(jìn)入一個(gè)方法前被調(diào)用。如果一個(gè)Before處理邏輯拋出一個(gè)異常,這將中斷攔截器鏈的進(jìn)一步執(zhí)行。如果這個(gè)異常是unchecked的,或者出現(xiàn)在被調(diào)用的方法的簽名中,它將會(huì)被直接傳遞給客戶(hù)代碼;否則,它將被AOP代理包裝到一個(gè)unchecked的異常里。l :用于實(shí)現(xiàn)After Advice。AfterReturningAdvice可以可以訪(fǎng)問(wèn)返回值(不能改變)、被調(diào)用的方法、方法的參數(shù)和目標(biāo)對(duì)象,但不改變執(zhí)行路徑。AfterReturningAdvice可以被用于任何類(lèi)型的切入點(diǎn)。實(shí)現(xiàn)around Advice的類(lèi)需要實(shí)現(xiàn)接口MethodInterceptor: public interface MethodInterceptor extends Interceptor{ Object invoke(MethodInvocation invocation)throws Throwable。Invoke()方法應(yīng)該返回調(diào)用的結(jié)果:連接點(diǎn)的返回值。MethodInterceptor可以返回不同的值或者拋出一個(gè)異常,甚至可以不調(diào)用目標(biāo)操作。如果連接點(diǎn)拋出異常,ThrowsAdvice在連接點(diǎn)返回后被調(diào)用。l :用于實(shí)現(xiàn)Introduction Advice,它Spring中較為特殊的一種Advice,僅面向Class層(而不像上述Advice面向方法層面)。IntroductionInterceptor不能用于任何切入點(diǎn)。 系統(tǒng)簡(jiǎn)介信息交流平臺(tái)系
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1