這里所說的Portal是指JCP-JSR168規(guī)范所描述的:Portal是一個(gè)基于Web的應(yīng)用,通常它提供個(gè)性化、單點(diǎn)登錄、內(nèi)容集成和顯示等功能。Portal技術(shù)包括三個(gè)方面:
1)? Portal服務(wù)器(Portal Server);
2)? Portlet容器;(Portlet Container)
3)? Portlet。
1) Portal Server 的定義是
一個(gè) Portal(門戶網(wǎng)站)就是指一個(gè) Web-based 的系統(tǒng),通常都會(huì)提供個(gè)人化設(shè)置、單一登陸、以及由各種不同來源或不同網(wǎng)站取得各式各樣的信息,并且將這些信息放在網(wǎng)頁之中組合而成的呈現(xiàn)平臺(tái),門戶網(wǎng)站會(huì)有精巧的個(gè)人化設(shè)置去提供定制的網(wǎng)頁,當(dāng)不同等級(jí)的使用者來瀏覽該頁面將獲得不同的信息內(nèi)容。
負(fù)責(zé)接收HTTP請(qǐng)求,調(diào)用portlet,并將portlet產(chǎn)生的內(nèi)容聚集到portal page返回給客戶。
2) Portlet Container 的定義是
portlet container 是提供 portlets 執(zhí)行的環(huán)境,包含了許多 portlets 并且管理他們的生命周期,他也會(huì)永遠(yuǎn)保存著 portlets 的喜好設(shè)置,一個(gè) portlet container 接收到來自 portal 的請(qǐng)求后,接著將這個(gè)請(qǐng)求傳遞給存在 container 的 portlet 執(zhí)行。portlet container 沒有義務(wù)去組合 portlets 產(chǎn)生的信息內(nèi)容,這個(gè)工作必須由 portal 來處理。portal 和 portlet container 可以放在一起視為同一個(gè)系統(tǒng)的組件,或者分開成為兩個(gè)獨(dú)立的組件。
負(fù)責(zé)提供portlet的運(yùn)行時(shí)環(huán)境,管理portlet的生命周期,還負(fù)責(zé)提供portlet持久化能力。
3) Portlet 的定義是
一個(gè) Portlet 是以 Java 技術(shù)為技術(shù)的 Web 組件,由 Portlet Container 所管理,專門處理客戶的 request 以及產(chǎn)生各種動(dòng)態(tài)的信息內(nèi)容。Portlets 為可插式 ( pluggable ) 的客戶界面組件,提供呈現(xiàn)層成為一個(gè)信息系統(tǒng)。這些由 portlet 產(chǎn)生的內(nèi)容也被稱為片段 (fragment),而片段是具有一些規(guī)則的Markup( HTML、XHTML、WML ),而且可以和其他的片段組合而成一個(gè)復(fù)雜的文件。而 Portlet 中的內(nèi)容正常來說是與其他 Portlet 的內(nèi)容聚合而成為一個(gè) Portal 網(wǎng)頁。而 Portlet 的生命周期是被 Portlet Container 所管理控制的。客戶端和 portlets 的互動(dòng)是由 portal 通過典型的 request/response 方式實(shí)現(xiàn),正常來說,客戶會(huì)和 portlets 所產(chǎn)生的內(nèi)容互動(dòng),舉例來說,根據(jù)下一步的連接或者是確認(rèn)送出的表單,結(jié)果 portal 將會(huì)接收到 portlet 的動(dòng)作,將這個(gè)處理狀況轉(zhuǎn)向到目標(biāo) portlet。這些 portlet 內(nèi)容的產(chǎn)生可能會(huì)因?yàn)椴煌氖褂谜叨胁煌淖兓耆歉鶕?jù)客戶對(duì)于這個(gè) portlet 的設(shè)置。
Portal主要是解決企業(yè)信息和應(yīng)用的前端集成問題,它負(fù)責(zé)連結(jié)企業(yè)后臺(tái)EAI,集成企業(yè)的結(jié)構(gòu)和非結(jié)構(gòu)化信息,并提供統(tǒng)一的訪問企業(yè)信息和應(yīng)用的入口。
(摘自JSR168規(guī)范文檔)
portlet 與 servlet 的關(guān)系
Portlet 和 Servlet 算是兄弟有那么一點(diǎn)點(diǎn)相似卻又有那么一點(diǎn)點(diǎn)不同,因?yàn)?Servlet 和 Portlet 不盡然相同,所以研究小組決定將 portlets 定義成為一個(gè)新的組件,因此定義了 portlets 一個(gè)新的并且明確的界面與行為。為了盡可能與現(xiàn)有的 servlet 結(jié)合達(dá)到重復(fù)使用的目的,portlet 的規(guī)范利用了 servlet 的規(guī)范,許多觀念都很相似的,結(jié)合 portlets、servlets 及 jsp 在同一個(gè)網(wǎng)站系統(tǒng)中,我們稱為 portlet application 。在同一個(gè) portlet application 中,他們將分享同一個(gè) classloader,context 及 session。
1) Portlet 和 Servlet 的相似之處
@ portlets 也是 Java 技術(shù)的 web 組件
@ portlets 也是有特定的 container 在管理
@ portlets 可以動(dòng)態(tài)產(chǎn)生各種內(nèi)容
@ portlets 的生命周期由 container 所管理
@ portlets 和客戶端的互動(dòng)是通過 request/response 的機(jī)制
2) Portlet 和 Servlet 也有一些不同
@ portlets 只產(chǎn)生 markup 信息片段,不是完整的網(wǎng)頁文件。而 Portal 會(huì)將所有的 Portlet markup 信息片 段放到一個(gè)完整的 Portal 網(wǎng)頁。
@ portlets 不會(huì)和 URL 有直接的關(guān)系
@ 客戶端必須通過 portal 系統(tǒng)才能和 portlets 互動(dòng)
@ portlets 有一些定義好的 request 處理,action request 以及 render request。
@ portlets 默認(rèn)定義 portlet modes 及窗口狀態(tài)可以指出在網(wǎng)頁中該 portlet 的哪個(gè)功能正在執(zhí)行及現(xiàn)在的 狀態(tài)。
@ portlets 可以在同一個(gè) portal 網(wǎng)頁之中存在多個(gè)。
3) Portlet 有一些附加的功能是 Servlet 所沒有的
@ Portlets 能夠存取及儲(chǔ)存永久配置文件及定制資料。
@ portlets 可以存取使用者數(shù)據(jù)
@ portlets 具有 URL 的重寫功能在文件中去動(dòng)態(tài)建立連結(jié),允許 portal server 不用去知道如何在網(wǎng)頁的片 段之中建立連結(jié)及動(dòng)作。
@ portlets 可以儲(chǔ)存臨時(shí)性的數(shù)據(jù)在 portlet session 之中,擁有兩個(gè)不同的范圍:
application-wide scope 及 portlet private scope 。
4) Portlet 不具有一些功能, 但是 Servlet 卻有提供
@ servlet 具有設(shè)置輸出的文字編碼( character set encoding)方式
@ servlet 可以設(shè)置 HTTP 輸出的 header
@ servlet 才能夠接收客戶對(duì)于 portal 發(fā)出的 URL 請(qǐng)求
基于Portal開發(fā)項(xiàng)目的優(yōu)勢(shì)
1、可以與以后新開發(fā)的或已集成到Portal中的企業(yè)應(yīng)用實(shí)現(xiàn)無縫集成。
2、可以分享Portal服務(wù)器和Portlet容器提供的種種功能。這要視Portal服務(wù)器提供商而定。
3、由于Portlet已規(guī)范化(JSR168),所以應(yīng)用中開發(fā)的Portlet可以部署在不同的Portal服務(wù)器上。
jwebee
我的個(gè)人網(wǎng)站