热门标签 | 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








推荐阅读
  • andr ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了如何使用Spring Boot进行高效开发,涵盖了配置、实例化容器以及核心注解的使用方法。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 深入解析三大范式与JDBC集成
    本文详细探讨了数据库设计中的三大范式,并结合Java数据库连接(JDBC)技术,讲解如何在实际开发中应用这些概念。通过实例和图表,帮助读者更好地理解范式理论及其在数据操作中的重要性。 ... [详细]
  • Java编程实践:深入理解方法重载
    本文介绍了Java中方法重载的概念及其应用。通过多个示例,详细讲解了如何在同一类中定义具有相同名称但不同参数列表的方法,以实现更灵活的功能调用。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
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社区 版权所有