可以將 portlet 看作在門戶頁(yè)面中顯示數(shù)據(jù)的可見的活動(dòng)組件。上圖說(shuō)明了關(guān)于門戶網(wǎng)站的 portlet。名為 Home 的門戶網(wǎng)站頁(yè)面上顯示了三個(gè) portlet,它們名為 Reports 、Weather 和 Contacts。
上圖說(shuō)明了包含 portlet 的頁(yè)面的組織結(jié)構(gòu)。在頁(yè)面中,portlet 內(nèi)容是由 PortletControl 和 PortletController 渲染的。 - portlet 頁(yè)面中的
PortletControl 渲染 portlet 的標(biāo)題和主體。 PortletController 處理多個(gè) PortletControl (每個(gè)控制一個(gè) portlet),以便將從所有 portlet 抽出的信息組合起來(lái),提供完整的頁(yè)面信息。 portlet 使用元素構(gòu)造集(Element Construction Set,ECS)API 顯示內(nèi)容,該 API 是與 Jetspeed 捆綁在一起提供的。ECS API 從 Java 對(duì)象生成標(biāo)記元素??梢允褂?JSP 技術(shù)或 servlet 模板來(lái)生成作為輸出的內(nèi)容,然后由 ECS 元素捕獲該內(nèi)容再依次顯示內(nèi)容。ECS 支持無(wú)線標(biāo)記語(yǔ)言(WML)以及 HTML 和 XML。 Jetspeed 向開發(fā)人員提供了高級(jí)高速緩存機(jī)制。需要進(jìn)行高速緩存的 portlet 連同其相關(guān)句柄信息(譬如其類名稱)以及一些 portlet 配置信息(譬如其 URL)一起被放置到高速緩存中。如果必須從高速緩存中除去 portlet,那么可以通過(guò) expire() 方法來(lái)完成該操作,該方法可以決定 portlet 何時(shí)在高速緩存中已到期。 門戶網(wǎng)站結(jié)構(gòu)標(biāo)記語(yǔ)言(PSML) | | 我們使用門戶網(wǎng)站結(jié)構(gòu)標(biāo)記語(yǔ)言(Portal Structure Markup Language,PSML)將 portlet 手工注冊(cè)到 Jetspeed。PSML 通知 Jetspeed 哪些 portlet 可用,并將這些 portlet 注冊(cè)到 Jetspeed。portlet 的配置文件是 WEB-INF/conf 目錄中的 jetspeed-config.jcfg 。缺省配置文件名為 default.psml 和 defaultWML.psml ,它們位于 WEB-INF/psml 中。一旦創(chuàng)建了用戶,就擁有了兩個(gè)與之相關(guān)聯(lián)的配置文件 ― homeHTML.psml 和 homeWML.psml ,這兩個(gè)文件存儲(chǔ)在 WEB-INF/psml/<username> 中。 PSML 由兩類標(biāo)記組成: - 注冊(cè)表標(biāo)記描述了 Jetspeed 引擎可用的所有 portlet。關(guān)于每個(gè) portlet 的所有信息都存儲(chǔ)在 portlet 注冊(cè)表中。
- 站點(diǎn)標(biāo)記描述了可以向特定用戶顯示哪些可用于 Jetspeed 引擎的 portlet。關(guān)于如何在屏幕/頁(yè)面上組織 portlet 的信息,以及其表示特性的信息,是通過(guò)站點(diǎn)標(biāo)記描述的。
標(biāo)準(zhǔn) Web JSP portlet | | JSP portlet 顯示了 JavaServer Pages 的輸出。下列清單是一個(gè)示例: <portlet-entry name="HelloWorld" hidden="false" type="ref" parent="JSP" application="false"> <meta-info> <title>Hello World</title> <description>Example of JSP Portlet</description> </meta-info> <parameter name="template" value="hello.jsp" hidden="false"/> <media-type ref="html"/> </portlet-entry> 這個(gè) portlet 顯示的內(nèi)容是 hello.jsp 頁(yè)面的輸出。這個(gè) JSP 文件需要定位到 <tomcat_home>/<jetspeed_directory>/WEB-INF/templates/jsp/portlets 中。該 JSP 文件本身的代碼如下: <%@ taglib uri=‘/WEB-INF/templates/jsp/tld/template.tld‘ prefix=‘jetspeed‘ %> <card id=‘_myhellotestjsp‘ title=‘HELLOWORLD‘> <p> <b>JSP</b> Hello World<br /> <jetspeed:uriLookup type="Customize" /> Login<br/> <br>jetspeeed:uriLookup type="Login" /> <br>jetspeed:contentUri <br>apidocs/ <br><jetspeed:contentUri href="apidocs/" /> <br> Server Port<br/> <%= request.getServerPort() %><br/> </card> 標(biāo)準(zhǔn) RSS portlet | | RSS portlet 渲染 RDF 站點(diǎn)摘要格式饋送,并將它作為 HTML 提供給用戶,如下列代碼清單所示: <portlet-entry name="Apacheweek" hidden="false" type="ref" parent="RSS" application="false"> <meta-info> <title>Apacheweek</title> </meta-info> <url>http://www.apacheweek.com/issues/apacheweek-headlines.xml</url> </portlet-entry> url 標(biāo)記提供了 RSS 饋送的位置,它必須是格式化為 RSS 的 XML 文件。RSS portlet 支持 WML 和 HTML 媒體類型。 |