国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Portal技術學習


“portlets是一種web組件-就像servlet開發(fā) s-是專為將合成頁面里的內容聚集在一起而設計的。通常請求一個portal頁面會引發(fā)多個portlets被調用。每個portlet都會生成標記段,并與別的portlets生成的標記段組合在一起嵌入開發(fā) 到portal頁面的標記內?!保ㄕ詐ortlet規(guī)范,js r 168)

本文探討了以下內容:
1.        portal頁面的元素
2.        portal是什么?
3.        portlets是什么?
4.        開發(fā)“hello world” portlet
5.        在pluto上部署helloworld portlet
6.        如何創(chuàng)建portal頁面
7.        結束語
8.        資源

  portlet規(guī)范將portlet定義為一種“基于java技術的web組件,由處理請求和生成動態(tài)內容的portlet容器管理”。這段話聽起來是不是有些費解?本文將說明portlets是什么以及能用它們做什么。


圖1顯示了在訪問一個portal服務器開發(fā)時瀏覽器中頁面的樣子。


圖1 典型的portal服務器開發(fā)的頁面(點擊查看原圖)

  如果仔細查看瀏覽器里的頁面,就會看到頁面是由不同的“窗口”組成的。一個窗口用于刷新天氣,另一個用于新聞,還有一個用于刷新股價,等等。這里的每一個窗口都代表了一個portlets。如果看得再仔細些,還會發(fā)現每個窗口都有一個標題條和一些按鈕,包括最小化和最大化按鈕。

  在系統(tǒng)開發(fā)里,這些窗口是相互獨立開發(fā)、各不同的應用開發(fā)。新聞portlet的開發(fā)者創(chuàng)建應用開發(fā)并打包成war格式的文件,隨后portal服務器開發(fā)的管理員在服務器開發(fā)上部署該war文件并創(chuàng)建頁面,接下來每個用戶會選擇在他的頁面里有哪些應用開發(fā)。例如,如果用戶對股價不感興趣而對體育感興趣,他可以用“體育”窗口替換“股價”窗口。

  portlet技術需要學習許多新概念,本文不可能全都涵蓋,因此本文分為兩部分。在第一部分里我們詳細說明portals和portlets,并開發(fā)一個簡單的“hello world”portlet;在第二部分我們將探討一些高級主題。

  我們將用apache的pluto服務器開發(fā)(portlet api 1.0規(guī)范的參考實現)來測試我們的示例portlets,我們還會花些時間探討如何安裝和使用pluto服務器開發(fā)。

portal頁面的元素

圖2顯示了portal頁面的各種元素。


圖2 portal頁面的元素

  每個portlet頁面由一個或多個portlet窗口組成,每個portlet窗口又分為兩部分:一個是外觀,它決定了portlet窗口的標題條、控制和邊界的樣式;另一個是portlet段,它由portlet應用開發(fā)填充。

  portal服務器開發(fā)決定了portal頁面的整體觀感,像標識、標題條顏色、控制圖標等。通過修改幾個js p和css模板文件就可以改變portal的整個觀感。我們將在“如何創(chuàng)建portal頁面”部分對此做深入討論。

portal是什么?

  在了解portlet之前有必要先了解portal。在portlet規(guī)范里是這樣講的:“portal是一種web應用開發(fā),通常用來提供個性化、單次登錄、聚集各個信息源的內容,并作為信息系統(tǒng)開發(fā)表現層的宿主。聚

此文來自: 馬開東博客 轉載請注明出處 網址: http://www.makaidong.com

集是指將來自各個信息源的內容集成到一個web頁面里的活動”。

  portal的功能可以分為三個主要方面:
1.        portlet容器:portlet容器與servlet開發(fā) 容器非常類似,所有的portlet都部署在portlet容器里,portlet容器控制portlet的生命周期并為其提供必要的資源和環(huán)境信息。portlet容器負責初始化和銷毀portlets,向portlets傳送用戶請求并合成響應。
2.        內容聚集:portlet規(guī)范中規(guī)定portal的主要工作之一是聚集由各種portlet應用開發(fā)生成的內容,我們將在“如何創(chuàng)建portal頁面”部分對此做進一步討論。
3.        公共服務:portlet服務器開發(fā)的一個強項是它所提供的一套公共服務。這些服務并不是portlet規(guī)范所要求的,但portal的商業(yè)實現版本提供了豐富的公共服務以有別于它們的競爭者。在大部分實現中都有望找到的幾個公共服務有:
         o 單次登錄:只需登錄portal服務器開發(fā)一次就可以訪問所有其它的應用開發(fā),這意味著你無需再分別登錄每一個應用開發(fā)。例如一旦我登錄了我的intranet網站,我就能訪問mail應用開發(fā)、im消息應用開發(fā)和其它的intranet應用開發(fā),不必再分別登錄這些應用開發(fā)。
  portal服務器開發(fā)會為你分配一個通行證庫。你只需要在mail應用開發(fā)里設定一次用戶名和密碼,這些信息將以加密的方式存儲在通行證庫中。在你已登錄到intranet網站并要訪問mail應用開發(fā)的時候,portal服務器開發(fā)會從通行證庫中讀取你的通行證替你登錄

