天天看點

J2EE Architecture(16)

J2EE Architecture(16)

1、表示層

表示層通常也稱Web層,Web伺服器及其元件構成了J2EE應用程式的“表示部分”。

用戶端通過Web層通路企業資源,Web層允許規模龐大的客戶群在Internet或内網環境下,通過合理方式通路企業應用程式。Web層元件是輕量級元件,具有可伸縮特性。

浏覽器将HTTP/HTTPS請求發送給Web伺服器部署的元件,Web元件可能使用RMI/IIOP通信協定或其它專用協定直接連接配接到資源層,也可能連接配接到業務層。

J2EE Web應用程式的複雜性對應用程式的穩健性有直接影響,二者呈線性遞增關系。

2、Web層的重要性

1)靜态和動态内容

Web可支援靜态和動态内容。内容包括文本、圖形和多媒體。

2)請求/響應

利用Web元件可實作“請求-響應”模型。

3)輕量級

Web伺服器将HTTP用作通信協定。HTTP是一個輕量級傳輸協定,是實作業務事務“請求-響應”通信模型的最簡潔方式。

HTTP能傳輸對企業至關重要的HTML和XML内容。

4)會話

預設情況下HTTP通信無狀态。即伺服器不能連接配接同一個用戶端發送的兩個連續請求。在一些技術的幫助下,可将兩個或更多通信系列連成一個有用的企業事務會話。

5)可伸縮

Web伺服器能夠伸縮,能适應請求負載的增加。可利用硬體、軟體和設計模式,提高伸縮能力,使Web應用程式将内容呈現給更多或更少的客戶。

6)可實作業務邏輯

可優化Web伺服器以提高企業應用程式的表示能力。

可通過一些簡單方法,将業務邏輯嵌入到Web伺服器上。注意:業務邏輯若包含在Web層,可能存在洩漏風險。

3、Web容器

Web應用程式使企業應用程式的一部分,使客戶層與業務層之間的中間層,或客戶層與資源層之間的中間層。

Web層負責為部署的Web應用程式提供穩健支援。

Web伺服器可能需要支援若幹個Web應用程式,而每個Web應用程式可能需要支援若幹個互動的Web元件。各個Web應用程式部署的Web元件可能是若幹個Servlet、Filter和JSP的組合。

Web伺服器和Web容器一起,為Web應用程式及其元件提供生命期管理支援,并提供其它校準服務、如事務、命名和目錄服務等。

4、Web元件

Web層有4類元件:

1)HTML

2)Servlet

Servlet元件可部署到伺服器上,運用“請求/響應”模式。

其工作原理:将Servlet元件部署到适當容器後,Servlet将等待特定套接字上的用戶端的請求;在收到請求後,元件執行必要的計算,并将響應傳回給對應套接字上的用戶端。完成了對話,也就是執行了業務環境的事務。

GenericServlet是Servlet規範定義的超類,運用“請求/響應”模式,獨立于協定。優勢在于:允許通過适當擴充GenericServlet類,實作使用其它任何通信協定的特殊Servlet。

HttpServlet是GenericServlet的子類,運用“請求/響應”,模式,利用HTTP通信協定交換資訊。HTTP Servlet可接收各種形式的HTTP請求,如GET、POST和HEAD等。

Servlet的HTTP響應通常是HTML頁或XML頁,可使用setContentType()方法,将text/html或text/xml作為該方法的參數,以設定Servlet輸出流,生成所需的内容類型。很多重載方法有助于接收和響應客戶請求。如:doGet()方法服務HTTP GET請求,doPost()方法服務HTTP POST方法。

Servlet的主要目的不是生成HTML或XML輸出,而是在Web層提供程式設計邏輯和功能支援。

Servlet也可能支援業務邏輯,以建立MVC Model 1 架構。

Servlet可與企業應用程式的其它元件互動,為用戶端生成适當的輸出。

Servlet的主要目的是控制不同元件之間的通信,以根據企業需求生成需要的輸出。

可根據功能,将Servlet分為“前端控制器Servlet”和“表示Servlet”。

3)Filter

在Servlet2.3推出的,又稱為“Servlet Filter”,是插入式Web元件,允許實作Web應用程式的預處理和後期處理邏輯。

Filter支援Servlet的“請求處理”功能,如登陸、轉換、安全、會話、轉化和企業應用程式需要的其它同類任務。

Filter能截獲傳入的請求和傳出的響應,能檢查、修改或處理Web應用程式的資料流。

可将Filter作為獨立的子產品化元件添加到Web應用程式的“請求-響應”鍊;也可在不影響企業應用程式同一位置Web元件的情況下将其從Web應用程式中删除。

Filter是J2EE應用程式的可選元件,正确使用Filter或Filter鍊,将能極大的提高重用效果,并能用多種方式快速地實作應用程式。

4)JSP

在HTML頁中加入少量Java代碼可用來計算動态資料,是生成動态輸出的絕佳方式。在成功轉換和編譯JSP頁後,将建立一個特殊的Servlet,以接收請求。

嵌入HTML頁的Java代碼需要遵守一些簡單規則。

(1)JSP标準動作

通過與伺服器端JavaBean元件的互動來提高能力和穩健性,能幫助Web元件執行個體化Web層的JavaBean。

例子:

J2EE Architecture(16)

 @ page contentType="text/html" %>

J2EE Architecture(16)

html>

J2EE Architecture(16)

 body bgcolor="white">

J2EE Architecture(16)

  jsp:useBean id="custInfo" class="com.ora.jsp.beans.custinfo.CustInfoBean">

J2EE Architecture(16)

   jsp:setProperty name="custInfo" property="*"/>

J2EE Architecture(16)

  jsp:useBean>

J2EE Architecture(16)

  The following is the customer information:

J2EE Architecture(16)

  ul>

J2EE Architecture(16)

   li>Customer Name:

J2EE Architecture(16)

    jsp:getProperty name="custInfo" property="custName"/>

J2EE Architecture(16)

   li>

J2EE Architecture(16)

   li>Address:

J2EE Architecture(16)

    jsp:getProperty name="custInfo" property="address"/>

J2EE Architecture(16)
J2EE Architecture(16)
J2EE Architecture(16)

 body>

J2EE Architecture(16)
J2EE Architecture(16)

(2)JSP定制标記

定制标記是JSP中使用的XML标記類型,用于在輸出中提供更具定制特點的動态内容,可減少JSP頁中的腳本元素。

定制标記可提供各種支援,如條件标記和疊代器标記。

例子: 

J2EE Architecture(16)

 @taglib uri="myTag" prefix="myData"%>

J2EE Architecture(16)
J2EE Architecture(16)

 head>

J2EE Architecture(16)

  title>My Own Tagstitle>

J2EE Architecture(16)
J2EE Architecture(16)
J2EE Architecture(16)

  table>

J2EE Architecture(16)

   tr>

J2EE Architecture(16)

    td>

J2EE Architecture(16)

     myData:getData name="theText"/>

J2EE Architecture(16)
J2EE Architecture(16)
J2EE Architecture(16)
J2EE Architecture(16)
J2EE Architecture(16)