热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

portlet的开发介绍

portlet的开发介绍2010年11月04日星期四23:03根据Portlet1.0的标准,编写Portlet可以通过实现javax.portlet.Portlet
portlet的开发介绍
2010年11月04日 星期四 23:03

根据Portlet1.0的标准,编写Portlet可以通过实现javax.portlet.Portlet接口和继javax.portlet.GenericPortlet抽象类。下面具体介绍这两种方式


第一种:实现Portlet接口方式


Javax.portlet.Portlet接口有四个方法,分别是:init,processAction,render和destroy。四个函数的描述
init() 当Portlet容器初始化该Portlet的时候调用该函数,一个Portlet在Portlet容器中只有一个实例,并且这个实例由多个用户共享,其方式与一个servlet在应用服务器中由多个用户共享的方式一样。
destroy() 当Portal终止时,portlet结束服务,然后用destroy()方法来销毁,最后portlet由垃圾收集工具收集并结束。
processAction() 当页面请求是一个Action请求的时候调用该函数。
render() 当Portlet被调用显示页面的时候执行该函数。


下面的例子显示了一个基本的实现了javax.portlet.Portlet的portlet。它只是在一个portlet窗口中显示一行语句:”Hello,world!”
package demo;
import java.io.IOException;
import java.io.PrintWriter;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.Portlet;
import javax.portlet.PortletConfig;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.UnavailableException;
public class HelloWorldPortlet implements Portlet {
public HelloWorldPortlet() {
super();
}
public void init(PortletConfig config) throws UnavailableException {
}
public void destroy() {
}
public void render(RenderRequest request, RenderResponse response)
throws PortletException, IOException {
PrintWriter writer = response.getWriter();
writer.print("hello,world!");

}
public void processAction(ActionRequest request, ActionResponse response)
throws PortletException, IOException {
}
}

第二种,继承GenericPortlet抽象类方式。


javax.portlet.GenericPortlet抽象类除了init、processAction、render、destroy四个方法外,再扩展了三个方法:doView、doEdit、doHelp,简化了Portlet的书写,三个方法的描述:
doView() 当Portlet是VIEW模式的时候,Portlet容器将调用该函数处理页面显示。
doEdit() 当Portlet是EDIT模式的时候,Portlet容器将调用该函数处理页面显示。
doHelp() 当Portlet是HELP模式的时候,Portlet容器将调用该函数处理页面

实例:
package demo;
impor javax.portlet.*;
import java.io.*;
import java.util. *
public class JSPPortlet extends GenericPortlet {
private PortletContext pContext;
public void init(PortletConfig config) throws PortletException {
super.init(config);
pContext = config.getPortletContext();
}
public void doView(RenderRequest request,RenderResponse response)
throws PortletException,IOException {
PrintWriter writer = response.getWriter();
writer.print("view mode!");
}
public void doEdit(RenderRequest request,RenderResponse response)
throws PortletException {
PrintWriter writer = response.getWriter();
writer.print("edit mode!");
}
public void doHelp(RenderRequest request,RenderResponse response)
throws PortletException {
PrintWriter writer = response.getWriter();
writer.print("help mode!");
}
public void processAction (ActionRequest request, ActionResponse actionResponse)
throws PortletException, java.io.IOException {
}
}

Porlet中模式、状态读取、设置


可以通过PortletRequest获得到Portlet的窗口状态和模式:
获取窗口状态:
WindowState state = request.getWindowState();
获取窗口模式:
PortletMode mode = request.getPortletMode();
窗口状态设置:直接通过actionRUL设置
PortletURL editURL = renderRequest.createRenderURL();
editURL.setPortletMode( PortletMode.EDIT );


每个Portlet对每个用户可以有不同的配置参数,Portlet1.0标准提供了相应的方法和对象,用于读取和设置用户的配置参数:
例:
PortletPreferences prefs = request.getPreferences();
String zip = prefs.getValue("zip","10000");
//获取名为’zip’的参数值,如果不存在,缺省值设为:’10000’。

portlet.xml

每个portlet应用在/WEB-INF文件夹中都有一个portlet.xml文件,它是portlet应用的部署描述符
包含portlet 应用程序的配置参数,以及所有portlet所提供的一般信息(如 portlet 支持的标记类型)。 Portal Server 使用该信息为 portlet 提供服务。





SimplePortlet

com.wiscom.newportal.app.wiscomSample.ArticlePortlet

-1


text/html
edit
help



SimplePortlet
SimplePortlet



name1
value1
false








推荐阅读
author-avatar
化工12卓越团支部CUP
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有