此文來自: 馬開東博客 轉載請注明出處 網址: http://www.makaidong.com

到mail服務器開發(fā)上。你對其它應用開發(fā)的訪問也將照此處理。
          o個性化:個性化服務的基本實現使用戶能從兩方面?zhèn)€性化她的頁面:第一,用戶可以根據她的自身喜好決定標題條的顏色和控制圖標。第二,用戶可以決定在她的頁面上有哪些portlets。例如,如果我是個體育迷,我可能會用一個能提供我鐘愛球隊最新信息的portlet來取代股票和新聞portlets。
        一些在個性化服務方面領先的商業(yè)實現版本允許你建立為用戶顯示什么樣的應用開發(fā)所依據的標準(如收入和興趣)。在這種情況下,可以設定一些像“對任何收入為x的用戶顯示饋贈商品的portlet”和“對任何收入為x的用戶顯示打折商品的portlet”這樣的商業(yè)規(guī)則。

        此外還有一些公共服務,比如機器翻譯,是由portal服務器開發(fā)將portlet生成的內容翻譯為用戶要求的語言。大部分的商業(yè)portal服務器開發(fā)都支持手持設備訪問并具有針對不同的瀏覽終端生成不同內容的能力。

portlets是什么?

  與servlet開發(fā) s類似,portlets是部署在容器內用來生成動態(tài)內容的web組件。從技術角度講portlet是一個實現了javax.portlet.portlet接口的類,它被打包成war文件格式部署到portlet容器里。

  portlets在以下方面與servlet開發(fā) s相似:
1.        portlets由特定的容器管理。
2.        portlets生成動態(tài)內容。
3.        portlet的生命周期由容器管理。
4.        portlets通過請求/響應模式與web客戶端交互。

  portlets在以下方面與servlet開發(fā) s相異:
1.        portlets只能生成標記段,而不是整個文檔。
2.        portlets沒有可供直接訪問的url地址。不過你還是能夠讓別人通過url訪問到portlet,你可以把包含該portlet的頁面的url發(fā)給他。
3.        portlets不能隨意地生成內容,這是因為portlet生成的內容最終要成為portal頁面的一部分。如果portal服務器開發(fā)要求的是html/text類型,那么所有的portlets都應生成html/text類型的內容。再比方說,如果portal服務器開發(fā)要求的是wml類型,那么所有的portlets都應生成wml類型的內容。

  portlets還提供了一些附加的功能:
1.        設置參數的持久化存儲:portlets提供了一個portletpreferences對象用來保存用戶的設置參數。這些參數被存入一個持久化其他數據庫 ,這樣服務器開發(fā)重啟后數據依然有效。開發(fā)者不必關心這些數據存儲的具體實現機制。
2.        請求處理:portlets提供了更為細粒度的請求處理。對于用戶在portlet上動作時向該portlet發(fā)出的請求(一種稱為活躍期的狀態(tài)),或者因用戶在其它portlet上動作而引發(fā)的刷新頁面請求,portal服務器開發(fā)提供了兩種不同的回調開發(fā)方法 來處理。
3.        portlet模式:portlets用模式的概念來表示用戶在做什么。在使用mail應用開發(fā)的時候,你可能會用它來讀信、寫信或檢查信件――這些都是mail應用開發(fā)的預定功能,portlets通常以view模式提供這些功能。但還有一些活動,像指定刷新時間或(重新)設置用戶名和密碼,這些活動允許用戶定制應用開發(fā)的行為,因此它們用的是edit模式。mail應用開發(fā)的幫助功能用的是help模式。

  如果仔細想想其實這里面并沒有什么新東西,它們反而大部分都是普通的業(yè)務需求。portlet規(guī)范的作用在于它提供了一個抽象層,這才是它對所有與之相關的人-最終用戶、開發(fā)者和管理員-的價值所在。

  作為一個開發(fā)者,我會將所有與view模式有關的業(yè)務邏輯放入doview()開發(fā)方法 ,將與應用開發(fā)配置有關的業(yè)務邏輯放入doedit()開發(fā)方法 ,將與幫助有關的邏輯放入dohelp()開發(fā)方法

  這就簡化了管理員對portlet應用開發(fā)的訪問控制管理,因為他只需改變portlet的訪問權限就能決定用戶能做什么。例如,如果mail應用開發(fā)的一個用戶能夠在edit模式下設定用戶名和密碼,那么就可以斷定他具有edit模式訪問權限。

  不妨考慮這樣一種情形:我是一個intranet網站的管理員,我的公司買了一個能顯示新聞信息的第三方portlet應用開發(fā),該應用開發(fā)允許用戶指定跟蹤新聞更新的url地

