JavaEE是一套使用Java進(jìn)行企業(yè)級(jí)Web應(yīng)用開(kāi)發(fā)的大家一致遵循的工業(yè)標(biāo)準(zhǔn)。
JavaEE平臺(tái)提供了一個(gè)基于組件的方法來(lái)加快設(shè)計(jì)、開(kāi)發(fā)、裝配及部署企業(yè)應(yīng)用程序。
相較于Microsoft的.NET,Sun公司的Java*E和一系列標(biāo)準(zhǔn)、技術(shù)及協(xié)議更接近或更滿足互聯(lián)網(wǎng)在智能化Web服務(wù)方面對(duì)開(kāi)放性、分布性和平臺(tái)無(wú)關(guān)性的要求。
JavaEE軟件開(kāi)發(fā)體系架構(gòu)
兩層架構(gòu)
傳統(tǒng)的客戶服務(wù)器系統(tǒng)僅只簡(jiǎn)單地基于兩層體系來(lái)構(gòu)建,即客戶端(前臺(tái))和企業(yè)信息系統(tǒng)(后臺(tái)),沒(méi)有任何中間件,業(yè)務(wù)邏輯層與表示層或數(shù)據(jù)層混在一起。這種兩層架構(gòu)無(wú)論從開(kāi)發(fā)、部署、擴(kuò)展、維護(hù)來(lái)說(shuō),綜其只有一個(gè)特點(diǎn)——成本高。
三層架構(gòu)
三層架構(gòu)自上而下將系統(tǒng)分為表示層、邏輯層、持久層。
表示層由處理用戶交互的客戶端組件及其容器所組成;
業(yè)務(wù)邏輯層由解決業(yè)務(wù)問(wèn)題的組件組成;
數(shù)據(jù)層由一個(gè)或多個(gè)數(shù)據(jù)庫(kù)組成,并可包含存儲(chǔ)過(guò)程。
這種三層架構(gòu),在處理客戶端的請(qǐng)求時(shí),使客戶端不用進(jìn)行復(fù)雜的數(shù)據(jù)庫(kù)處理;透明地為客戶端執(zhí)行許多工作,如查詢數(shù)據(jù)庫(kù)、執(zhí)行業(yè)務(wù)規(guī)則和連接現(xiàn)有的應(yīng)用程序;并且能夠幫助開(kāi)發(fā)人員創(chuàng)建適用于企業(yè)的大型分布式應(yīng)用程序。

MVC
在MVC模式中,應(yīng)用程序被劃分為模型層(Model)、視圖層(View)、控制層(Controller)三部分。MVC模型就是把一個(gè)應(yīng)用程序的開(kāi)發(fā)按照業(yè)務(wù)邏輯、數(shù)據(jù)、視圖進(jìn)行分離分層并組織代碼。MVC要求把應(yīng)用的模型按一定的層次規(guī)則抽取出來(lái),將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫(xiě)業(yè)務(wù)邏輯。模型層負(fù)責(zé)封裝應(yīng)用的狀態(tài),并實(shí)現(xiàn)功能,視圖層負(fù)責(zé)將內(nèi)容呈現(xiàn)給用戶,控制層負(fù)責(zé)控制視圖層發(fā)送的請(qǐng)求以及程序的流程。
Servlet+JSP+JavaBean(MVC)這種模式比較適合開(kāi)發(fā)復(fù)雜的web應(yīng)用,在這種模式下,Servlet負(fù)責(zé)處理用戶請(qǐng)求,JSP負(fù)責(zé)數(shù)據(jù)顯示,JavaBean負(fù)責(zé)封裝數(shù)據(jù)。

基于JavaEE架構(gòu)模式下的MVC
在這種架構(gòu)模式下,模型層(Model)定義了數(shù)據(jù)模型和業(yè)務(wù)邏輯。為了將數(shù)據(jù)訪問(wèn)與業(yè)務(wù)邏輯分離,降低代碼之間的耦合,提高業(yè)務(wù)精度,模型層又具體劃分為了DAO層和業(yè)務(wù)層,DAO即Data Access Object,其主要職能是將訪問(wèn)數(shù)據(jù)庫(kù)的代碼封裝起來(lái),讓這些代碼不會(huì)在其它層出現(xiàn)或者暴露出來(lái)給其它層;業(yè)務(wù)層是整個(gè)系統(tǒng)最核心也是最具有價(jià)值的一層,該層封裝應(yīng)用程序的業(yè)務(wù)邏輯,處理數(shù)據(jù),關(guān)注客戶需求,在業(yè)務(wù)處理過(guò)程中會(huì)訪問(wèn)原始數(shù)據(jù)或產(chǎn)生新數(shù)據(jù),DAO層提供的DAO類能很好地幫助業(yè)務(wù)層完成數(shù)據(jù)處理,業(yè)務(wù)層本身側(cè)重于對(duì)客戶需求的理解和業(yè)務(wù)規(guī)則的適應(yīng),總體說(shuō)來(lái),DAO層不處理業(yè)務(wù)邏輯,只為業(yè)務(wù)層提供輔助,完成獲取原始數(shù)據(jù)或持久層數(shù)據(jù)等操作。

JSP:JSP被用來(lái)產(chǎn)生Web的動(dòng)態(tài)內(nèi)容。這層把應(yīng)用數(shù)據(jù)以網(wǎng)頁(yè)的形式呈現(xiàn)給瀏覽器,然后數(shù)據(jù)按照在JSP中開(kāi)發(fā)的預(yù)定的方式表示出來(lái),這層也可以稱之為布局層。
Servlet:JSP建立在Servlet之上,Servlet是J2EE的重要組成部分。Servlet負(fù)責(zé)處理用戶請(qǐng)求,Java Web項(xiàng)目的所有配置都寫(xiě)在了web.xml配置文件里,當(dāng)項(xiàng)目運(yùn)行的時(shí)候,web.xml會(huì)將http請(qǐng)求映射給對(duì)應(yīng)的Servlet類。
JavaBean:由一些具有私有屬性的Java類組成,對(duì)外提供get和set方法。JavaBean負(fù)責(zé)數(shù)據(jù),負(fù)責(zé)處理視圖層和業(yè)務(wù)邏輯之間的通信。
Service:業(yè)務(wù)處理類,對(duì)數(shù)據(jù)進(jìn)行一些預(yù)處理。
DAO:數(shù)據(jù)訪問(wèn)層,JDBC調(diào)用存儲(chǔ)過(guò)程,從數(shù)據(jù)庫(kù)(DataBase)那里獲取到數(shù)據(jù),再封裝到Model實(shí)體類中去。