|
2.3. 什么是Portlet 容器?
容器也為Portlet “喜好參數(shù)”提供持久存儲。一個Portlet 容器由Portal 收到請求,把請求交給負(fù)責(zé)的Portlets 去執(zhí)行。 Portlet 容器不負(fù)責(zé)聚合portlets 生成的內(nèi)容。這個由Portal 來負(fù)責(zé)處理。 一個Portal 和一個Portlet 能夠構(gòu)造成一個應(yīng)用套件的一個單獨(dú)的構(gòu)件,或者作為一個Portal 應(yīng)用的兩個分開的構(gòu)件。 2.4. 一個示例 下邊的典型事件序列,由用戶連接到她的portal 頁面開始: l 一個通過了認(rèn)證的客戶端(如一個網(wǎng)頁瀏覽器)向portal 產(chǎn)生一個HTTP 請求 l Portal 收到這個請求 l Portal 確定這個請求包含的動作目標(biāo)是給Portal 頁面上哪一個關(guān)聯(lián)的portlet 的 l 如果有一個動作目標(biāo)是給某個portlet 的,portal 要求Portlet 同去調(diào)用這個Portlet 來處理這個動作 l Portal 通過Portlet 容器調(diào)用Portlet ,獲得包含在結(jié)果Portal 頁面中內(nèi)容片。 l Portal 聚合頁面中Portlets 的輸出,并將頁面發(fā)回給客戶端。 2.5. Portlet規(guī)范和J2EE 的關(guān)系 Portlet apr 1.0版是基于J2EE 1.3版.Portlet s容器和PORTLETS符合J2EE規(guī)范描述的需求,能夠運(yùn)行在J2EE環(huán)境中. 在名字和概念上,Portlet 和Servlet (定義在Servlet 2.3 規(guī)范中)很類似。 3. Portlet規(guī)范與Servlet規(guī)范的關(guān)系 Servlet 2.3 規(guī)范對Servlets 的定義是這樣的:
Portlets 和 Servlets 有下列相似之處: l Portlets 是基于Java 技術(shù)的Web 組件 l Portlets由專門的容器來管理 l Portlets 可以生成動態(tài)的內(nèi)容 l 容器管理Portlets 的生命周期 l Portlets 與Web 客戶端通過“請求/響應(yīng)”的模式來交互 Portlets 和 Servlets 的不同之處有以下幾方面: l Portlets 生成一些標(biāo)記語言的標(biāo)記片斷,而不是整個文檔。由Portal 聚合這些Portlet 標(biāo)記片形成一個完整的Portal 頁面。 l Portlets 不直接綁定到一個URL l Web 客戶端是通過Portal 系統(tǒng)與Portlets 交互 l Portlets 更精確的就行請求的響應(yīng),處理和提交 l 在Portal 頁面中,Portlets 有預(yù)定義好的Portlet 模式和窗口狀態(tài)來指出當(dāng)前Portlet 執(zhí)行的是什么功能 l Portlets 能夠在Portal 頁面中存在多次 Portlets 能夠具有Servlets 不能提供的一些額外功能: l Portlets 可以有訪問持久存儲的配置和客戶定制數(shù)據(jù)的能力 l Portlets 可以訪問用戶描述信息 l Portlets 有URL 重寫功能來在它的內(nèi)容中創(chuàng)建超級鏈接,這樣就可以允許Portal 服務(wù)器在頁面片中不可知的創(chuàng)建鏈接和處理 l Portlets 能夠在兩個不同的范圍內(nèi),在 Portlet session 中暫時存儲一些數(shù)據(jù):應(yīng)用范圍內(nèi)和Portlet 私有范圍 有一些Servlet 的功能,Portlet 并不具備 l 在響應(yīng)中設(shè)置字符編碼 l 在響應(yīng)中設(shè)置HTTP 頭信息 l 沒有客戶端可以請求的URL 因為這些不同,專家組決定需要一種新的Portlet 組件,因此,Portlet 并不是Servlet,將為Portlets定義清晰的接口和行為。 為了盡可能的重用現(xiàn)有的Servlet 基礎(chǔ)結(jié)構(gòu),有可能的情況下,Portlet 規(guī)范使用了一些Servlet 規(guī)范提供的功能。比如包括了:部署、類裝載、Web 應(yīng)用、Web 應(yīng)用生命期管理、Session 管理和請求分派。大量的概念和Portlet API 的內(nèi)容都仿照了Servlet API。 Portlets、Servlets 和JSPs 捆綁在一起作為一個擴(kuò)展Web 應(yīng)用就叫做 Portlet 應(yīng)用。Portlets、Servlets 和JSPs 在同一個Portlet 應(yīng)用中共享類裝載器、應(yīng)用context 和session。
|
|
|