像 Servlet 一樣,編寫的 Portlet 也必須直接或者間接的擴展基類 GenericPortlet ,這個是由 JCP 針對 Portal 提出的 JSR168 規范定義的。只要擴展自規范的 GenericPortlet ,所有的 Portlet 都可以在支持 JSR168 規范的 Portal 服務器上運行。
GenericPortlet 統一定義了可供 Portal 容器識別和調用的方法,包括:
public Init() :初始化;
public Init(PortletConfig) :初始化;
public getInitParameter(String) :取得在 Portlet.xml 中定義的初始化參數;
public getInitParameterNames() :取得在 Portlet.xml 中定義的全部初始化參數;
public getPortletConfig() :取得包含初始化參數的配置對象 PortletConfig 實例;
public getPortletContext() :取得 Portlet 上下文;
public getPortletName() :取得在 Portlet.xml 中定義的 Portlet 名稱。
public getResourceBundle(Locale) :取得 Portlet 國際化的 Resource Bundle ;
protected getTitle(RenderRequest) :取得 Portlet 的標題;
protected doView(RenderRequest , RenderResponse) : Portlet 瀏覽模式的處理方法;
protected doEdit(RenderRequest , RenderResponse) : Portlet 編輯模式的處理方法;
protected doHelp(RenderRequest , RenderResponse) : Portlet 幫助模式的處理方法;
protected doDispatch(RenderRequest , RenderResponse) : Portlet 行為分發;
protected processAction(ActionRequest , ActionResponse) : Portlet 處理 Action Request 的方法;
protected render(RenderRequest , RenderResponse) : Portal 處理 Render Request 的方法;
public destroy() : Portlet 銷毀,終止其生命周期。
在 Portlet Portal 運行的時候, doView 、 doEdit 、 doHelp 三個方法分別被調用,用以生成 Portlet 標記。同樣也可以調用 Servlet 生成 Portlet 標記,或者不調用 JSP 或者 Servlet ,直接在方法中得到 PrintWriter 然后用最簡單的 pw.println() 打印出內容。這個過程類似 Servlet ,如下:
PrintWriter pw = renderResponse.getWriter();
pw.println(“Hello , world!”);
與 Servlet 類似,可以使用 getInitParamter(String s) 得到配置文件中 Portlet 的初始值,只不過 Servlet 在 web.xml 中,而 Portlet 在 portlet.xml 中。portlet.xml:
<init-param>
<value>
</init-param>
針對如上portlet.xml中的初始化信息,可以采用如下的調用方式:
SimplePortlet.java :
String jspName = getPortletConfig().getInitParameter("jspView");