程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> JSR#168 Portlet 說明

JSR#168 Portlet 說明

編輯:J2EE
全文 (1)-(7) 由 jini (99% jakarta) 所撰寫版權歸屬於 (c)softleader taiwan ( http://www.softleader.com.tw ) 如需轉載請信告知 [email protected] ch1 序言許多大型企業的網站, 漸漸采用了 portal server 作為開發的基礎. 至於什麼是 portal 呢, 中文翻譯為 "門戶網站"。 有人可能想.. 天殺的.. 門戶網站不是就像 yahoo, pchome, yam 等等。不過, 我們現在討論的 portal server, 不是那麼地簡單, 基本上 yahoo, pchome, yam 那些只能稱為搜索引擎的門戶網站。 如果你從來沒有用過 portal server 或是似懂非懂.. 大家可以連結到 MyNetscape 或 MyYahoo 去 注冊一個帳號。因為 MyNetscape 的樣式比較好看, 所以我接下來就以 MyNetscape 為介紹的范例。 如果你第一次接觸到 portal,你會驚訝的發現... 哇.. 為何一個網站裡面充滿了這麼多小窗口. 我們稱這些小窗口叫做 "portlet",而且每個小窗口都存在著獨立的信息與內容,可以放到最大化,縮小,還原,關閉等等。當你登陸之後,可以選擇及調整自己 portlet 的配置,也可以設置自己喜愛的風格與樣式,更可以設置每個 portlet 的資料配置。這種以客戶為上帝的系統,就是我們將要介紹的 portal。 ch2 Portal 的組成 Portal 的組成可以分為三部份 (1) Portal Server (2) Portlet Container (3) Portlet 1) Portal Server 的定義是一個 Portal(門戶網站)就是指一個 Web-based 的系統,通常都會提供個人化設置、單一登陸、以及由各種不同來源或不同網站取得各式各樣的信息,並且將這些信息放在網頁之中組合而成的呈現平台,門戶網站會有精巧的個人化設置去提供定制的網頁,當不同等級的使用者來浏覽該頁面將獲得不同的信息內容。 2) Portlet Container 的定義是 portlet container 是提供 portlets 執行的環境,包含了許多 portlets 並且管理他們的生命周期,他也會永遠保存著 portlets 的喜好設置,一個 portlet container 接收到來自 portal 的請求後,接著將這個請求傳遞給存在 container 的 portlet 執行。portlet container 沒有義務去組合 portlets 產生的信息內容,這個工作必須由 portal 來處理。portal 和 portlet container 可以放在一起視為同一個系統的組件,或者分開成為兩個獨立的組件。 3) Portlet 的定義是一個 Portlet 是以 Java 技術為技術的 Web 組件,由 Portlet Container 所管理,專門處理客戶的 request 以及產生各種動態的信息內容。Portlets 為可插式 ( pluggable ) 的客戶界面組件,提供呈現層成為一個信息系統。這些由 portlet 產生的內容也被稱為片段 (fragment),而片段是具有一些規則的Markup( HTML、XHtml、WML ),而且可以和其他的片段組合而成一個復雜的文件。而 Portlet 中的內容正常來說是與其他 Portlet 的內容聚合而成為一個 Portal 網頁。而 Portlet 的生命周期是被 Portlet Container 所管理控制的。客戶端和 portlets 的互動是由 portal 通過典型的 request/response 方式實現,正常來說,客戶會和 portlets 所產生的內容互動,舉例來說,根據下一步的連接或者是確認送出的表單,結果 portal 將會接收到 portlet 的動作,將這個處理狀況轉向到目標 portlet。這些 portlet 內容的產生可能會因為不同的使用者而有不同的變化,完全是根據客戶對於這個 portlet 的設置。 ch3 portlet 與 servlet 的關系 Portlet 和 Servlet 算是兄弟有那麼一點點相似卻又有那麼一點點不同,因為 Servlet 和 Portlet 不盡然相同,所以研究小組決定將 portlets 定義成為一個新的組件,因此定義了 portlets 一個新的並且明確的界面與行為。為了盡可能與現有的 servlet 結合達到重復使用的目的,portlet 的規范利用了 servlet 的規范,許多觀念都很相似的,結合 portlets、servlets 及 JSP 在同一個網站系統中,我們稱為 portlet application 。在同一個 portlet application 中,他們將分享同一個 classloader,context 及 session。 1) Portlet 和 Servlet 的相似之處 @ portlets 也是 Java 技術的 web 組件 @ portlets 也是有特定的 container 在管理 @ portlets 可以動態產生各種內容 @ portlets 的生命周期由 container 所管理 @ portlets 和客戶端的互動是通過 request/response 的機制 2) Portlet 和 Servlet 也有一些不同 @ portlets 只產生 markup 信息片段,不是完整的網頁文件。而 Portal 會將所有的 Portlet markup 信息片 段放到一個完整的 Portal 網頁。 @ portlets 不會和 URL 有直接的關系 @ 客戶端必須通過 portal 系統才能和 portlets 互動 @ portlets 有一些定義好的 request 處理,action request 以及 render request。 @ portlets 默認定義 portlet modes 及窗口狀態可以指出在網頁中該 portlet 的哪個功能正在執行及現在的 狀態。 @ portlets 可以在同一個 portal 網頁之中存在多個。 3) Portlet 有一些附加的功能是 Servlet 所沒有的 @ Portlets 能夠存取及儲存永久配置文件及定制資料。 @ portlets 可以存取使用者數據 @ portlets 具有 URL 的重寫功能在文件中去動態建立連結,允許 portal server 不用去知道如何在網頁的片 段之中建立連結及動作。 @ portlets 可以儲存臨時性的數據在 portlet session 之中,擁有兩個不同的范圍 : application-wide scope 及 portlet private scope 。 4) Portlet 不具有一些功能, 但是 Servlet 卻有提供 @ servlet 具有設置輸出的文字編碼( character set encoding)方式 @ servlet 可以設置 HTTP 輸出的 header @ servlet 才能夠接收客戶對於 portal 發出的 URL 請求 ch4 RI - pluto 冥王星計劃 JSR 是由 JCP ( www.jcp.org ) 這個 Java 組織所定義出來的規范。幾乎每個 JSR 都會產出 TCK* 及 RI** *TCK ( Technology Compatibility Kit ) 兼容性測試組件 *RI ( Reference Implementation ) 實現參考 2003/10/27 JSR#168 Portlet Spec 1.0 已經正式公布。以後, 大家就可以開始根據這個規范開發兼容性的產品。而這個標准規范書的 RI 就是采用 apache Jakarta Pluto 冥王星計劃。至於為何叫做冥王星,我猜是 Sun 想要把光芒射到冥王星都會發光吧 :P 目前 pluto 尚未有正式的版本釋放, 將來有興趣的人可以從 jakarta 網站下載。不過目前我由 CVS 取得版本已經可以正常運行了。安裝的方法十分簡單.. 只需要執行 %pluto%/bin/install 就可以安裝了,安裝過程會詢問你 tomcat 的目錄,假設你 tomcat 根目錄是 c:\tomcat4.1.27 ,你輸入 c:\tomcat4.1.27 就可以了。 接著 http://localhost:8080/pluto/portal 就可以看到很漂亮的 portal 界面,至於操作模式與方法非常簡單,請多加操控就可以慢慢了解 portlet 的控制方法了。 在 portlet spec 中定義的控制有分為 1) 基本的 Portlet Modes VIEW - 你沒有做任何動作僅僅做內容顯示 EDIT - 編輯相關的設置 HELP - 尋求幫助 2) 基本的 Window States NORMAL - 還原 portlet 窗口 MAXIMIZED - 最大化 portlet 窗口 MINMIZED - 最小化 portlet 窗口 其實, 這些動作都已經由 portal 所實現,portlet container 將接收與回應相關的動作。真正在程序開發上並不會考慮到這些細節,除非你要做一個 portlet container。而開發上要考慮的是什麼人能夠做什麼事情。例如說尚未登陸的人應該只能夠 doView / doHelp,而不能夠 doEdit 這種權限管控機制的開發。 ch5 css 定義每個通過認證的使用者,就可以使用相關的 portlet 外觀 ( Look&Feel )設置,而這些設置就是通過 css 來 編輯。在沒有 portlet spec 之前,各家廠商都自行規定或由 ISV 各自完成,造成了許多 portlet 無法共用同一份 CSS 來實現,移植上將會有許多問題發生。 因此 css 的定義對於具有定制功能的 portal 是相當重要的。 0) Anchor 這個並沒有定義 :P 1) Fonts ( font ) portlet-font portlet-font-dim 2) Message ( paragraph .. ) portlet-msg-status portlet-msg-info portlet-msg-error portlet-msg-alert portlet-msg-success 3) Sections ( table, div, span ... ) portlet-section-header portlet-section-body portlet-section-alternate portlet-section-selected portlet-section-subheader portlet-section-footer portlet-section-text 4) Forms ( form ) portlet-form-label portlet-form-input-field portlet-form-button portlet-icon-label portlet-dlg-icon-label portlet-form-field-label portlet-form-fIEld 5) menus ( popup menu ) portlet-menu portlet-menu-item portlet-menu-item-selected portlet-menu-item-hover portlet-menu-item-hover-selected portlet-menu-cascade-item portlet-menu-cascade-item-selected portlet-menu-description portlet-menu-caption 基本上, 你要了解什麼地方該用什麼 css,這些 CSS 名稱套用在你開發的 portlet 之中,你就可以移植到其他支持 JSr#168 的系統,不需要在花時間去更改成為他們的 Look&Feel。 ch6 信息片段 ( fragment markup ) 的限制每個 portlet 輸出都是一個信息片段,之前有提到, 這些 markup 有些限制。 如果你是生成 HTML 格式的信息片段,就*不可以*擁有以下這些 tag : base, body, iframe, frame, frameset, head, html, 及 title 如果生成是 XHTML 或 XHTML-basic 格式的信息片段,就*不可以*擁有以下這些 tag : base, body, iframe, head, Html 及 title ch7 其他細節最後, portlet 需要考慮的還有 security, caching, taglib 等等.. Portal 是連結後端 EAI 處理的信息整合平台,提供了企業完整的解決方案,提供了單一登陸的機制,貼心的個人化頁面設置,更可以提供各式各樣平台如 pda, 手機等等的統一窗口。因此, 政府與大企業都 *應該* 采用這種解決方案,通過 Webservice 達成信息流/金流/物流 的效果....
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved