当前位置: 首页 > article >正文

portlet的开发介绍

根据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 提供服务。


<?xml version="1.0" encoding="UTF-8"?>
<portlet-app>
<portlet>
   <portlet-name>SimplePortlet</portlet-name>
   <portlet-class>
    com.wiscom.newportal.app.wiscomSample.ArticlePortlet
   </portlet-class>

   <expiration-cache>-1</expiration-cache>

   <supports>
    <mime-type>text/html</mime-type>
    <portlet-mode>edit</portlet-mode>
    <portlet-mode>help</portlet-mode>
   </supports>
   <portlet-info>
    <title>SimplePortlet</title>
    <short-title>SimplePortlet</short-title>
    <keywords>SimplePortlet</keywords>
   </portlet-info>

   <portlet-preferences>
    <preference>
     <name>name1</name>
     <value>value1</value>
     <read-only>false</read-only>
    </preference>
   </portlet-preferences>
</portlet>
</portlet-app>

http://www.lryc.cn/news/2417349.html

相关文章:

  • Win7系统提示找不到LogonUI.exe文件的解决办法
  • Java解析XML文件--实现读取/导入、写入/导出功能
  • 资源网站mark
  • 手機 Cell ID 與定位
  • 社招网站推荐
  • 【入门】Java使用htmlutil进行数据爬取 {一篇文章让你了解爬虫技术栈}
  • OpenWrt开发必备软件模块——进程管理服务procd
  • 信号状态关_HINET工业智能网关三种联网模式操作说明
  • wpf中EventHandler的使用
  • 2023-05-31【05】Windows 10安装Oracle10g客户端
  • U盘文件系统FAT32、exFAT、NTFS之间有什么区别?
  • 解决 Linux 桌面问题思路分享
  • 自动化无人值守网络装机(PXE网络装机)
  • SERVER-U搭建
  • Android SDK下载安装及配置
  • [嵌入式系统-72]:ARM芯片选型基础
  • Windows Server 2008 R2安装IIS
  • 我的Delphi7里程碑(认识Delphi7的基本类型)
  • 2024年如何解决企业IM即时通讯的发展瓶颈?企业应如何选择适合自己的企业聊天软件?
  • Oracle优化器介绍(RBO/CBO)和用法
  • 对ArrayList集合中的元素进行排序
  • java 乱写4 异常常常常
  • (linux)中文显示乱码问题解决方法(编码查看及转换)
  • 电脑常识——host文件修改(屏蔽网站或解开屏蔽)
  • Java 8 的 Nashorn 脚本引擎教程
  • 串行通信接口详细描述
  • APUE学习之socket网络编程
  • [JavaScript]如何将www.xxx.com变为com.xxx.www
  • Serialization全解析
  • 手把手教你ubuntu下移植MJPG-streamer