此文來自: 馬開東博客 轉載請注明出處 網址: http://www.makaidong.com

址,我想借助它為用戶顯示公司的內部新聞。另一個需求是我不想讓用戶通過該應用開發(fā)來跟蹤任何其它的新聞信息來源。作為管理員,我可以為所有的用戶指定一個用于內部新聞更新的url地址,同時通過改變portlet應用開發(fā)的部署描述符來取消其它人修改該地址的權限。

  由于所有的portlet應用開發(fā)都具有相似的ui界面,因此采用portlets可使網站對最終用戶更具吸引力。如果她想閱讀任何一個應用開發(fā)的幫助信息,她可以點擊幫助按鈕;她也知道點擊編輯按鈕能讓她進入應用開發(fā)的配置屏。標準化的用戶界面使你的portlet應用開發(fā)更引人。

4.        窗口狀態(tài):窗口狀態(tài)決定了portal頁面上留給portlet生成內容的空間。如果點擊最大化按鈕,portlet將占據整個屏幕,成為用戶唯一可用的portlet;而在最小化狀態(tài),portlet只顯示為標題條。作為開發(fā)者應當根據可用空間的大小來定做內容。

5.        用戶信息:通常portlets向發(fā)出請求的用戶提供個性化的內容,為了能更加行之有效,portlets需要訪問用戶的屬性信息,如姓名、email、電話等。portlet api為此提供了用戶屬性的概念,開發(fā)者能夠用標準的方式訪問這些屬性,并由管理員負責在這些屬性與真實的用戶信息其他數據庫 (通常是ldap服務器開發(fā))之間建立映射關系。

  我們將在本文的第二部分深入討論這些特點-請求處理、用戶信息和portlet模式。

開發(fā)"hello world" portlet

  現在我們就來開發(fā)一個簡單的helloworld portlet。
1.        創(chuàng)建一個名為helloworld的web項目,它與通常的servlet開發(fā) 項目類似,有一個/web-inf/web.xml文件作為項目的部署描述符。

2.        在build path里加入portlet-api-1.0.jar文件,該jar文件是pluto發(fā)行包的一部分。

3.        在source文件夾中按如下內容創(chuàng)建helloworld.java文件:

public class helloworld extends genericportlet{  protected void doview(renderrequest request,  renderresponse response) throws  portletexception, ioexception {        response.setcontenttype("text/html");        response.getwriter().println("hello portlet");        }}

  每個portlet都要實現portlet接口,該接口為portlet定義了生命周期開發(fā)方法 。由于不想覆蓋所有這些開發(fā)方法 ,我們只對genericportlet類進行擴展,它是一個實現了portlet接口的適配器類。genericportlet類提供了所有生命周期開發(fā)方法 的默認實現,所以我們只需實現我們所需要的開發(fā)方法

  我們在 helloworld portlet里要做的只是顯示“hello portlet”,所以我們將覆蓋genericportlet類的doview()開發(fā)方法 ,該開發(fā)方法 以portletrequest 和 portletresponse作為參數。在doview()開發(fā)方法 中首先調用response.setcontenttype()以通知portlet容器該portlet將要生成何種類型的內容-如果不這樣做就會導致illegalstateexception異常。一旦設置了內容的類型,就可以從response對象中獲得printwriter并開始寫入。

4.        每個portlet應用開發(fā)在/web-inf文件夾中都有一個portlet.xml文件,它是portlet應用開發(fā)的部署描述符。按以下內容創(chuàng)建portlet.xml文件:

