隨著Portal一步步走向成熟其結(jié)構(gòu)和功能也發(fā)生了較大變化,從混和型服務(wù)走向以系統(tǒng)框架為核心,應(yīng)用程序與部署、開(kāi)發(fā)完全分開(kāi)的階段,Portal相當(dāng)與一個(gè)骨架一樣可以接納外部的這種技術(shù)架構(gòu)開(kāi)發(fā)的應(yīng)用程序,使用Portals Bridges模式來(lái)連接不同的應(yīng)用程序,可包括一下幾種:
集成Struts MVC模式開(kāi)發(fā)的應(yīng)用程序:
Struts已經(jīng)成為了用Java創(chuàng)建Web應(yīng)用的一個(gè)最流行的框架工具,Struts所實(shí)現(xiàn)的MVC模式給Web應(yīng)用帶來(lái)了良好的層次劃分,同時(shí)也提供了一系列的工具來(lái)簡(jiǎn)化Web應(yīng)用的開(kāi)發(fā)。
應(yīng)用程序開(kāi)發(fā)者無(wú)需關(guān)心Portal的規(guī)范,只要關(guān)心Struts本身的開(kāi)發(fā),這樣大大降低了開(kāi)發(fā)成本和開(kāi)發(fā)人員的再培訓(xùn)
圖7:在Portal中集成Struts應(yīng)用程序
主要實(shí)現(xiàn)類:
public class StrutsPortlet extends GenericPortlet
下面是Portlet的片斷:
<portlet id="StrutsPortletDemo">
<init-param>
<name>ServletContextProvider</name>
<value>org.apache.jetspeed.portlet.
ServletContextProviderImpl</value>
</init-param>
<init-param>
<name>ViewPage</name>
<value>/Welcome.do</value>
</init-param>
<init-param>
<name>HelpPage</name>
<value>/Tour.do</value>
</init-param>
<portlet-name>StrutsPortletDemo</portlet-name>
<display-name>Struts Portlet Demo</display-name>
<description>This is the struts MailReader portlet demo</description>
<portlet-class>org.apache.portals.bridges.struts.StrutsPortlet
</portlet-class>
<expiration-cache>-1</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
<portlet-mode>HELP</portlet-mode>
</supports>
集成WebWork開(kāi)發(fā)的應(yīng)用程序
WebWork是一個(gè)源代碼開(kāi)放的Web應(yīng)用框架,用于簡(jiǎn)化基于Web的應(yīng)用開(kāi)發(fā)。本專欄介紹了WebWork并且描述了如何使用WebWork和JavaServerPages(JSP)、Velocity兩種技術(shù)來(lái)建立注冊(cè)界面的過(guò)程
通過(guò)Jetspeed2的Portals Bridges框架來(lái)實(shí)現(xiàn)和webwork的集成,主要實(shí)現(xiàn)類
public class Webwork2Portlet extends GenericPortlet
JSF應(yīng)用程序集成
JSF是什么?
JSF為廣大基于JAVA的 Web應(yīng)用用戶界面的開(kāi)發(fā)人員提供了標(biāo)準(zhǔn)的編程接口、豐富可擴(kuò)展的UI組件庫(kù)(一個(gè)核心的JSP標(biāo)記庫(kù)用來(lái)處理事件、執(zhí)行驗(yàn)證以及其他非UI相關(guān)的操作和一個(gè)標(biāo)準(zhǔn)的HTML 標(biāo)記庫(kù)來(lái)表示 UI組件)、事件驅(qū)動(dòng)模型等一套完整的Web應(yīng)用框架,通過(guò) JSF ,您可以在頁(yè)面中輕松自如地使用 WEB 組件、捕獲用戶行為所產(chǎn)生的事件、執(zhí)行驗(yàn)證、建立頁(yè)面導(dǎo)航…,同時(shí)您會(huì)發(fā)現(xiàn),當(dāng)使用支持JSF的開(kāi)發(fā)工具來(lái)開(kāi)發(fā) JSF 應(yīng)用的時(shí)候,一切將會(huì)變得異常簡(jiǎn)單,就類似于我們現(xiàn)在開(kāi)發(fā)VB或者PowerBuilder程序一樣的簡(jiǎn)便,GUI方式拖放組件、修改組件屬性、建立組件間關(guān)聯(lián)以及編寫事件偵聽(tīng)器等等,這樣,一個(gè)并不是特別熟悉Java的Web應(yīng)用開(kāi)發(fā)人員也能夠輕松地完成自己的任務(wù)了,這種易開(kāi)發(fā)性對(duì)于J2EE而言無(wú)疑是太重要了
集成PERL應(yīng)用程序
PERL介紹:
Perl 就是 Practical Extraction and Reporting Language 的簡(jiǎn)稱,是一種最廣泛應(yīng)用于語(yǔ)法分析和 World Wide Web 的編程語(yǔ)言。它起源于 awk、C、sh 和 sed 語(yǔ)言,然而,它的應(yīng)用開(kāi)發(fā)遠(yuǎn)比其他任何一種面向?qū)ο缶幊陶Z(yǔ)言更加容易。
實(shí)現(xiàn)方法:
N-US>public class PerlPortlet extends GenericPortlet 直接通過(guò)HttpServletResponseWrapper來(lái)封裝獲取Response的字節(jié)流
Portlet的配置的片斷
<portlet-name>perl-demo</portlet-name>
<display-name>Perl demo Portlet</display-name>
<portlet-class>org.apache.portals.bridges.perl.PerlPortlet
</portlet-class>
<expiration-cache>-1</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
</supports>
<portlet-info>
集成PHP應(yīng)用程序
PHP介紹:
PHP是一個(gè)基于服務(wù)端來(lái)創(chuàng)建動(dòng)態(tài)網(wǎng)站的腳本語(yǔ)言,您可以用PHP和HTML生成網(wǎng)站主頁(yè)。當(dāng)一個(gè)訪問(wèn)者打開(kāi)主頁(yè)時(shí),服務(wù)端便執(zhí)行PHP的命令并將執(zhí)行結(jié)果發(fā)送至訪問(wèn)者的瀏覽器中,這類似于ASP和CoildFusion,然而PHP和他們不同之處在于PHP開(kāi)放源碼和跨越平臺(tái),PHP可以運(yùn)行在WINDOWS NT和多種版本的UNIX上。它不需要任何預(yù)先處理而快速反饋結(jié)果,它也不需要mod_perl的調(diào)整來(lái)使您的服務(wù)器的內(nèi)存映象減小。PHP消耗的資源較少,當(dāng)PHP作為Apache Web服務(wù)器一部分時(shí),運(yùn)行代碼不需要調(diào)用外部二進(jìn)制程序,服務(wù)器不需要承擔(dān)任何額外的負(fù)擔(dān)。
public class PHPApplicationPortlet extends GenericPortlet