Java Web開發技術概述
來源:互聯網
上載者:User
第1章 Java Web開發技術概述
J2EE(Java 2 Platform,Enterprise Edition)平台建立在J2SE(Java 2 Platform,Standard Edition)的基礎上,為企業級應用提供了完整,穩定,安全和快速的Java平台.J2EE平台提供的Web開發技術主要支援兩類軟體的開發和應用,一類是做進階資訊系統架構的Web應用伺服器(Web application server),另一類是在Web應用伺服器上啟動並執行Web應用(Web application).
本章首先分析了J2EE體繫結構,然後在此基礎上介紹了容器,組件,Web應用,J2EE應用等與Java Web開發技術密切相關的基本概念.最後,闡述了組成J2EE體繫結構的各層所應用的Java Web開發技術,運行原理以及所提供的各種服務.
1.1 J2EE體繫結構
J2EE體繫結構定義了4個不同的層,自上而下的方向分別是:客戶層(client tier),表示邏輯層(presentation logic tier)也稱為Web層(Web tier),業務層(business tier)和資料層(data tier).
1.概述
J2EE體繫結構1.1所示.與終端使用者進行互動的前端表示組件在邏輯上被劃分到了客戶層,而提供資料存放區
與訪問功能的組件被劃分到了資料層.另一方面,在邏輯上駐留在前端與後端之間的中介層可能由一個表示邏輯層和一個業務層組成.表示邏輯層包括基於Internet協議和Web協議(HTTP,HTTPS,
HTML和XML)提供應用功能的組件,業務層由捕獲企業商務邏輯的組件組成,這兩個層在邏輯上可劃分為完全分離的兩層,每一個分離的層都是獨立的,從而使J2EE支援分布式4層(或者n層)應用.J2EE是一個靈活的結構,它不將開發人員鎖定到特定數量的層上,並且不詳細規定對於這些邏輯分組的物理分離.在網路計算環境上,一個普通的應用可以在一台電腦上同時運行表示邏輯層和業務層(甚至可以包括資料層),而進階的應用可以在若干台電腦上從物理上分隔每一層.
2.J2EE應用
隨著Web和Internet的發展,越來越多的企業開始開發與部署基於Web的企業內部網和外部網,而J2EE為基於Web的公司專屬應用程式提供了強有力的支援.
在Web環境下,術語"企業(enterprise)"描述的是依照一組公用規則進行運作的任何組織.從廣義上說,"J2EE應用(J2EE application)"只是特定於企業的軟體程式,它基於控制組織的一般規則中的某一部分來提供某種形式的功能.例如,企業可以使用J2EE建立自動化的購貨訂單處理應用,而大學則可以使用J2EE來構建學生選課系統.
J2EE體繫結構
術語"公司專屬應用程式(enterprise application)"與"分布式應用(distributed application)"的含義是相同的,因為每一個為企業構建的應用都是以某種方式分布在網路上的."公司專屬應用程式"只是另一種用於描述分布式多層應用的方法,這種應用分散在組織機構的網路基礎結構的不同層上.
從組件開發的視角看,J2EE支援簡化的,基於組件的開發模型.在這種模型中,公司專屬應用程式是通過使用Java語言編寫的重用軟體組織進行組裝而成的.J2EE是使用Java構建新型分布式多層應用的事實標準,是完全基於J2SE的.也就是說,J2EE實際上是在J2SE之上加入了大量的企業級API和功能,從公司專屬應用程式開發中提取關鍵要素,進而使開發人員能夠簡單而有效地建立廣泛的分布式應用.
從開發層次上看,J2EE是基於分布式多層應用程式模型的.在這種模型中,應用功能在邏輯上分布在連網計算環境中各個層級或各個層上,每一層表示大多數公司專屬應用程式所共有的相關概念集合.也就是說,J2EE應用由軟體組件構成,而這些軟體組件根據它們在整個應用結構中所起的作用進行了分組,J2EE組件在其對應的層上部署,並且在對應層的容器中運行.容器能夠提供標準的服務,同時使組件能夠
訪問對應層的API.
分布式多層應用(Distributed Multitiered Application)描述的是其各部分的軟體組件分布在網路各個不同的層或計算層級上的軟體應用.多層結構是J2EE的核心,在多層結構中,組成應用的各種組件在邏輯上是分離的或者是分布式的,跨越網路計算環境的各個層級或各層.多層應用在邏輯上對組件進行分組的依據是這些組件在整個應用結構中執行的功能,所以這裡的"層"代表功能的邏輯層或邏輯層級.
1.2 J2EE容器和組件
一般地,"Web應用"可以定義為:一個由
HTML/XML文檔,Java
Servlet,JSP(Java Server Pages),JSTL(Java Server Pages Standard Tag Library),類以及其他任何種類檔案可以捆綁起來,並在來自多個廠商的多個Web容器上啟動並執行Web資源構成的集合.可以將Web應用從一個伺服器移到另外一個伺服器,或者移動到同一伺服器的不同位置,而不需要對組成Web應用的任何種類的檔案作任何改動.
1.2.1 容器
"容器(container)"指的是提供特定程式元件服務的標準化運行時環境,通過這些組件,可以在任何供應商提供的J2EE平台上得到所期望的服務.容器的作用是為組件提供與部署,執行,生命週期管理,安全和其他組件需求相關的服務.此外,不同類型的容器明確地為它們管理的各種類型的組件提供附加服務.例如,J2EE Web容器都提供響應
客戶請求,執行請求時間的處理,以及將結果返回到用戶端的運行時環境支援.J2EE容器還負責管理某些基本服務,像諸如組件的生命週期,資料庫連接資源的共用,資料持久性等.
一般地,軟體開發人員只要開發出滿足J2EE應用需要的組件並能安裝在容器內就可以了.程式組件的安裝過程包括設定各個組件在J2EE應用伺服器中的參數,以及設定J2EE應用伺服器本身,這些設定決定了在底層由J2EE伺服器提供的多種服務(例如,安全,交易管理,JNDI查尋和遠程方法調用等).
J2EE平台對每一種主要的組件類型都定義了相應的容器類型.J2EE平台由Applet容器和應用用戶端容器(application client container),Web容器(
Servlet和JSP容器)和EJB容器(Enterprise JavaBeans Container)等4種類型的程式容器組成.
EJB容器——為Enterprise JavaBean組件提供運行時環境,它對應於業務層和資料
訪問層,主要負責資料處理以及和資料庫或其他Java程式的通訊.
Web容器——管理JSP和
Servlet等Web組件的運行,主要負責Web應用和瀏覽器的通訊,它對應於展示層.
應用用戶端容器——負責Web應用在用戶端組件的運行,它對應於使用者介面層.
Applet容器——負責在Web瀏覽器和Java外掛程式(Java Plug-in)上運行Java Applet程式,它對應於使用者介面層.
每種容器內都使用相關的各種Java Web編程技術.這些技術包括應用組件技術(例如,
Servlet,JSP,EJB等技術構成了應用的主體),應用服務技術(例如,JDBC,JNDI等服務保證組件具有穩定的運行時環境),通訊技術(例如,RMI,JavaMail等技術在平台底層實現機器和應用程式之間的資訊傳遞)等3類.
1.2.2 組件
為了降低軟體開發成本,適應企業快速發展的需求,J2EE平台提供了基於組件的方式設計,開發,組裝和部署公司專屬應用程式系統.按照這種方式開發出來的J2EE組件,不依賴於某個特定廠商提供的產品或者API.不管是開發商還是終端使用者,都有最大的自由去選擇那些能更好地滿足業務或技術需求的產品或組件.
1.組件的概念
組件(component)是指在應用程式中能發揮特定功能的軟體單位.組件實質上就是幾種特定的Java程式,只不過這些程式被規定了固定的格式和編寫方法,它們的功能和使用方式在一定程度上被標準化了.例如,在Java 2標準版中提供的JavaBean組件,就是按照特定格式編寫的Java類檔案.JavaBean可以通過getXXX( )和setXXX( )方法
訪問執行個體變數中的資料.
2.組件的類型
J2EE平台主要提供了以下3類J2EE組件:
用戶端組件——用戶端的Applet和用戶端應用程式.
Web組件——Web容器內的JSP,
Servlet,Web過濾器,Web事件監聽器.
EJB組件——EJB容器內的EJB組件.
組件與容器的關係概括如下:組件是組裝到J2EE應用中獨立的軟體功能單元,每一個J2EE組件在容器中執行,容器為組件提供標準服務和API,容器充當通向底層J2EE平台的介面."連接器(connector)"在概念上駐留在J2EE平台的下方,連接器提供了可移植服務的API,J2EE應用使用這些API來插入到現有的公司專屬應用程式中.連接器也稱為資來源配接器,連接器為J2EE體繫結構增加了另一種靈活性.
下面從組件和容器的視角審視J2EE應用的定義:
J2EE應用由軟體組件構成,這些軟體組件根據其各自所屬的層進行了分類.
組成J2EE應用的各種組件在對應容器中執行,容器為組件提供底層J2EE API的統一視圖.
容器管理組件,並且為組件提供多種系統級服務.例如,生命週期管理,交易管理,資料緩衝,異常處理執行個體池,線程以及安全性.也就是說,J2EE應用以分布式組件集合的形式存在,而各分布式軟體組件在其各自的容器中運行.
J2EE客戶為應用提供使用者介面.用戶端向終端使用者提供了一個視窗,終端使用者可以通過該視窗使用J2EE應用提供的各種服務.
1.3 客戶層技術
客戶層用來處理J2EE應用的客戶表示和使用者介面.客戶層用現實世界中的案頭電腦,Internet裝置或者無線裝置表示.J2EE應用可以和多種用戶端程式實現串連,主要包括Web客戶,Applet客戶和應用客戶.
1.3.1 Web客戶
Web客戶由瀏覽器和Web頁面集合(
HTML和XML等)兩部分組成.Web頁面由瀏覽器提供,用來向終端使用者提供進入公司專屬應用程式的介面.由Web客戶提供的各種Web頁面是通過駐留在Web層的Web組件動態建立的.通常,產生Web客戶內容的Web組件是
Servlet和JSP.Web容器負責管理駐留在Web伺服器上的
Servlet和JSP組件的執行,這些組件和Web容器又運行在J2EE伺服器上.
瀏覽器的功能是負責將頁面正確地顯示給使用者,並不承擔複雜的資料檢索和計算任務.這些複雜而又耗時的操作在J2EE伺服器端的Web容器和EJB容器內進行,所以Web客戶也被稱為"瘦客戶".瀏覽器是通過HTTP協議來與J2EE伺服器的特定連接埠進行通訊的.瀏覽器具有以下一些主要功能:
以特定格式顯示
HTML檔案.
擷取客戶的點擊並轉化成HTTP請求(request).
串連Web伺服器,發出HTTP請求並接收處理響應(response).
管理客戶和伺服器之間的對話狀態(Session State).
除上述這些基礎功能之外,還包括一些附屬功能.例如,設定使用者的Web安全機制,存取頁面和快捷串連,下載檔案等.
在下列場合下可以優先考慮使用Web客戶:
J2EE應用的終端使用者駐留在企業的外部.
J2EE應用的終端使用者由於只需要使用Web瀏覽器而不容易進行管理.
終端使用者不一定要下載或安裝任何特殊的軟體.
1.3.2 Applet客戶
由Web層組件產生的Web頁面可以包含嵌入式Applet.Applet是使用Java語言編寫的輕量級客戶程式,一般是在Web瀏覽器的上下文中執行.在Web瀏覽器中執行的Applet客戶是通過HTTP協議和Web層進行通訊,與Web客戶類似,這樣的Applet客戶同樣不能直接
訪問業務層.Applet容器負責管理Applet客戶的運行時執行,一般情況下由Web瀏覽器和Java外掛程式組成.Applet的優點是可以提供在一處管理的豐富圖形化使用者介面,主要缺點是Applet很難部署,尤其是當瀏覽器運行在一個嵌入不同版本的Java虛擬機器上時更是如此.
1.3.3 應用客戶
應用客戶是使用Java語言編寫,在標準的JVM上啟動並執行Java應用程式.應用客戶對J2SE API具有完全的
訪問能力,可以使用Java語言的Swing和AWT庫構建具有複雜功能和豐富的圖形化使用者介面.與Web客戶和Applet客戶不同的是,應用客戶是指獨立啟動並執行Java應用程式,它不使用Web瀏覽器來執行,而是在客戶容器內執行,使用RMI-IIOP(Remote Method Invocation,RMI;Internet Inter-ORB Protocol,IIOP)協議與業務層的EJB組件進行完全的互動,而不需要通過Web層作為中間媒介.同樣,應用客戶對由低層J2SE平台提供的J2EE服務(如JDBC服務)也具有完全的
訪問許可權.
在選擇用戶端技術時,可以根據程式的具體功能要求和應用場合來確定.
如果Web應用是通用的電子商務網站,採用Web瀏覽器作為用戶端是最合適的選擇.
如果Web應用要求使用者隨時地擷取資訊,程式的用戶端可以採用無線裝置.
如果Web應用要求具有複雜快速的使用者介面,就應該考慮在用戶端使用Applet或獨立啟動並執行Java應用程式.有時,還應該考慮Web頻寬要求,反應速度和安全性等具體情況.使用者的使用環境也直接影響到對客戶程式的選擇.
如果Web應用要求使用者可以在各種作業系統上都能夠使用,那麼就應該盡量使用標準的瀏覽器和Java技術作為程式用戶端.
1.4 Web層技術
Web層負責處理瘦用戶端的HTTP請求和響應.Web層包括標準化的動態網頁面產生程式和控制使用者介面的程式,它是終端使用者和系統程式的介面.通過與業務層互動,Web層將使用者需要的資訊以適當的格式輸出.
Web層與客戶層的主要
區別有以下兩點:第一,Web層主要在Web伺服器端工作,而使用者介面通過Web瀏覽器在用戶端工作,兩者之間通過Web通訊;第二,Web層側重於資訊格式的處理,而使用者介面則主要是方便人的理解和操作.例如,JSP檔案在Web伺服器端編譯和運行,主要從資料庫擷取資訊並傳遞給客戶,而JSP傳出的
HTML檔案在Web瀏覽器上顯示.此時,JSP檔案在Web層,
HTML頁面是使用者介面.
1.4.1 Web組件
Web組件是處理
客戶請求的軟體實體,為
客戶請求建立和返回一個合適的響應(
HTML文檔或XML文檔).Web組件駐留在Web層,為J2EE應用提供伺服器端的表示能力,使用標準的Web協議(HTTP/HTTPS)提供動態建立的內容.J2EE 1.4規範定義了4種不同的Web組件類型:Java
Servlet,JSP,Web過濾器,以及Web事件監聽器,1.2所示.
Web組件概念
Web組件在Web伺服器上的Web容器裡運行,可以在Web伺服器端對客戶發出的HTTP請求進行響應,也可以根據需要同其他伺服器端組件進行互動.除了直接同客戶互動外,Web組件還可以充當Applet客戶與在業務層和資料層上啟動並執行伺服器端組件之間的中間媒介.這是因為Applet不能直接
訪問業務層和資料層,所以要從這兩層獲得需要的功能必須經由Web層來實現.
1.Java
Servlet
相對於在瀏覽器上啟動並執行Applet而言,
Servlet是在伺服器上啟動並執行,用Java語言編寫的程式.
Servlet是用Java語言書寫的一種協議,是與平台無關的伺服器端組件,可在支援
Servlet的Web伺服器上運行.
Servlet被裝載到Web伺服器後,在JVM上執行,所以不需要任何圖形化使用者介面.
Servlet為用戶端和伺服器端的資訊處理提供了一種"要求-回應(request-response)"模式的運行機制,而Java
Servlet API為處理用戶端和伺服器端之間的請求和應答資訊定義了標準介面.
Servlet的基本運行方式1.3所示.
Servlet的基本運行方式
如果是靜態
HTML頁面,Web伺服器將會自行處理,然後產生響應資訊.
如果涉及到動態資料,Web伺服器將HTTP請求轉交給
Servlet容器處理,結果先傳送給Web伺服器,再由Web伺服器傳送給用戶端瀏覽器.
Java
Servlet具有以下主要優點:
可移植性——主流IT廠商的Web伺服器和應用伺服器都支援
Servlet,所以基於
Servlet的解決方案不會把開發人員限制在某個特定廠商的產品上.同時,
Servlet使用Java語言編寫,故可運行在任何安裝有Java運行時環境的作業系統上.
方便性——Web層技術主要使用通過HTTP處理傳遞的
HTML頁面資訊,這就要求Web伺服器能讀寫HTTP協議的資料頭,資料體,能處理Cookie和進行會話管理.這些工作雖然通過CGI技術也可以實現,但是
Servlet提供了以Java語言為基礎的編程方式,編程者可以使用物件導向的概念來應用現成的API.
高效性——
Servlet比CGI高效.CGI處理每個HTTP請求都要啟用一個進程,而Web容器使用線程管理
Servlet對HTTP請求的響應.當大量客戶同時對一個
Servlet發出請求時,Web容器只運行該
Servlet的一個執行個體,而不是像CGI那樣要運行多個執行個體而佔用大量的記憶體.CGI的另外一個問題是在處理HTTP請求後就被從記憶體中清理掉了,不能維持中間資料.而
Servlet在Web容器的輔助下維持程式執行個體在運行環境中的存在,直到Web容器停止時才會被清理.
通用廉價——Java Web編程技術是目前Web伺服器開發領域內占絕對優勢的技術.世界上絕大多數商業公司的網站都採用
Servlet和JSP作為Web層的主要技術,其安全性和可靠性是可以信賴的.另一方面,支援
Servlet,JSP技術的Web伺服器非常多,從高端的OracleAS 10g,Web Sphere,WebLogic,到底端免費的Tomcat,編程人員可以有非常多的選擇.
2.JSP
JSP技術提供了一種簡單而快速的方法建立顯示動態產生內容的Web頁面.JSP技術規範由Sun公司制定,該規範定義了如何在伺服器和JSP之間進行互動,描述了頁面的格式和文法.JSP 使用XML標籤和Scriptlets(一種使用Java語言編寫的指令碼代碼)封裝產生頁面內容的邏輯.JSP將各種格式的標籤(
HTML或XML)直接傳遞給響應的頁面.通過這種傳送方式,JSP實現了頁面邏輯與其設計和顯示的分離.JSP是Java技術的一部分.JSP在執行時被編譯成
Servlet,並可調用JavaBean組件或Enterprise JavaBean組件,以便在伺服器端處理.因此,JSP技術在構建可升級的基於Web的應用時扮演了重要角色.JSP與Java語言一樣,並不局限於任何特定的平台或Web伺服器.
既然JSP在執行時也要被編譯成
Servlet,那麼在理論上就可以直接編寫
Servlet建立Web應用.然而,JSP技術通過將頁面內容和顯示邏輯分開,簡化了建立網頁的過程.在許多應用程式中,需要將模板內容和動態產生的資料一塊發送到用戶端.基於這種考慮,使用JSP技術要比全部使用
Servlet方便得多.JSP技術具有以下主要優點:
簡單實用——JSP可以實現大部分的
Servlet功能,並繼承了
Servlet的優點,彌補了
Servlet的不足.JSP使
Servlet的動態資料處理和輸出格式兩者分開,採用了一種類似
HTML的格式,使Web應用的維護和修改更加方便.即使不懂Java編程的人員也可以通過標準標籤實現JSP的準系統.
移植性和規範性好——JSP技術和微軟公司的ASP技術是競爭關係.JSP使用Java語言作為動態內容產生的程式設計語言,ASP則主要使用VBScript指令碼語言.ASP程式一般運行在微軟的IIS伺服器上,一旦從Windows平台轉到其他平台,就很難再被使用.Java語言則具有更強的適用性和移植性,JSP程式無需改動,就可以在各種平台上運行.
Servlet和JSP是Web層的主要技術.Web容器提供了
Servlet和JSP等Web組件的運行時環境,這些組件是瀏覽器和Web應用進行互動的主要通道.
Servlet是用Java語言編寫的Java類,能動態處理
客戶請求並構造響應.JSP則基於文本,也能像
Servlet一樣被執行,更多適用於建立一些靜態內容.
3.過濾器
過濾器是駐留在Web層上的軟體對象,在
Servlet或JSP容器中運行,可對到來的
客戶請求由
Servlet或JSP頁面建立的應答響應進行動態變換.與
Servlet或JSP組件不同的是,過濾器並不建立針對請求的響應,而是對由Web預先建立的響應進行過濾.實現過濾的方式是在響應文檔返回給客戶之前對該響應文檔進行修改.
4.事件監聽器
事件監聽器是一些Java類,用於實現一個或多個
Servlet事件監聽介面,接收特定
Java Web開發技術概述