lbom

          小江西

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            18 隨筆 :: 21 文章 :: 69 評論 :: 0 Trackbacks
          ?Portlet開發(fā)基知識

          1.portlet.xml文件,放置在WEB_INF/portlet.xml下面。典型的例子:

          <portlet>
          <description>Description goes here</description>
          <portlet-name>first</portlet-name>
          <portlet-class>com.malani.examples.portlets.jsr168.FirstPortlet
          </portlet-class>
          <portlet-info>
          <title>First</title>
          </portlet-info>
          </portlet>

          portlet-class就是實現(xiàn)的類。可以和web.xml對照比較一下。

          2.實現(xiàn)的Portlet類。和傳統(tǒng)的servlet一樣,portal容器來管理protlet的生命周期。它必須實現(xiàn)javax.portlet.Portlet接口。但是jsr168標準提供了一個方便類:GenericPortlet你可以直接
          繼承它就ok了。

          1)生命周期,同servlet一樣Portlet必須有自己生命周期。這定義在javax.portlet.Portlet接口中。它的方法是:init(),render(),processAction(),destroy().但創(chuàng)建portlet實例的時候調(diào)用init()方法。它完成一些需要花費昂貴的資源的動作。但實例被銷毀的時候,容器調(diào)用destroy方法來釋放這些資源。

          Portlet規(guī)范清晰的區(qū)分了render請求和action請求的區(qū)別。renderRequest()會調(diào)用該portlet上的render()方法,actionRequst()會調(diào)用processAction()方法.要注意的是一次用戶完整的請求將是:portal頁面上的所有的protlet的 render()調(diào)用,該請求protlet的processAction()調(diào)用。具體看圖:

          3.Portlet模式

          VIEW模式是你必須實現(xiàn)的,EDIT,HELP模式是可選的。你可以通過修改doEdit()和doHelp()
          方法來實現(xiàn)這些模式。另外還需要在portlet.xml配置模式:

          <supports>
          <mime-type>text/html</mime-type>
          <portlet-mode>edit</portlet-mode>
          <portlet-mode>help</portlet-mode>
          </supports>

          修改本文件但沒有實現(xiàn)該模式容器會拋出 javax.portlet.PortletException異常.

          實現(xiàn)window狀態(tài),注意JSR 168并沒有對這個進行規(guī)定,但webLogic 完成了:

          <portlet>
          <portlet-name>state</portlet-name>
          <supports>
          <mime-type>text/html</mime-type>
          <excluded-window-state>minimized</excluded-window-state>
          <excluded-window-state>maximized</excluded-window-state>
          </supports>
          </portlet>

          包含JSP文件:

          上面的例子中我們在doView方法中通過方法得到Writer實例,這樣可以輸出HTML片斷。但是,
          我們并不推薦您這樣做。我們推薦您使用JSP來達到視圖-java的分離。為了包含一個特定的jsp
          首先你必須得到PortletContext.在PortletContext中,通過調(diào)用getRequestDispatcher()方法
          得到PorletRequestDispatcher,通過它的includer()方法來包含JSp例如;
          // execute the necessary logic here...
          PortletRequestDispatcher aDispatcher =
          getPortletContext().getRequestDispatcher(
          "/IncludePortlet/includeView.jsp"
          );
          aDispatcher.include(aRequest, aResponse);

          處理動作

          在標準的web應用程序中,提交表單,或者一個動作url常見的。JSR168規(guī)范中定義了portlet taglib
          來幫助我們完成這些工作:

          <form action="<portlet:actionURL/>" method="post">
          ...
          </form>

          提交的話會自動調(diào)用該portlet的processAction(ActionRequest aRequest, ActionResponse aResponse)方法,這就跟你傳統(tǒng)方式一樣了reqeust的getParameter()或者是getAttribute()來
          得到傳來的參數(shù)。

          processAction()方法設置response對象中的值。不要使用ActionRequest或ActionResponse對象的setAttribute()方法。值不會從processAction()傳遞到render()方法,而且在JSP中是不可用的。相反要使用ActionResponse對象的setRenderParameter()方法。這些render參數(shù)將對所有后續(xù)render請求可用,這一點與典型的Web應用程序請求屬性很不相同。典型的Web application請求屬性只對于一個請求可用。另一方面,render請求參數(shù)對于許多后續(xù)render請求可用。render參數(shù)保持可用直到值被動作的重新執(zhí)行顯式地修改或刪除。

          所呈現(xiàn)的參數(shù)是怎樣顯示在JSP上的呢?應使用來自portlet標簽庫的defineObjects標簽來定義portlet對象。該標簽使renderRequest、renderResponse和portletConfig portlet對象在頁面中可用。參數(shù)通過調(diào)用renderRequest對象的getParameter()方法來顯示。請參考與所包含的源代碼示例中的favoriteColorView.jsp。

            portlet FavoriteColor也展示了其他概念。第一個是如何在processAction()方法中用編程的方法改變portlet模式。調(diào)用ActionResponse對象的setPortletMode()方法來修改portlet模式。第二個概念是如何使用一個HTML鏈接來修改portlet模式。該鏈接使用來自portlet標簽庫的renderURL標簽生成。根據(jù)希望的portlet模式指定portletMode屬性的值。請參考源代碼示例中的FavoriteColorPortlet類和favoriteColorView.jsp頁面。

          posted on 2006-04-12 14:07 lbom 閱讀(644) 評論(0)  編輯  收藏 所屬分類: 網(wǎng)絡資料
          主站蜘蛛池模板: 青川县| 班玛县| 云阳县| 出国| 泸定县| 沂南县| 锡林浩特市| 翁牛特旗| 原阳县| 宝兴县| 维西| 永仁县| 门头沟区| 湟中县| 海口市| 利津县| 乐平市| 桦甸市| 晋中市| 横山县| 罗源县| 景泰县| 北流市| 汤阴县| 大姚县| 廊坊市| 渝北区| 拉孜县| 文化| 手游| 隆尧县| 泰宁县| 响水县| 万盛区| 武穴市| 东源县| 新野县| 礼泉县| 越西县| 云霄县| 通州区|