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