<portlet>  <description>helloworlddescription        </description>    <portlet-name>helloworld        </portlet-name>    <display-name>hello world        </display-name>    <portlet-class>com.test.helloworld        </portlet-class>    <expiration-cache>-1        </expiration-cache>        <supports>          <mime-type>text/html</mime-type>      <portlet-mode>view          </portlet-mode>        </supports>    <supported-locale>en        </supported-locale>        <portlet-info>          <title>hello world</title>          <short-title>hello world          </short-title>          <keyword s>hello,pluto</keyword s>      </portlet-info></portlet>

  <portlet-name>元素聲明了portlet的名字,<portlet-class>元素指定了portlet的全限定類名,<expiration-cache>元素以秒為單位指定了內容超期的時間。這里面有一點需要注意:你在portlet上的某些動作可能會導致內容刷新,這與緩存時間無關。
  <supports>元素指定對于給定的<mime-type>有哪些模式可供支持。在示例中我們假定helloworld只能生成text/html類型的內容,且只有view模式可支持該內容類型。如果要增加對其它內容類型的支持,需要添加新的<support>元素并指定支持該mime類型的模式有哪些。通常portlet對于text/html類型有view、edit和help模式可供支持,而對于wml mime類型則只有view模式。
  還可以用<supported-locale>元素來指定portlet支持哪些本地化。<title>元素用來指定portlet的標題。如果要對標題做國際化處理,可以用元素<resource-bundle>指定資源(比例properties文件)的文件名。在這種情況下,容器將根據用戶所在的地區(qū)從適當的properties文件中選擇標題。

5.        每個portlet應用開發(fā)都是一個web應用開發(fā),因此除了portlet.xml文件之外還需要有web.xml文件。

<web-app>  <display-name>hello world portlet  </display-name>  <welcome-file-list    <welcome-file>index.js p        </welcome-file>  </welcome-file-list></web-app>

6.        接下來將這些文件進行編譯并打包為war文件。你可以自己完成這些工作,或者下載帶有build.xml 的示例代碼(參見“資源”部分)來創(chuàng)建war文件。
在pluto上部署helloworld portlet

  pluto尚處于開發(fā)階段的早期,因此還沒有一套易于使用的管理開發(fā)工具。為了能使用pluto服務器開發(fā),需要將編譯和源代碼兩個版本都下載。需要注意的是以下說明是針對windows平臺的,unix用戶通過修改斜杠符號和執(zhí)行sh shell腳本(不是bat批命令文件)會得到類似的結果。

1.        創(chuàng)建一個文件夾,比如c:\plutoinstallation。
2.        從pluto的網站下載pluto-1.0.1-rc1.zip和pluto-src-1.0.1-rc1.zip。
3.        將pluto-1.0.1-rc1.zip解壓到c:\plutoinstallation.文件夾,它應被解壓到c:\plutoinstallation\pluto-1.0.1-rc1文件夾下。
4.        執(zhí)行c:\plutoinstallation\pluto-1.0.1-rc1\bin\startup.bat啟動pluto,現在可以通過地址http://localhost:8080/pluto/portal訪問pluto服務器開發(fā)。
5.        將pluto-src-1.0.1-rc1.zip解壓到c:\plutoinstallation\plutosrc文件夾。
6.        進入c:\plutoinstallation\plutosrc文件夾,執(zhí)行maven distribute:all.,編譯并下載運行常規(guī)管理任務所必需的相關資源文件?,F在可以將helloworldportlet.war作為portlet進行安裝了。
7.        首先將helloworldportlet.war文件拷貝到c:\plutoinstallation\portlets目錄,如果沒這個目錄就創(chuàng)建它。
8.        將c:\plutoinstallation\plutosrc\build.properties.sample更名為build.properties。
9.        編輯build.properties,將maven.tomcat.home指向pluto編譯版的安裝位置,在本例中應改為maven.tomcat.home=c:/plutoinstallation/pluto-1.0.1-rc1。
10.        為了安裝portlet,進入c:\plutoinstallation\plutosrc\deploy文件夾,執(zhí)行maven deploy -ddeploy=c:\plutoinstallation\portlets\helloworldportlet.war,應能看到“build successful”信息。
11.        在c:\plutoinstallation\pluto-1.0.1-rc1\webapps文件夾下,應該有一個helloworldportlet文件夾。
12.        現在進入c:\plutoinstallation\pluto-1.0.1-rc1\webapps\helloworld\web-inf\ folder文件夾,打開portlet的web.xml文件,你會發(fā)現里面自動多了幾行,如下所示:

