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

正文內(nèi)容

武漢大學(xué)工程碩士專業(yè)學(xué)位論文模板-文庫(kù)吧

2025-07-20 02:05 本頁(yè)面


【正文】 程序的外在表現(xiàn),通常實(shí)現(xiàn)數(shù)據(jù)的輸入和輸出功能。③ 控制器(Controller):控制層。起到控制整個(gè)業(yè)務(wù)流程(Flow Control)的作用,實(shí)現(xiàn)View和Model部分的協(xié)同工作。上述三個(gè)組成部分之間的關(guān)系如圖21所示。圖21 MVC模式的結(jié)構(gòu)在MVC設(shè)計(jì)模式中,事件一般是指客戶端Web瀏覽器提交的各種不同的請(qǐng)求,這些請(qǐng)求由控制器進(jìn)行處理,控制器根據(jù)事件的類型來(lái)改變模型或各個(gè)視圖,視圖也可以接受模型發(fā)出的數(shù)據(jù)更新的通知,根據(jù)數(shù)據(jù)更新的結(jié)果調(diào)整視圖效果,展示給用戶。而模型也可以通過(guò)視圖所獲得的用戶提交的數(shù)據(jù)進(jìn)行具體業(yè)務(wù)邏輯的處理。 JSP Model 1 在JSP技術(shù)的發(fā)展初期,由于其便于快速開(kāi)發(fā)的優(yōu)點(diǎn),很快就成為創(chuàng)建Web應(yīng)用的熱門技術(shù)之一。在JSP頁(yè)面中可以很容易的同時(shí)實(shí)現(xiàn)內(nèi)容的顯示、業(yè)務(wù)邏輯的編寫以及流程的控制,從而快速地完成應(yīng)用開(kāi)發(fā)。最初很多的Java Web應(yīng)用甚至全部由JSP頁(yè)面構(gòu)成,這種以JSP為中心的開(kāi)發(fā)模型被稱為Model 1。其具體的實(shí)現(xiàn)方式如圖22所示。 圖22 JSP Model 1在JSP Model 1中,JSP頁(yè)面負(fù)責(zé)接收處理客戶端Web瀏覽器發(fā)送的請(qǐng)求,并在處理后直接進(jìn)行響應(yīng)。正是由于JSP頁(yè)面本身同時(shí)充當(dāng)了View和Controller兩種角色,控制邏輯和表示層邏輯混雜在一起,導(dǎo)致代碼的可重用性和可擴(kuò)展性下降。 JSP Model 2Model 2則是MVC設(shè)計(jì)模式的一種具體實(shí)現(xiàn)方式,如圖23所示。在Model 2中采用Servlet作為控制器(Controller),負(fù)責(zé)接收客戶端Web瀏覽器發(fā)送來(lái)的所有請(qǐng)求,并根據(jù)處理的不同結(jié)果,轉(zhuǎn)發(fā)到對(duì)應(yīng)的JSP頁(yè)面(View)實(shí)現(xiàn)在瀏覽器客戶端的顯示。在Servlet中只包含了控制邏輯和一些簡(jiǎn)單的處理邏輯,更加復(fù)雜的業(yè)務(wù)處理邏輯則借助特定的JavaBean具體實(shí)現(xiàn)。由于引入了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ā)和管理。 圖23 JSP Model 2Model 2實(shí)現(xiàn)了系統(tǒng)業(yè)務(wù)邏輯功能模塊、顯示模塊和數(shù)據(jù)持久層處理模塊的分離,同時(shí)還提高了應(yīng)用系統(tǒng)的可維護(hù)性、可擴(kuò)展性、可移植性和組件的可復(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所示。 圖24 Struts MVC架構(gòu) 從Model角度看,在Struts中,系統(tǒng)模型的狀態(tài)主要由ActionForm Bean和值對(duì)象體現(xiàn)。從View角度看, ,Java開(kāi)發(fā)者繼承該類來(lái)創(chuàng)建表單bean。另一方面,Struts提供了豐富的JSP標(biāo)記庫(kù),View部分使用這些標(biāo)記庫(kù)可以實(shí)現(xiàn)與Model的有效交互并能增強(qiáng)顯示。 從Controller角度看,在Struts體系機(jī)構(gòu)中, Controller主要是ActionServlet,但是對(duì)于業(yè)務(wù)邏輯的操作則主要由Action、ActionMapping、ActionForward這幾個(gè)組件協(xié)調(diào)完成(也許這幾個(gè)組件,應(yīng)該劃分到模型中的業(yè)務(wù)邏輯一塊)。其中,Action扮演了真正的控制邏輯的實(shí)現(xiàn)者,而ActionMapping和ActionForward則指定了不同業(yè)務(wù)邏輯或流程的運(yùn)行方向。 Struts核心組件對(duì)于Struts 如何控制、處理客戶請(qǐng)求,讓我們通過(guò)對(duì)struts的四個(gè)核心組件介紹來(lái)具體說(shuō)明。這幾個(gè)組件就是:ActionServlet,Action Classes,Action Mapping(包括ActionForward),ActionFrom Bean。u Struts ActionServlet ,其在Struts 框架中扮演的角色是中心控制器。它提供一個(gè)中心位置來(lái)處理全部的終端請(qǐng)求??刂破鰽ctionServlet主要負(fù)責(zé)將HTTP的客戶請(qǐng)求信息組裝后,根據(jù)配置文件的指定描述,轉(zhuǎn)發(fā)到適當(dāng)?shù)奶幚砥鳌?按照Servelt的標(biāo)準(zhǔn),所有的Servlet必須在web配置文件()中聲明。同樣,ActoinServlet必須在Web Application配置文件()中描述。u Struts Action Classes,它是Struts架構(gòu)中控制器組件的重要組成部分。Action 類主要負(fù)責(zé)將客戶請(qǐng)求映射到處理這些請(qǐng)求的業(yè)務(wù)邏輯Bean,再轉(zhuǎn)向生成響應(yīng)回送給客戶端的頁(yè)面,實(shí)際上充當(dāng)?shù)氖荂ontroller和Model之間的一個(gè)適配器(Adaptor),其功能就是將請(qǐng)求與業(yè)務(wù)邏輯分開(kāi)。這樣的分離,使得客戶請(qǐng)求和Action類之間可以有多個(gè)點(diǎn)對(duì)點(diǎn)的映射。而且Action類通常還提供了其它的輔助功能,比如:認(rèn)證(authorization)、日志(logging)和數(shù)據(jù)驗(yàn)證(validation)。u Struts Action MappingActionServlet負(fù)責(zé)轉(zhuǎn)發(fā)客戶端請(qǐng)求給相應(yīng)的Action對(duì)象進(jìn)行處理,同時(shí)還轉(zhuǎn)發(fā)了其他一些相關(guān)信息,這種請(qǐng)求和處理之間具體的映射關(guān)系保存在XML配置文件()中。在系統(tǒng)啟動(dòng)初始化的時(shí)候,會(huì)對(duì)這些配置信息進(jìn)行處理,系統(tǒng)針對(duì)每個(gè)action,以供struts應(yīng)用程序運(yùn)行期間使用。當(dāng)ActionServlet轉(zhuǎn)發(fā)請(qǐng)求時(shí),ActionMapping實(shí)例被作為參數(shù)之一傳給相應(yīng)的Action對(duì)象的execute()方法。u ActionForwardAction類的execute()方法,返回值即為ActionForward類型。ActionForward對(duì)象是一種配置對(duì)象,代表了Web資源,可以是JSP頁(yè)面、Servlet以及Action。ActionForward對(duì)象映射的是配置文件()中的forward元素,封裝了目標(biāo)響應(yīng)頁(yè)面的URI。u Struts ActionForm Bean在Struts架構(gòu)中,使用一種名為ActionForm的系統(tǒng)狀態(tài)Bean,來(lái)實(shí)現(xiàn)應(yīng)用系統(tǒng)的非持久性數(shù)據(jù)儲(chǔ)存和維護(hù)功能。具體來(lái)說(shuō),ActionForm Bean對(duì)象主要用于保存用戶請(qǐng)求表單中的數(shù)據(jù),并可保持其狀態(tài)的連續(xù)性,即在不同的頁(yè)面間傳遞這些數(shù)據(jù)。為了實(shí)現(xiàn)自動(dòng)被填充和調(diào)用的機(jī)制,該Bean必須是Struts 。 Struts 的工作流程Struts架構(gòu)從接收請(qǐng)求到返回響應(yīng)的工作流程如圖25所示。在應(yīng)用服務(wù)啟動(dòng)的時(shí)候,控制器(ActionServlet)進(jìn)行初始化工作,讀取配置文件(),為不同的Struts模塊初始化相應(yīng)的ModuleConfig對(duì)象。比如配置文件中的Action映射定義都保存在ActionConfig集合中??刂破鹘邮蹾ttp請(qǐng)求,并從ActionConfig中找到對(duì)應(yīng)于該請(qǐng)求的Action子類,如果沒(méi)有對(duì)應(yīng)的Action,控制器直接將請(qǐng)求轉(zhuǎn)發(fā)給JSP或者靜態(tài)頁(yè)面,否則控制器將請(qǐng)求分發(fā)至具體的Action類進(jìn)行處理。圖25 Struts請(qǐng)求響應(yīng)流程在控制器調(diào)用具體的Action的Execute方法之前,ActionForm對(duì)象將利用Http請(qǐng)求中的參數(shù)來(lái)填充自己。Struts架構(gòu)將檢查UserActionForm是否存在,如果不存在,就會(huì)創(chuàng)建一個(gè)該類的實(shí)例。Struts將會(huì)使用HttpServLetRequest的相應(yīng)字段來(lái)設(shè)置UserActionForm的狀態(tài)。此外,還可以在ActionForm類中調(diào)用Validate方法來(lái)檢查請(qǐng)求參數(shù)的合法性,并且可以返回一個(gè)包含所有錯(cuò)誤信息的ActionErrors對(duì)象。如果執(zhí)行成功,ActionForm自動(dòng)將這些參數(shù)信息以JavaBean(一般稱之為Form Bean)的方式保存在ServletContext中,這樣它們就可以被其他Action對(duì)象或者JSP調(diào)用。Action的Execute方法執(zhí)行完業(yè)務(wù)邏輯,返回一個(gè)ActionForward對(duì)象。控制器從這個(gè)對(duì)象中獲取下一個(gè)視圖的路徑和重定向?qū)傩?,最終將頁(yè)面顯示給用戶。 第三章 Hibernate技術(shù)介紹Hibernate是目前非常流行的ORM(Object/Relation Mapping)工具,是一個(gè)基于Java的開(kāi)源代碼的持久化中間件,它對(duì)JDBC進(jìn)行了輕量級(jí)封裝。本章主要介紹了ORM機(jī)制、Hibernate的核心接口以及Hibernate的檢索方式。 Hibernate概述 Hibernate是一種適合于Java語(yǔ)言的對(duì)象關(guān)系映射(ORM)解決方案。它提供一個(gè)易用的框架來(lái)實(shí)現(xiàn)把一個(gè)面向?qū)ο蟮挠蚰P陀成涞揭粋鹘y(tǒng)的關(guān)系數(shù)據(jù)庫(kù)。它不僅負(fù)責(zé)從Java類到數(shù)據(jù)庫(kù)表格(以及來(lái)自Java數(shù)據(jù)類型的SQL數(shù)據(jù)類型)的映射,而且還提供數(shù)據(jù)查詢和檢索能力,并能大大減少花在SQL和JDBC手工數(shù)據(jù)處理上的開(kāi)發(fā)時(shí)間。Hibernate技術(shù)本質(zhì)上是一個(gè)提供數(shù)據(jù)庫(kù)服務(wù)的中間件。它的架構(gòu)如31圖所示: 圖31 Hibernate 架構(gòu)圖此圖顯示了hibernate的工作原理,XML Mapping等來(lái)為應(yīng)用程序提供數(shù)據(jù)持久服務(wù)的。 ORM介紹ORM(即對(duì)象關(guān)系映射)模式指的是在單個(gè)組件中負(fù)責(zé)所有實(shí)體域?qū)ο蟮某志没?,封裝數(shù)據(jù)訪問(wèn)細(xì)節(jié)。它提供了實(shí)現(xiàn)持久化層的一種模式:采用映射元數(shù)據(jù)來(lái)描述對(duì)象關(guān)系映射細(xì)節(jié),使得ORM中間件能夠在任何一個(gè)Java應(yīng)用的業(yè)務(wù)邏輯層和數(shù)據(jù)庫(kù)層之間充當(dāng)橋梁。如下圖所示。圖32 ORM充當(dāng)業(yè)務(wù)邏輯層和數(shù)據(jù)庫(kù)層之間充當(dāng)橋梁ORM解決的主要問(wèn)題就是對(duì)象關(guān)系的映射。域模型和關(guān)系模型都分別建立在概念模型的基礎(chǔ)上。域模型是面向?qū)ο蟮?,而關(guān)系數(shù)據(jù)模型是面向關(guān)系的,一般情況下,一個(gè)持久化類和一個(gè)表對(duì)應(yīng),類的每個(gè)實(shí)例對(duì)應(yīng)表中的一條記錄。描述對(duì)象和關(guān)系數(shù)據(jù)庫(kù)之間映射細(xì)節(jié)的元數(shù)據(jù)通常采用XML格式,并且存放在專門的對(duì)象關(guān)系映射文件中。映射語(yǔ)言是以Java為中心的,意味著映射是按照持久化類的定義來(lái)創(chuàng)建的,而非表的定義。 Hibernate的核心接口應(yīng)用程序可以直接通過(guò)Hibernate API訪問(wèn)數(shù)據(jù)庫(kù)。有5個(gè)核心接口幾乎在所有的Hibernate應(yīng)用中都會(huì)用到。使用這些接口可以儲(chǔ)存和取出持久對(duì)象或?qū)κ聞?wù)進(jìn)行控制。圖33是這5個(gè)核心接口的類框圖。 圖33 Hibernate的核心接口的類框圖u Session接口 Session(會(huì)話)接口是Hibernate應(yīng)用使用最廣泛的接口。Session也被稱為持久化管理器,它提供了和持久化相關(guān)的操作:保存、更新、刪除、加載和查詢對(duì)象。Session不是線程安全的,因此在設(shè)計(jì)軟件架構(gòu)時(shí),應(yīng)該避免多個(gè)線程共享同一個(gè)Session實(shí)例。會(huì)話接口的實(shí)例是輕量級(jí)的且創(chuàng)建和銷毀不需要消耗太多的資源。這意味著在程序中根據(jù)需要可以經(jīng)常創(chuàng)建或銷毀Session對(duì)象。 Hibernate會(huì)話是一個(gè)介于連接和事務(wù)之間的概念??梢院?jiǎn)單地認(rèn)為會(huì)話是對(duì)于一個(gè)單獨(dú)的工作單元已裝載對(duì)象的緩存或集合。Hibernate可以檢測(cè)到這個(gè)工作單元中對(duì)象的改變。有時(shí)也將會(huì)話稱為持續(xù)性管理器,因?yàn)樗彩桥c持續(xù)性有關(guān)的操作例如存儲(chǔ)和取出對(duì)象的接口。u SessionFactory接口應(yīng)用從SessionFactory(會(huì)話工廠)里獲得會(huì)話實(shí)例。一個(gè)SessionFactory實(shí)例對(duì)應(yīng)一個(gè)數(shù)據(jù)存儲(chǔ)源。它是線程安全的,這意味著它的同一個(gè)實(shí)例可以被應(yīng)用的多個(gè)線程共享。會(huì)話工廠緩存了生成的SQL語(yǔ)句和Hibernate在運(yùn)行時(shí)使用的映射元數(shù)據(jù)等。它也保存了在一個(gè)工作單元中讀入的數(shù)據(jù)并且可能在以后的工作單元中被重用(只有類和集合映射指定了這種二級(jí)緩存是想要的時(shí)才會(huì)如此)。所以它是重量級(jí)的,這意味著不能隨意創(chuàng)建或銷毀它的實(shí)例。如果應(yīng)用程序只訪問(wèn)一個(gè)數(shù)據(jù)庫(kù),只需要在應(yīng)用初始化的時(shí)候創(chuàng)建一個(gè)會(huì)話工廠實(shí)例。如果應(yīng)用同時(shí)訪問(wèn)多個(gè)數(shù)據(jù)庫(kù),則需要為每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)單獨(dú)的會(huì)話工廠實(shí)例。u Configuration接口Configuration(配置)對(duì)象用來(lái)配置和引導(dǎo)Hibernate。Hibernate使用一個(gè)配置實(shí)例來(lái)指定映射文件的位置和Hibernate的特定屬性,然后創(chuàng)建會(huì)話工廠。u Transaction接口Transaction(事務(wù))接口是一個(gè)可選的API。Hibernate應(yīng)用可以選擇不使用這個(gè)接口,而是在它們自己的底層代碼中管理事務(wù)。事務(wù)將應(yīng)用代碼從下層的事務(wù)實(shí)現(xiàn)中抽象出來(lái)——這可能是一個(gè)JDBC事務(wù),一個(gè)JTA用戶事務(wù)或者甚至是一個(gè)公共對(duì)象請(qǐng)求代理結(jié)(CORBA)——允許應(yīng)用通過(guò)一組一致的API控制事務(wù)邊界。這有助于保持Hibernate應(yīng)用在不同類型的執(zhí)行環(huán)境或容器中的可移植性。u Query和Criteria接口Query和Criteria接口是Hibernate的查詢接口,用于向數(shù)據(jù)庫(kù)查詢對(duì)象,以及控制執(zhí)行查詢的過(guò)程。Query實(shí)例包裝了一個(gè)HQL(Hibernate Query Language)查詢語(yǔ)句,HQL查詢語(yǔ)句類似于SQL查詢語(yǔ)句,但HQL查詢語(yǔ)句是面向?qū)ο蟮?,它引用類名及類的屬性名,而不是表名及表的字段名。Criteria接口完全封裝了基于字符串形式的查詢語(yǔ)句,比Query接口更加面向?qū)ο螅宜瞄L(zhǎng)于執(zhí)行動(dòng)態(tài)查詢。 Hibernate的檢索方式從數(shù)據(jù)庫(kù)中檢索對(duì)象是使用Hibernate最有趣(也是最復(fù)雜)的部分。Hibernate提供了以下幾種檢索對(duì)象的方式:①導(dǎo)航對(duì)象圖檢索方式。根據(jù)已經(jīng)加載的對(duì)象,導(dǎo)航到其他對(duì)象。().getCity()的屬性訪問(wèn)器方法訪問(wèn)相關(guān)聯(lián)的對(duì)象。如果Session是打開(kāi)的,當(dāng)你導(dǎo)航圖時(shí),Hibernate會(huì)自動(dòng)裝載圖的節(jié)點(diǎn)。②標(biāo)識(shí)符檢索方式。當(dāng)對(duì)象的唯一標(biāo)識(shí)符值是已知的時(shí)候,通過(guò)標(biāo)識(shí)符檢索是最方便最有性能的方法。Session的get()和load()方法提供了這種功能。③H
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1