国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

J2EETM藍(lán)圖摘要

2019-11-18 16:21:26
字體:
供稿:網(wǎng)友

  如果您已經(jīng)安裝了J2EE TM Platform (EnterPRise Edition )軟件,并通讀

了各種可用的指南來幫助您學(xué)習(xí)使用該軟件,那么,您可能已經(jīng)準(zhǔn)備

開始為J2EE 平臺(tái)編寫第一個(gè)多層企業(yè)應(yīng)用程序了。在這個(gè)時(shí)候,您可

能對(duì)應(yīng)用設(shè)計(jì)應(yīng)當(dāng)在何處著手、以及如何判斷哪些J2EE API 最能滿足

您的要求上存有疑惑 。

您可以得到幫助?!稙槠髽I(yè)版java TM 2 平臺(tái)設(shè)計(jì)企業(yè)應(yīng)用程序》(Designing Enterprise

applications for the Java TM 2 Platform, Enterprise Edition ISBN 0-201-70277-0 描述了J2EE 平

臺(tái),并提出了一個(gè)編程模型,可以幫助您在為J2EE 平臺(tái)設(shè)計(jì)多層企業(yè)應(yīng)用程序時(shí)作出最佳

決策。為了理論聯(lián)系實(shí)際,在這里舉了一個(gè)電子商務(wù)寵物商店應(yīng)用程序的例子,描述了該

編程模型是如何指導(dǎo)設(shè)計(jì)的。該書和該寵物商店應(yīng)用程序一起被稱作J2EE Blueprints (J2EE

藍(lán)圖)。

本文是J2EE 藍(lán)圖的一個(gè)摘要,向您介紹該編程模型,并幫助您掌握它。您可以訪問J2EE

下載頁(yè)面,下載該書的PostScript 或者PDF 格式的版本,或者下載書中作為例子的寵物商店

應(yīng)用程序。該書印刷本將在2000 年7 月上市 。

˙J2EE 基本架構(gòu):概述(J2EE Architecture —A Bird's-Eye View )

˙可再用應(yīng)用組件(Reusable Application Components )

˙設(shè)計(jì)用戶界面和引擎(Designing the User Interface and Engine )

˙設(shè)計(jì)基于Web 的應(yīng)用(Designing Web-Based Applications )

˙Servlets 和jsp 頁(yè)面(Servlets and JSP Pages )

˙模型、視圖、控制器設(shè)計(jì)范式(Model, View, Controller Design Pattern )

˙J2EE 應(yīng)用中的Enterprise Beans (Enterprise Beans in J2EE Applications )

˙寵物商店應(yīng)用程序(Pet Store Application )

J2EE 基本架構(gòu):概述基本架構(gòu):概述基本架構(gòu):概述基本架構(gòu):概 述

電子商務(wù)和信息技術(shù)的快速發(fā)展及對(duì)它的需求給應(yīng)用程序開發(fā)人員

帶來了新的壓力。必須以比以前更少的金錢、更少的資源來更快地設(shè)

計(jì)、建立和生產(chǎn)企業(yè)應(yīng)用程序 。

為了降低成本,并加快企業(yè)應(yīng)用程序的設(shè)計(jì)和開發(fā),J2EE 平臺(tái)提供了一個(gè)基于組件的方法,

來設(shè)計(jì)、開發(fā)、裝配及部署企業(yè)應(yīng)用程序。J2EE 平臺(tái)提供了多層的分布式的應(yīng)用模型、組

件再用、一致化的安全模型以及靈活的事務(wù)控制。您不僅可以比以前更快的速度向市場(chǎng)推出

創(chuàng)造性的客戶解決方案,而且,您的平臺(tái)獨(dú)立的、基于組件的J2EE 解決方案不會(huì)被束縛在2

任何一個(gè)廠商的產(chǎn)品和API 上 。

J2EE 規(guī)范定義了以下種類的組件 :

˙應(yīng)用的客戶組件(Application client components )

˙Enterprise JavaBeans TM 組件(Enterprise JavaBeans TM components )

˙Servlets 及JavaServer Pages TM (JSP 頁(yè)面)組件(也被稱作Web 組件)(Servlets and

JavaServer PagesTM (JSP pages) components )

˙Applets

一個(gè)多層的分布式的應(yīng)用模型意味著應(yīng)用邏輯被根據(jù)功能而劃分成組件,并且可以在同一個(gè)

服務(wù)器或不同的服務(wù)器上安裝組成J2EE 應(yīng)用的這些不同的組件。一個(gè)應(yīng)用組件應(yīng)被安裝在

什么地方,取決于該應(yīng)用組件屬于該多層的J2EE 環(huán)境中的哪一層。這些層是客戶層、Web

層 、 業(yè)務(wù)層及企業(yè)信息系統(tǒng)層(EIS )。

客戶層(客戶層(客戶層(客戶層(Client Tier )))

J2EE 應(yīng)用可以是基于Web 的,也可以是不基于Web 的。在一個(gè)基于

Web 的J2EE 應(yīng)用中,用戶的瀏覽器在客戶層中運(yùn)行,并從一個(gè)Web

服務(wù)器上下載WEB 層中的靜態(tài)Html 頁(yè)面或由JSP 或servlets 生成的

動(dòng)態(tài)HTML 頁(yè)面 。

在一個(gè)不基于Web 的J2EE 應(yīng)用程序中,一個(gè)獨(dú)立客戶程序,或者不運(yùn)行在一個(gè)HTML 頁(yè)

面中,而是運(yùn)行在其它一些基于網(wǎng)絡(luò)的系統(tǒng)(比如手持設(shè)備或汽車電話)中的applet 程序,

在客戶層中運(yùn)行,并在不經(jīng)過Web 層的情況下訪問enterprise beans 。該不基于Web 的客戶

層可能也包括一個(gè)JavaBeans 類來管理用戶輸入,并將該輸入發(fā)送到在企業(yè)層中運(yùn)行的

enterprise bean 類來處理。根據(jù)J2EE 規(guī)范,JavaBeans 類不被視為組件 。

為J2EE 平臺(tái)編寫的JavaBeans 類有實(shí)例變量和用于訪問實(shí)例變量中的數(shù)據(jù)的“get 和set 方

法”。以此種方式使用的JavaBeans 類在設(shè)計(jì)和實(shí)現(xiàn)上通常都是簡(jiǎn)單的,但是它們必須符合

JavaBeans 規(guī)范中列出的命名和設(shè)計(jì)約定。

Web 層層層層

J2EE Web 組件可以由JSP 頁(yè)面、基于Web 的applets 以及顯示HTML 頁(yè)面的servlets 組成。

調(diào)用servlets 或者JSP 頁(yè)面的HTML 頁(yè)面在應(yīng)用程序組裝時(shí)與Web 組件打包在一起。就像

客戶層一樣,Web 層可能包括一個(gè)JavaBeans 類來管理用戶輸入,并將輸入發(fā)送到在業(yè)務(wù)層

中運(yùn)行的enterprise beans 類來處理 。

運(yùn)行在客戶層的Web 組件依賴容器來支持諸如客戶請(qǐng)求和響應(yīng)及enterprise bean 查詢等。

業(yè)務(wù)層業(yè)務(wù)層業(yè)務(wù)層業(yè)務(wù) 層

作為解決或滿足某個(gè)特定業(yè)務(wù)領(lǐng)域(比如銀行、零售或金融業(yè))的需要的邏輯的業(yè)務(wù)代碼由

運(yùn)行在業(yè)務(wù)層的enterprise beans 來執(zhí)行。一個(gè)enterprise bean 從客戶程序處接收數(shù)據(jù),對(duì)數(shù)

據(jù)進(jìn)行處理(如果需要),再將數(shù)據(jù)發(fā)送到企業(yè)信息系統(tǒng)層存儲(chǔ)。一個(gè)enterprise bean 還從

存儲(chǔ)中檢索數(shù)據(jù),并將數(shù)據(jù)送回客戶程序 。3

運(yùn)行在業(yè)務(wù)層的enterprise beans 依賴于容器來為諸如事務(wù)、生命期、狀態(tài)管理、多線程及資

源存儲(chǔ)池提供通常都非常復(fù)雜的系統(tǒng)級(jí)代碼。

業(yè)務(wù)層經(jīng)常被稱作Enterprise JavaBeans (EJB )層 。業(yè)務(wù)層和Web 層一起構(gòu)成了3 層J2EE

應(yīng)用的中間層, 而其它兩層是客戶層和企業(yè)信息系統(tǒng)層.

企業(yè)信息系統(tǒng)層企業(yè)信息系統(tǒng)層企業(yè)信息系統(tǒng)層企業(yè)信息系統(tǒng)層

企業(yè)信息系統(tǒng)層運(yùn)行企業(yè)信息系統(tǒng)軟件,這層包括企業(yè)基礎(chǔ)設(shè)施系統(tǒng),

例如企業(yè)資源計(jì)劃(ERP )、大型機(jī)事務(wù)處理(mainframe transaction

processing )、數(shù)據(jù)庫(kù)系統(tǒng)及其他遺留信息系統(tǒng)(legacy information

systems )。J2EE 應(yīng)用組件因?yàn)槟撤N原因( 例如訪問數(shù)據(jù)庫(kù)) 可能需要訪

問企業(yè)信息系統(tǒng)。

注意:注意:注意:注意:J2EE 平臺(tái)的未來版本將支持Connector 架構(gòu),該架構(gòu)是將J2EE 平臺(tái)連接到企業(yè)信息

系統(tǒng)上的一個(gè)標(biāo)準(zhǔn)API 。

查詢服務(wù)(查詢服務(wù)(查詢服務(wù)(查詢服務(wù)(lookup services )))

因?yàn)橐粋€(gè)J2EE 應(yīng)用程序的組件是單獨(dú)運(yùn)行的,并且往往在不同的設(shè)備上運(yùn)行,因此,需要

一種能讓客戶層和Web 層代碼查詢并引用其他代碼和資源的方法??蛻魧雍蚖eb 層代碼使

用Java 命名和目錄接口(JNDI )來查詢用戶定義的對(duì)象(例如enterprise beans )、環(huán)境條目

(例如一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)器的位置)、企業(yè)信息系統(tǒng)層中用于查找資源的JDBC TM DataSource

對(duì)象,以及消息連接。

安全和事務(wù)管理(安全和事務(wù)管理(安全和事務(wù)管理(安全和事務(wù)管理(Security and Transaction Management )))

諸如安全和事務(wù)管理這樣的應(yīng)用行為可以在部署時(shí)在Web 和enterprise bean 組件上進(jìn)行配

置。這個(gè)特征將應(yīng)用邏輯從可能隨裝配而變化的配置設(shè)定中分開了 。

安全安全安全安 全

J2EE 安全模型允許配置一個(gè)Web 或enterprise bean 組件,使系統(tǒng)資源

只能由授權(quán)的用戶訪問。例如,一個(gè)Web 組件可以被配置成提示輸入

用戶名和密碼。一個(gè)enterprise bean 組件可以被配置成只讓特定團(tuán)體

中的成員調(diào)用其某些方法?;蛘撸粋€(gè)servlet 組件可以被配置成讓某

個(gè)組織中的所有人都能訪問其某些方法,同時(shí)只讓該組織中的某些享

有特權(quán)的人訪問一些方法。同樣是該servlet 組件,可以針對(duì)另外一個(gè)環(huán)境而被配置成讓每

個(gè)人都能訪問其所有方法,或者僅讓選定的少數(shù)人訪問其所有方法 。

事務(wù)管理(事務(wù)管理(事務(wù)管理(事務(wù)管理(Transaction Management )))

J2EE 事務(wù)模型使得能夠在部署時(shí)定義構(gòu)成一個(gè)單一事務(wù)的方法之間的關(guān)系,以使一個(gè)事務(wù)

中的所有方法被處理成一個(gè)單一的單元。這是我們所希望的,因?yàn)橐粋€(gè)事務(wù)是一系列步驟,

這些步驟要么全部完成,要么全部取消。

例如,一個(gè)enterprise bean 可能有一組方法,使我們可以通過從第一個(gè)賬戶借出并存入第二

個(gè)賬戶的方式而將錢從第一個(gè)賬戶轉(zhuǎn)移到第二個(gè)賬戶。我們希望全部的操作被作為一個(gè)單元

對(duì)待,這樣,如果在借出之后存入之前發(fā)生了故障,該借出操作被取消。4

事務(wù)屬性是在裝配期間定義在一個(gè)組件上的。這使得能將來自多個(gè)應(yīng)用組件的方法歸到一個(gè)

事務(wù)中,這說明,我們可以輕易變更一個(gè)J2EE 應(yīng)用程序中的應(yīng)用組件,并重新指定事務(wù)屬

性,而不必改變代碼或重新編譯 。

在設(shè)計(jì)應(yīng)用組件時(shí),要記住,盡管enterprise beans 有一個(gè)可使應(yīng)用組件的容器自動(dòng)啟動(dòng)多步

事務(wù)的機(jī)制,但是applet 和應(yīng)用的客戶容器可能并不支持這一點(diǎn)。然而,applet 和應(yīng)用客戶

容器總是能夠調(diào)用支持這一點(diǎn)的一個(gè)enterprise bean 。

還應(yīng)當(dāng)注意,JSP 頁(yè)面和servlets 沒有被設(shè)計(jì)成是事務(wù)的,它們通常應(yīng)當(dāng)將事務(wù)工作交給一

個(gè)enterprise bean 來完成。然而,如果事務(wù)工作在一個(gè)JSP 頁(yè)面或servlet 中是必須的,那么

此種工作也應(yīng)當(dāng)是非常有限的 。

可再用應(yīng)用組件(可再用應(yīng)用組件(可再用應(yīng)用組件(可再用應(yīng)用組件(Reusable Application Components )))

J2EE 組件(applets 、應(yīng)用的客戶、enterprise beans 、JSP 頁(yè)面及servlets )

都被打包成模塊,并以Java ARchive (JAR )文件的形式交付。一個(gè)模塊

由相關(guān)的組件、相關(guān)的文件及描述如何配置組件的配置描述文件組成 。

例如,在組裝過程中,一個(gè)HTML 頁(yè)面和servlet 被打包進(jìn)一個(gè)模塊之中,該模塊包含該HTML

文件、servlet 組件及相關(guān)的配置描述文件,并以一個(gè)Web ARchive (WAR )文件的形式交付,

該WAR 文件是一個(gè)帶.war 擴(kuò)展名的標(biāo)準(zhǔn)JAR 文件。使用模塊使得利用相同的組件中的某些

組件來組裝不同的J2EE 應(yīng)用程序成為可能 。

例如,一個(gè)J2EE 應(yīng)用程序的Web 版可能有一個(gè)enterprise bean 組件,還有一個(gè)JSP 頁(yè)面組

件。該enterprise bean 組件可以與一個(gè)應(yīng)用客戶組件結(jié)合,以生成該應(yīng)用程序的非Web 版本。

這不需要進(jìn)行額外的編碼,只是一個(gè)裝配和部署的問題。

并且,可再用組件使得將應(yīng)用開發(fā)和部署過程劃分成由不同的角色來完成成為可能,這樣不

同的人或者公司就能完成封裝和部署過程的不同部分。J2EE 平臺(tái)定義了如下角色:

J2EE 產(chǎn)品提供商(產(chǎn)品提供商(產(chǎn)品提供商(產(chǎn)品提供商(J2EE ProdUCt Provider )))

設(shè)計(jì)并使J2EE 平臺(tái)、API 和在J2EE 規(guī)范中定義的其他特征能被其它公司或人購(gòu)得的公司。

應(yīng)用組件提供商(應(yīng)用組件提供商(應(yīng)用組件提供商(應(yīng)用組件提供商(Application Component Provider )))

創(chuàng)建用于J2EE 應(yīng)用程序的Web 組件、enterprise bean 組件、applets 或應(yīng)用客戶程序的公司

或個(gè)人。在裝配過程中,應(yīng)用組件文件、接口及類被打包進(jìn)一個(gè)JAR 文件中 。

應(yīng)用程序裝配商(應(yīng)用程序裝配商(應(yīng)用程序裝配商(應(yīng)用程序裝配商(Application Assembler )))

從組件提供商獲得應(yīng)用組件JAR 文件,并將它們組裝成一個(gè)J2EE 應(yīng)用的Enterprise ARchive

(EAR )文件的公司或個(gè)人,此種文件是一個(gè)帶.ear 擴(kuò)展名的標(biāo)準(zhǔn)文件 。

應(yīng)用裝配商提供與該應(yīng)用程序相關(guān)的整體信息,并使用驗(yàn)證工具來檢驗(yàn)EAR 文件的內(nèi)容是

正確的。組裝和部署信息存儲(chǔ)在一個(gè)基于文本的配置描述文件中,此種文件使用xml 標(biāo)記

來標(biāo)記該文本。應(yīng)用裝配商可以按照“設(shè)計(jì)企業(yè)應(yīng)用”的描述直接編輯該配置描述文

件,或者使用一個(gè)能通過交互式選擇來正確添加XML 標(biāo)記的裝配和配置工具來編輯該配置5

描述文件 。

部署商(部署商(部署商(部署商(Deployer )))

部署J2EE 應(yīng)用程序的公司或個(gè)人。職責(zé)包括設(shè)定事務(wù)控制、安全屬性,并根據(jù)應(yīng)用組件提

供商提供的指示來標(biāo)明一個(gè)enterprise bean 是自己處理自身的存儲(chǔ),還是由一個(gè)容器來處理

等。

部署涉及配置和安裝。在配置過程中,部署商遵循應(yīng)用組件提供商提供的指示來解決外部依

賴問題,定義安全設(shè)定,以及分配事務(wù)屬性。在安裝過程中,部署商將應(yīng)用組件安裝到服務(wù)

器上,并生成容器特定的類和接口。

系統(tǒng)管理員(系統(tǒng)管理員(系統(tǒng)管理員(系統(tǒng)管理員(System Administrator )))

配置并管理運(yùn)行J2EE 應(yīng)用程序的計(jì)算環(huán)境和網(wǎng)絡(luò)基礎(chǔ)設(shè)施,并監(jiān)督運(yùn)行時(shí)環(huán)境的人員 。

工具提供商(工具提供商(工具提供商(工具提供商(Tool Provider )))

生產(chǎn)被組件提供商、裝配商及部署商使用的用于進(jìn)行開發(fā)、組裝和打包的工具的公司或個(gè)人。

設(shè)計(jì)用戶界面和引擎(設(shè)計(jì)用戶界面和引擎(設(shè)計(jì)用戶界面和引擎(設(shè)計(jì)用戶界面和引擎(Designing the User Interface and Engine )))

在為J2EE 應(yīng)用程序設(shè)計(jì)用戶界面和后端引擎時(shí),我們需要決定是讓

該程序基于Web ,還是不基于Web 。在做出這個(gè)決定時(shí),我們可能希

望考慮平臺(tái)配置、下載速度、安全、網(wǎng)絡(luò)流量和網(wǎng)絡(luò)服務(wù) 。

例如,包含有用戶界面并且經(jīng)常被大量用戶訪問的一個(gè)applet 可能需

要花很長(zhǎng)的時(shí)間才能被下載下來,這讓用戶沮喪。然而,如果知道該applet 要運(yùn)行在一個(gè)公

司的內(nèi)部網(wǎng)內(nèi)的受控環(huán)境中,那么,在這種情況下,該applet 將擁有一個(gè)完全可接受的下載

速度。

另一個(gè)考慮是,繁重的處理應(yīng)當(dāng)在哪里執(zhí)行。例如,如果客戶程序在一個(gè)蜂窩電話或呼機(jī)中

執(zhí)行,服務(wù)器應(yīng)當(dāng)完成盡量多的計(jì)算和數(shù)據(jù)處理,而客戶程序只應(yīng)顯示結(jié)果就可以了。然而,

設(shè)計(jì)在一個(gè)強(qiáng)大的臺(tái)式機(jī)平臺(tái)上運(yùn)行的大型財(cái)務(wù)分析系統(tǒng)則應(yīng)當(dāng)在客戶機(jī)上完成其復(fù)雜計(jì)

算。

應(yīng)用的客戶程序和applet 用戶界面通常都是用Swing API 創(chuàng)建的,該API 可從標(biāo)準(zhǔn)版Java2

平臺(tái)(Java 2 Platform ,Standard Edition )中獲得。Swing API 提供了一整套GUI 組件(表格、

樹形結(jié)構(gòu)、按鈕等),這些組件可以被用來實(shí)現(xiàn)一種比用一個(gè)典型的HTML 頁(yè)面所能實(shí)現(xiàn)的

更為交互的體驗(yàn)。Swing 也支持HTML 文本組件,這個(gè)組件可以被用來顯示來自一個(gè)服務(wù)

器的響應(yīng) 。

客戶程序可以直接訪問enterprise bean 層或企業(yè)信息系統(tǒng)層。但應(yīng)謹(jǐn)慎實(shí)現(xiàn)這種程序。繞過

EJB 層的程序可以使用JDBC API 來訪問一個(gè)關(guān)系型數(shù)據(jù)庫(kù),但應(yīng)被限制于對(duì)數(shù)據(jù)庫(kù)表格進(jìn)

行維護(hù)等這樣的管理任務(wù)上 。

設(shè)計(jì)基于設(shè)計(jì)基于設(shè)計(jì)基于設(shè)計(jì)基于Web 的應(yīng)用程序(的應(yīng)用程序(的應(yīng)用程序(的應(yīng)用程序(Designing Web-Based Applications )))

基于Web 的應(yīng)用程序是基于瀏覽器的,并且,如果它們運(yùn)行在Internet

上的話,可能被全世界的人訪問。當(dāng)設(shè)計(jì)一個(gè)基于Web 的應(yīng)用程序時(shí),6

不僅需要決定用什么來處理內(nèi)容和應(yīng)用邏輯(HTML 、XML 、JSP 頁(yè)面及servlets ),而且還

應(yīng)當(dāng)考慮使該應(yīng)用程序國(guó)際化 。

一個(gè)國(guó)際化的基于Web 的應(yīng)用程序向用戶提供了選擇一種語(yǔ)言,然后,根據(jù)該選定語(yǔ)言加

載應(yīng)用的正文的方式。對(duì)被支持的每種語(yǔ)言而言,應(yīng)用正文都被存儲(chǔ)在一個(gè)外部文件中,并

且,與另外一個(gè)文件的關(guān)鍵詞相對(duì)應(yīng)。應(yīng)用代碼使用這些關(guān)鍵詞以及選定的語(yǔ)言來加載正確

的文本。國(guó)際化API 還提供類來根據(jù)選定的語(yǔ)言來格式化日期和金錢 。

一旦制訂了使應(yīng)用程序國(guó)際化的細(xì)節(jié),我們就可以決定用什么來實(shí)現(xiàn)它了??傮w來說,一個(gè)

基于Web 的應(yīng)用程序使用HTML 來顯示數(shù)據(jù); 用XML 來定義數(shù)據(jù)以使其可被另一個(gè)程序讀

取并處理; 使用JSP 頁(yè)面或servlets 來管理用戶與業(yè)務(wù)層或存儲(chǔ)層之間的數(shù)據(jù)流。

可以在J2EE 平臺(tái)上實(shí)現(xiàn)的基于Web 的應(yīng)用程序有四種。從簡(jiǎn)單到復(fù)雜排列,它們是 :

˙基本HTML

˙帶基本JSP 頁(yè)面或servlets 的HTML

˙帶JavaBean 類的JSP 頁(yè) 面

˙將應(yīng)用邏輯根據(jù)功能劃分成區(qū)域的高度結(jié)構(gòu)化的應(yīng) 用

當(dāng)設(shè)計(jì)一個(gè)基于Web 的應(yīng)用程序時(shí),需要決定用什么來建立它。并且,如果我們是從建立

一個(gè)簡(jiǎn)單的應(yīng)用程序開始著手的話,如果認(rèn)為以后會(huì)給該應(yīng)用程序添加功能,那么,設(shè)計(jì)應(yīng)

當(dāng)適應(yīng)今后發(fā)展的需要。下面的內(nèi)容通過比較JSP 頁(yè)面和servlets ,來幫助我們做出某些設(shè)

計(jì)決定。

Servlets 和和和和JSP 頁(yè)面頁(yè)面頁(yè)面頁(yè) 面

Servlets 是實(shí)現(xiàn)動(dòng)態(tài)內(nèi)容的一種簡(jiǎn)便的、平臺(tái)獨(dú)立的、Web 服務(wù)器獨(dú)立的方式。JSP 頁(yè)面是

開發(fā)servlets 的一種基于文本的、以顯示為中心的方式。JSP 頁(yè)面提供了servlets 的所有好處,

并且,當(dāng)與一個(gè)JavaBeans 類結(jié)合在一起時(shí),提供了一種使內(nèi)容和顯示邏輯分開的簡(jiǎn)單方式。

分開內(nèi)容和顯示邏輯的好處是,更新頁(yè)面外觀的人員不必懂得Java 代碼,而更新JavaBeans

類的人員也不必是設(shè)計(jì)網(wǎng)頁(yè)的行家里手。JSP 頁(yè)面和servlets 都比公共網(wǎng)關(guān)接口(CGI )更可

取,因?yàn)镃GI 不是平臺(tái)獨(dú)立的,使用了更多系統(tǒng)開銷,而且沒有一個(gè)簡(jiǎn)單的方法來訪問參

數(shù)數(shù)據(jù),并將這些數(shù)據(jù)發(fā)送給一個(gè)程序 。

可以用帶JavaBeans 類的JSP 頁(yè)面來定義Web 模板,以建立一個(gè)由具有相似的外觀的頁(yè)面組

成的網(wǎng)站。JavaBeans 類完成數(shù)據(jù)提供,這樣在模板中就沒有Java 代碼,這意味著這些模板

可以由一個(gè)HTML 編寫人員來維護(hù)。

在選擇使用一個(gè)servlet ,還是一個(gè)JSP 頁(yè)面時(shí),要記住的是,servlets 是一個(gè)程序設(shè)計(jì)工具,

它最適用于不需要頻繁修改的低級(jí)應(yīng)用功能; 而JSP 頁(yè)面則通過以顯示為中心的描述性的方

法將動(dòng)態(tài)內(nèi)容和邏輯結(jié)合在一起 。

對(duì)于一個(gè)使用一個(gè)JSP 頁(yè)面的簡(jiǎn)單的基于Web 的應(yīng)用程序,我們可以使用定制標(biāo)記或者

scriptlets ,而不是使用JavaBeans 類來將內(nèi)容與應(yīng)用邏輯結(jié)合起來。定制標(biāo)記被打包到一個(gè)

標(biāo)記庫(kù)中,并被引入到一個(gè)JSP 頁(yè)面中。Scriptlets 是直接嵌入在JSP 頁(yè)面中的很小的Java7

代碼段。

模型、視圖和控制器架構(gòu)(模型、視圖和控制器架構(gòu)(模型、視圖和控制器架構(gòu)(模型、視圖和控制器架構(gòu)(Model, View, Controller Architecture )))

在基于組件的J2EE 平臺(tái)充分內(nèi)置了靈活性的情況下,剩下的問題可

能是如何組織應(yīng)用程序以實(shí)現(xiàn)簡(jiǎn)單高效的應(yīng)用程序升級(jí)和維護(hù),以及

如何讓不懂程序代碼的人員避開程序數(shù)據(jù)。答案就在模型、視圖和控

制架構(gòu)(MVC )的使用之中。MVC 這樣的架構(gòu)是一個(gè)描述重現(xiàn)的問

題及其解決方案的設(shè)計(jì)范式,但問題每次重現(xiàn)時(shí),解決方案都不是完

全相同。

MVC 設(shè)計(jì)范式包括三種對(duì)象:

模型(model )提供應(yīng)用業(yè)務(wù)邏輯(enterprise bean 類); 視圖(view )則是其在屏幕上的顯示

(HTML 頁(yè)面、JSP 頁(yè)面、Swing GUI ); 控制器則是servlet 、JavaBean 或session bean 類,

它用于管理用戶與視圖發(fā)生的交互。我們可以將控制器想象成處在視圖和數(shù)據(jù)之間,對(duì)視圖

如何與模型交互進(jìn)行管理 。

通過使視圖完全獨(dú)立于控制器和模型,就可以輕松替換前端客戶程序。并且,通過將控制器

和模型代碼保持在視圖之外,那些不理解這些代碼的人員就不能改變他們不應(yīng)改變的東西。

將控制器和模型分開可以在不影響模型的情況下改變控制器,也可以在不影響控制器的情況

下改變模型 。

例如,如果應(yīng)用的前端是一個(gè)HTML 頁(yè)面,一個(gè)HTML 專家就可以更新它。如果使用一個(gè)

JSP 頁(yè)面,將控制器的代碼放到一個(gè)JavaBean 或session bean 類中,或使用動(dòng)作標(biāo)記(action

tags ),這樣,JSP 頁(yè)面就僅包含JSP 代碼了 。

J2EE 應(yīng)用程序中的應(yīng)用程序中的應(yīng)用程序中的應(yīng)用程序中的Enterprise Beans

當(dāng)編寫管理特定業(yè)務(wù)功能(比如追蹤雇員資料或進(jìn)行復(fù)雜財(cái)務(wù)計(jì)算)

的J2EE 應(yīng)用程序時(shí),請(qǐng)將完成這些任務(wù)的業(yè)務(wù)邏輯放置在EJB 層的

enterprise beans 中。以這種方式,我們就可以使代碼集中在解決手邊

的業(yè)務(wù)問題,而利用enterprise bean 容器來支持低層服務(wù),比如狀態(tài)

管理、事務(wù)管理、線程管理、遠(yuǎn)程數(shù)據(jù)訪問和安全等。

將業(yè)務(wù)邏輯與低層系統(tǒng)邏輯分開意味著容器可以在運(yùn)行時(shí)創(chuàng)建和管理enterprise bean 。 按照

規(guī)范編寫的任何enterprise bean ,都可以根據(jù)其在一個(gè)特定的J2EE 應(yīng)用程序中將被如何使用

來對(duì)其事務(wù)管理或安全屬性進(jìn)行配置,并可以被部署到任何一個(gè)與規(guī)范兼容的容器中??稍?br />
用組件使不必改變和重新編譯enterprise bean 代碼成為可能 。

一個(gè)enterprise bean 由接口和類組成??蛻舫绦蛲ㄟ^enterprise bean 的home 和遠(yuǎn)程接口來訪

問enterprise bean 的方法。Home 接口提供了創(chuàng)建、刪除和定位enterprise bean 的方法,而

遠(yuǎn)程接口則提供了業(yè)務(wù)方法。在部署時(shí),容器由這些接口來創(chuàng)建類,使客戶能夠創(chuàng)建、刪除、

定位或調(diào)用位于enterprise bean 上的業(yè)務(wù)方法。enterprise bean 類提供了業(yè)務(wù)方法、創(chuàng)建方法

和查尋方法的實(shí)現(xiàn)。如果enterprise bean 管理它自己的持久性的話,還為其生命期方法提供

了實(shí)現(xiàn)。8

有兩種Enterprise beans :entity beans 和session beans 。

一個(gè)session bean 代表與客戶程序的一個(gè)短暫的會(huì)話,而且可能執(zhí)行數(shù)據(jù)庫(kù)讀寫操作。一個(gè)

session bean 可能會(huì)自己調(diào)用JDBC ,或者它可能使用entity bean 來完成此種調(diào)用。在后者這

種情況下,這個(gè)session bean 是該entity bean 的客戶。一個(gè)session bean 的域包含會(huì)話狀態(tài),

而且是短暫的。如果服務(wù)器或者客戶程序崩潰,該session bean 就丟失了。這種模式通常被

用于像PL/SQL 這樣的數(shù)據(jù)庫(kù)程序設(shè)計(jì)語(yǔ)言上 。

一個(gè)entity bean 代表一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)及作用于該數(shù)據(jù)的方法。在一個(gè)關(guān)系型數(shù)據(jù)庫(kù)中的

雇員信息表中,每一行都有一個(gè)bean 來代表。entity beans 是事務(wù)的,并且是長(zhǎng)壽命的。只

要數(shù)據(jù)留在數(shù)據(jù)庫(kù)中,entity bean 就存在。這個(gè)模式可以被很容易地用于關(guān)系型數(shù)據(jù)庫(kù),而

不僅限于對(duì)象數(shù)據(jù)庫(kù)。

Session beans 可以是有狀態(tài)的,也可以是無狀態(tài)的。一個(gè)有狀態(tài)的

session bean 包含代表客戶程序的會(huì)話狀態(tài)。該會(huì)話狀態(tài)是該session

bean 實(shí)例的域值加上這些域值所引用到的所有對(duì)象。有狀態(tài)session

beans 并不代表在一個(gè)持久數(shù)據(jù)存儲(chǔ)中的數(shù)據(jù),但是,它可以代表客

戶程序訪問和更新數(shù)據(jù)。

無狀態(tài)session beans 沒有用于某個(gè)特定客戶程序的任何狀態(tài)信息。它們通常被用于提供不保

持任何特定狀態(tài)的服務(wù)器端行為。無狀態(tài)session beans 要求更少的系統(tǒng)資源。一個(gè)提供一種

一般服務(wù),或用于表示被存儲(chǔ)的數(shù)據(jù)的一個(gè)被共享的視圖的業(yè)務(wù)對(duì)象是無狀態(tài)session bean

的一個(gè)例子 。

因?yàn)閑nterprise beans 占用可觀的系統(tǒng)資源和帶寬,可能希望將某些業(yè)務(wù)對(duì)象構(gòu)造成數(shù)據(jù)訪問

對(duì)象或值對(duì)象。數(shù)據(jù)訪問對(duì)象完成諸如代表客戶程序訪問數(shù)據(jù)庫(kù)等工作。值對(duì)象用于代表容

納數(shù)據(jù)字段并提供簡(jiǎn)單的“get 和set ”方法來訪問這些數(shù)據(jù)的一個(gè)結(jié)構(gòu) 。

另外,可以將程序構(gòu)造成使用enterprise bean 在客戶和EJB 層的其它部分之間承擔(dān)通信的任

務(wù) 。

一個(gè)使用容器管理的持久性來訪問一個(gè)關(guān)系型數(shù)據(jù)庫(kù)的enterprise

bean ,并不要求在bean 的代碼中使用任何JDBC 2.0 API 來進(jìn)行數(shù)據(jù)庫(kù)

訪問,因?yàn)槿萜魍瓿闪诉@些工作。然而,如果使用bean 管理的持久性,

或者我們要訪問一個(gè)非關(guān)系型數(shù)據(jù)庫(kù)的企業(yè)信息系統(tǒng),那么我們就必

須在bean 中提供相應(yīng)的代碼來完成這些工作 。

在一個(gè)enterprise bean 使用bean 管理的持久性來訪問一個(gè)數(shù)據(jù)庫(kù)的情況下,必須使用JDBC

2.0 API 代碼來實(shí)現(xiàn)該enterprise bean 的生命期方法,以便處理數(shù)據(jù)的加載和存儲(chǔ),以及在運(yùn)

行時(shí)系統(tǒng)和持久數(shù)據(jù)存儲(chǔ)之間維持?jǐn)?shù)據(jù)的一致性。

一個(gè)使用bean 管理的持久性的enterprise bean ,或一個(gè)需要訪問企業(yè)信息系統(tǒng)的Web 組件必

須提供合適的代碼。這些代碼可能是用于進(jìn)行數(shù)據(jù)庫(kù)訪問的JDBC 2.0 API ;或是用于訪問一

個(gè)特定企業(yè)信息系統(tǒng)的企業(yè)信息系統(tǒng)API ;或是用于抽象企業(yè)信息系統(tǒng)API 的復(fù)雜性和低層

細(xì)節(jié)的一個(gè)訪問對(duì)象,或是用于訪問企業(yè)信息系統(tǒng)資源的一個(gè)連接對(duì)象。9

盡管Web 層使用HTTP 或HTTPS 來在各層之間傳輸數(shù)據(jù),但是,EJB 層使用的是RMI-IIOP 。

RMI-IIOP 是一個(gè)完整的分布式計(jì)算協(xié)議,能讓任何訪問一個(gè)enterprise bean 的客戶層程序或

Web 層程序直接訪問EJB 層的服務(wù)。這些服務(wù)包括用于查找和引用enterprise beans 的JNDI ,

發(fā)送和接收異步消息的Java Message Service (JMS ),以及用于關(guān)系型數(shù)據(jù)庫(kù)訪問的JDBC 。進(jìn)入討論組討論。

(出處:http://m.survivalescaperooms.com)



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 新巴尔虎右旗| 宣化县| 昂仁县| 台南市| 桂阳县| 洛川县| 上虞市| 湟源县| 安丘市| 揭东县| 云龙县| 阳西县| 大名县| 台北县| 蒙阴县| 慈溪市| 仁布县| 微山县| 惠安县| 曲水县| 扬州市| 焉耆| 米泉市| 庆元县| 德昌县| 黑山县| 永安市| 彭泽县| 铁力市| 通河县| 高雄市| 长宁县| 南木林县| 拉萨市| 元氏县| 广元市| 南郑县| 澄城县| 金平| 白银市| 通辽市|