<servlet開發(fā) >  <servlet開發(fā) -name>helloworld</servlet開發(fā) -name>     <display-name>helloworld wrapper</display-name>      <description>automated generated      portlet wrapper</description>      <servlet開發(fā) -class>org.apache.pluto.core.portletservlet開發(fā)       </servlet開發(fā) -class>      <init-param>         <param-name>portlet-class</param-name>         <param-value>com.test.helloworld         </param-value>      </init-param>      <init-param>         <param-name>portlet-guid</param-name>         <param-value>hellopluto.helloworld         </param-value>      </init-param></servlet開發(fā) >
13.        接下來我們將該portlet加到頁面里。進入c:\plutoinstallation\pluto-1.0.1-rc1\webapps\pluto\web-inf\data文件夾,可以看到有兩個xml文件:pageregis地理信息系統(tǒng) try.xml和portletentityregis地理信息系統(tǒng) try.xml。
14.        portletentityregis地理信息系統(tǒng) try.xml包含了portlet的定義,在該文件中加入以下幾行:

 <application id="5">   <definition-id>helloworld</definition-id>     <portlet id="1">       <definition-id>helloworld.helloworld</definition-id>     </portlet></application>
  應用開發(fā)的<definition-id>應為web應用開發(fā)所在文件夾的名字,portlet的<definition-id>應與web.xml中生成的portlet-guid相一致。
15.        pageregis地理信息系統(tǒng) try.xml定義了頁面中包含了哪些portlets,對該文件做如下改動:

  <fragment name="p2" type="portlet">    <property name="portlet" value="5.1"/></fragment>
16.        執(zhí)行shutdown命令和startup命令重啟pluto服務器開發(fā),返回到地址http://localhost:8080/pluto/portal并點擊“test link”-此時頁面中將出現我們的

helloworld portlet。

圖3的右側顯示了helloworld portlet看上去的樣子。


圖3 portlet的屏幕截圖

如何創(chuàng)建portal頁面

圖4顯示了portal容器如何將分離的portlets組裝為頁面。


圖4 創(chuàng)建portal頁面

  大部分的portal服務器開發(fā)基本上都是部署于應用開發(fā)服務器開發(fā)上的web應用開發(fā),通過servlet開發(fā) 來處理訪問portal服務器開發(fā)的請求。查看一下pluto的安裝目錄就會發(fā)現pluto不過是一個部署于tomcat服務器開發(fā)上的一個普通web應用開發(fā),再看看c:\plutoinstallation\pluto-1.0.1-rc1\webapps\pluto\web-inf\web.xml會發(fā)現所有發(fā)往pluto服務器開發(fā)的請求都被映射到org.apache.pluto.portalimpl.servlet開發(fā) 上。

  在本文開始部分“portal頁面的元素”中,我們提到portal頁面由兩部分組成。一部分是由頁面中的portlets生成的內容,另一部分是由portal服務器開發(fā)生成的內容。

  在pluto里,只要用戶發(fā)出請求,就會由servlet開發(fā) 進行控制,根據用戶所請求的頁面來確定需要顯示的portlets的列表。一旦生成了列表,servlet開發(fā) 就將控制轉給這些portlets線程并收集由它們生成的內容。

  對于由portal服務器開發(fā)生成的內容(像portal網站的觀感及每個portlet的外觀和控制之類)則取決于c:\plutoinstallation\pluto-1.0.1-rc1\webapps\pluto\web-inf\aggregation文件夾下的js p文件。rootfragment.js p是主js p文件,它決定了整體的觀感和對齊方式;它還包含了heads以定義在生成的頁面中的<head>標簽里的內容。tabnavigation.js p用來選擇在banner中該顯示什么(默認情況下在banner顯示列表中也包擴了pluto.png圖片)。tabnavigation.js p用來確定portal網站的導航方案。這意味著只需改動該文件夾下少量的幾個js p文件,就能改變整個portal網站的觀感。

  pluto根據pageregis地理信息系統(tǒng) try.xml中的設置確定頁面中有多少行,并用rowfragment.js p去填充。columnfragment.js p用來填充每個欄目。portletfragmentheader.js p用來填充每個portlet的頁頭,像標題條及最大化和最小化控制。footer.js p用來填充js p

搜索此文相關文章:Portal技術學習此文鏈接:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%89%9B/17154.shtml轉載請注明出處:Portal技術學習 - 博客園


感謝你的支持,我會

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
什么是Portlet ?
hello world: websphere portal v5 最簡單的 portlet:第 1 部分,創(chuàng)建和部署
基于 Struts 2 構建 WebSphere Portal 上的 Portlet 應用
有話好好說: 幾種開源Portal的簡單介紹分析
Pluto Portlet容器的體系結構
Java開源Portal門戶類別列表
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服