1. Portlet概念
Portlet 是可以提供對基于 Web 的內容、應用程序和其它資源訪問的可重用組件。可通過 portlet 訪問 Web 頁面、web 服務、應用程序和成為企業組合的內容供給。公司可以創建他們自己的 portlet 或從第三方 portlet 目錄中選擇 portlet。portlet 是打算被組裝成更大的門戶網站頁面,其中同一 portlet 的多個實例為每個用戶顯示不同的數據。
從用戶的角度來看,portlet 是門戶網站站點中提供特定服務或信息(例如,提供日歷和新聞)的窗口。從開發者的角度來看,portlet 是可插入的模塊,它們被設計成在 Portal Server 的 portlet 容器中運行。
portlet 容器提供了一個運行時環境,在這個環境中實例化、使用和最終破壞 portlet。portlet 依靠門戶網站基礎結構來訪問用戶概要文件信息、參與在窗口和操作事件中、與其它 portlet 通信、訪問遠程內容、查找憑證以及存儲持久數據。Portlet API 提供了這些功能的標準接口。portlet 容器不是一個類似于 servlet 容器的獨立容器。它是以 servlet 容器上的瘦層的方式實現的,并重用 servlet 容器提供的功能。
下面是典型的事件流程,當用戶訪問portal頁面的時候:
² 客戶端在驗證后向portal發http請求。
² portal接收請求。
² portal判定是否有包含請求,并請求包含的動作指向的portlet是和這個portal頁面相關聯的。
² 假如含有動作的目標portlet,portal發請求給portlet容器去執行相應的portlet的動作。
² portal通過portlet容器調用portlets,去獲得內容片斷,這個片斷可以包含在portal頁面中。
² portal集合portlets的輸出內容到1個portal頁面中,并把頁面返回客戶端。
Portlet產生標記片斷。Portal通常給portlet產生的標記片斷加了標題,控制按鈕和其他的裝飾,這個新的片斷叫portlet窗口。然后portal整合portlet窗口到完整的文件,portal頁面。
![[Portal參考手冊]Portlet概念(圖一)](http://www.knowsky.com/UploadFiles/20071231/20081522195163777801.jpg)
Portlets 運行在portlet容器內。Portlet容器接收portlets產生的內容。典型的,portlet容器把portlet內容傳到portal。Portal server根據portlet產生的內容創建portal頁面,并傳送給客戶端,由客戶端顯示。
![[Portal參考手冊]Portlet概念(圖二)](http://www.knowsky.com/UploadFiles/20071231/20081522195169977802.jpg)
客戶使用客戶終端訪問portal。在收到請求后,portal判定滿足請求的portlets列表。Portal通過portlet容器,調用portlets。Portal用portlet產生的片斷創建portal頁面,同時把頁面返回給用戶。
![[Portal參考手冊]Portlet概念(圖三)](http://www.knowsky.com/UploadFiles/20071231/20081522195180877803.jpg)
用戶可以根據需要通過增刪Portlet的方式配置他們的頁面。在Windows或者XWindows窗口程序中,窗口有最大化和最小化的窗口狀態,portlet也有窗口狀態。窗口狀態是portal頁面空間數量的指示器,它被賦值給portlet產生的內容中。當調用portlet,容器提供當前窗口狀態給portlet。Portlet使用窗口狀態決定多少信息需要render。Portlets能在處理action請求時,編程的改變他們的窗口狀態。Portlet規范定義了3種窗口狀態,normal,maximized和minimized。
Normal窗口狀態
Normal窗口狀態表示portlet要和其他的portlet共享頁面。它也表示目標設備限制了顯示能力。因此,portlet限制輸出的尺寸。
MAXIMIZED窗口狀態
Maximized窗口狀態表示portlet是portal頁面唯一的portlet,或portlet相比與其他的portlet有更多的空間。當窗口狀態是Maximized時,portlet產生更多的內容。
Minimized窗口狀態
當portlet是minimized狀態,它將是最小限度的輸出,或不輸出。
Portlet模式指出porlet的功能。一般來說,portlet執行不同任務,依靠當前執行的任務的創建不同內容。Portlet模式告訴portlet他們執行什么任務,生產什么內容。當調用portlet,容器提供當前portlet模式給portlet。Portlets在處理action請求時能編程的改變他們的portlet模式。
Portlet有四種模式:view,edit, help和config。
可用的模式根據用戶的角色受到限制。例如,匿名用戶只能使用view和help模式,而驗證用戶可以使用edit模式。
舉例來說,一個用戶可以定制的股票信息Portlet,View模式答應用戶查看股票列表,Help模式提供給用戶幫助手冊,Edit模式答應用戶定制自己關注的股票列表,而Config模式答應治理員改變股票服務的一些配置。
VIEW 模式
View模式期待的功能是產生標記反映當前的狀態給portlet。例如,view模式的portlet包含1個或多個框,用戶可以操作或交互,或組成不需要任何用戶交互的的靜態內容。
Portlet開發者需要通過覆蓋doView方法實現view portlet模式的功能。
EDIT 模式
通過edit模式,portlet提供內容和logic讓用戶用戶化portlet的行為。Edit模式包含一個或多個框,用戶可以定位并輸入他們的用戶化數據。
典型的,edit模式,將設置或修改portlet的參數。Portlet開發者需要通過覆蓋doEdit方法實現edit portlet模式的功能。
HELP 模式
當在help模式,portlet提供portlet的help信息。這個help信息將會是簡單的框,用連貫的正文或上下文敏感的幫助闡明了整個portlet。Portlet開發者需要通過覆蓋doHelp方法實現help portlet模式的功能
CONFIG 模式
當在config模式,治理員可以進行相應的操作。Portlet開發者需要通過覆蓋doConfig方法實現view portlet模式的功能。
因為Portlet繼續于Servlet,所以portlet可以打包成war文件發布到Portal容器中。治理員可以發布或者卸載portlet。在一個Portlet Web 應用中,一個portlet描述文件用來描述portlet的屬性和初始化信息。一個Portlet定義包含一個application portlet和多個concrete portlet。一個Application Portlet在portlet容器中僅存在一個實例。一個concrete Portlet實例一個使用額外的數據實例化的portlet。
servlet規范2.3定義如下:
“servlet是基于web組件的,由容器治理的,產生動態內容的java技術。類似其他的java組件,servlets是平臺獨立的java類,它被編譯為中間字節碼,能被動態加載和運行在java激活的web server。容器,有時稱為servlet引擎,是web server的擴展,它提供servlet功能。Servlets通過由容器執行的請求/返回模式和客戶端交互。”
Portlets 和servlets有很多相似性:
? Portlets也是基于web組件的java技術
? Portlets由專門的容器治理。
? Portlets產生動態內容。
? Portlets生命周期由容器治理。
? Portlets請求/返回模式和客戶端交互。
Portlets 和servlets不同的地方:
Portlets只產生標記片斷,而不是完整的文檔。Portal把這些整合到portal頁面中去。
Portlets不是直接和url綁定。
web客戶端通過portal系統和portlets作用。
Portlets有更精確的請求處理,action請求,render請求。
Portlets有預先定義的portlet模式和窗口狀態,這些指出portlet的功能,和portal頁面中實時狀態的數量。
Portlets在1個portal頁面中能存在好幾次。
Portlets有servlets不包含的功能:
Portlets有訪問和儲存持久化參數和用戶化數據的方法。
Portlets能訪問用戶PRofile信息。
Portlets有url改寫的功能去產生新的鏈接,這使得portal server可以在不知道的情況下,在頁面片斷中創建鏈接和動作。
Portlets能保存瞬時信息在不同范圍的portlet session中:應用程序寬度的范圍,和portlet私有的范圍。
portlet沒有而servlet有的功能:
設置返回字符的編碼
設置返回的http頭
向portal請求的客戶端 URL。
新聞熱點
疑難解答