|
可以將 portlet 看作在門(mén)戶(hù)頁(yè)面中顯示數據的可見(jiàn)的活動(dòng)組件。上圖說(shuō)明了關(guān)于門(mén)戶(hù)網(wǎng)站的 portlet。名為 Home 的門(mén)戶(hù)網(wǎng)站頁(yè)面上顯示了三個(gè) portlet,它們名為 Reports 、Weather 和 Contacts。
上圖說(shuō)明了包含 portlet 的頁(yè)面的組織結構。在頁(yè)面中,portlet 內容是由 PortletControl 和 PortletController 渲染的。 - portlet 頁(yè)面中的
PortletControl 渲染 portlet 的標題和主體。 PortletController 處理多個(gè) PortletControl(每個(gè)控制一個(gè) portlet),以便將從所有 portlet 抽出的信息組合起來(lái),提供完整的頁(yè)面信息。 portlet 使用元素構造集(Element Construction Set,ECS)API 顯示內容,該 API 是與 Jetspeed 捆綁在一起提供的。ECS API 從 Java 對象生成標記元素??梢允褂?JSP 技術(shù)或 servlet 模板來(lái)生成作為輸出的內容,然后由 ECS 元素捕獲該內容再依次顯示內容。ECS 支持無(wú)線(xiàn)標記語(yǔ)言(WML)以及 HTML 和 XML。 Jetspeed 向開(kāi)發(fā)人員提供了高級高速緩存機制。需要進(jìn)行高速緩存的 portlet 連同其相關(guān)句柄信息(譬如其類(lèi)名稱(chēng))以及一些 portlet 配置信息(譬如其 URL)一起被放置到高速緩存中。如果必須從高速緩存中除去 portlet,那么可以通過(guò) expire() 方法來(lái)完成該操作,該方法可以決定 portlet 何時(shí)在高速緩存中已到期。 | 門(mén)戶(hù)網(wǎng)站結構標記語(yǔ)言(PSML) | | 我們使用門(mén)戶(hù)網(wǎng)站結構標記語(yǔ)言(Portal Structure Markup Language,PSML)將 portlet 手工注冊到 Jetspeed。PSML 通知 Jetspeed 哪些 portlet 可用,并將這些 portlet 注冊到 Jetspeed。portlet 的配置文件是 WEB-INF/conf 目錄中的 jetspeed-config.jcfg。缺省配置文件名為 default.psml 和 defaultWML.psml,它們位于 WEB-INF/psml 中。一旦創(chuàng )建了用戶(hù),就擁有了兩個(gè)與之相關(guān)聯(lián)的配置文件 ― homeHTML.psml 和 homeWML.psml,這兩個(gè)文件存儲在 WEB-INF/psml/<username> 中。 PSML 由兩類(lèi)標記組成: - 注冊表標記描述了 Jetspeed 引擎可用的所有 portlet。關(guān)于每個(gè) portlet 的所有信息都存儲在 portlet 注冊表中。
- 站點(diǎn)標記描述了可以向特定用戶(hù)顯示哪些可用于 Jetspeed 引擎的 portlet。關(guān)于如何在屏幕/頁(yè)面上組織 portlet 的信息,以及其表示特性的信息,是通過(guò)站點(diǎn)標記描述的。
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 顯示的內容是 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> RSS portlet 渲染 RDF 站點(diǎn)摘要格式饋送,并將它作為 HTML 提供給用戶(hù),如下列代碼清單所示: <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 標記提供了 RSS 饋送的位置,它必須是格式化為 RSS 的 XML 文件。RSS portlet 支持 WML 和 HTML 媒體類(lèi)型。 |