Portlet 开发指南
目录
Portlet 开发指南...............................................................................................................................1
第一章节入门介绍.........................................................................................................................7
一、 Portlet 简介...............................................................................................................8
什么是Portal ....................................................................................................................9
什么是Portlet...................................................................................................................9
什么是Portlet 容器..........................................................................................................9
三者关系.........................................................................................................................10
版本兼容性.....................................................................................................................10
JSR286 的主要新特性....................................................................................................10
与J2EE 的版本对应.......................................................................................................10
二、 Portlet 与servlet 的关系........................................................................................11
Portlet 与servlet/jsp 中的桥梁......................................................................................12
用servlet 生命周期事件................................................................................................12
Servlet 容器与Portlet 容器之间的关系........................................................................12
三、 开发环境搭建.........................................................................................................13
IBM WebSphere Portal 环境搭建...................................................................................13
Apache Pluto Portal 环境搭建........................................................................................24
快速入门.........................................................................................................................29
第二章节独有概念.......................................................................................................................36
四、 Portlet 概念.............................................................................................................37
Portlet 定义.....................................................................................................................37
Portlet 是Portal 页面中的一个区域.............................................................................37
Portlet 和Web 框架.......................................................................................................38
五、 Portlet URLs.............................................................................................................39
BaseURL 接口.................................................................................................................39
包含Portlet Mode 和Window State 信息...................................................................40
Portlet URL 安全性.........................................................................................................40
总结.................................................................................................................................40
六、 Portlet Modes..........................................................................................................42
查看 Portlet Mode.........................................................................................................42
编辑 Portlet Mode.........................................................................................................42
帮助 Portlet Mode.........................................................................................................42
自定义Portlet Modes ...................................................................................................42
受支持的 Portlet Modes................................................................................................43
七、 Window States ........................................................................................................44
正常Window State ........................................................................................................44
最大化Window State ....................................................................................................44
最小化Window State ....................................................................................................44
2
----------------------- Page 3-----------------------
Portlet 开发指南
自定义Window States ..................................................................................................44
支持的Window State ....................................................................................................44
八、 Portlet Preferences..................................................................................................45
PortletPreferences 接口................................................................................................45
Preference Attributes 范围............................................................................................45
Preference Attributes 定义............................................................................................46
第三章节基础概念.......................................................................................................................47
九、 Portlet 生命周期接口.............................................................................................48
Portlet 实例的数量........................................................................................................48
Portlet 生命周期.............................................................................................................48
Portlet 的个性化............................................................................................................49
Request 请求处理...........................................................................................................50
总结.................................................................................................................................54
十、 Portlet Config ..........................................................................................................55
初始化参数.....................................................................................................................55
Portlet Resource Bundle..................................................................................................55
默认事件命名空间.........................................................................................................56
公告展现参数.................................................................................................................56
发布事件.........................................................................................................................56
处理事件.........................................................................................................................56
支持的国际化.................................................................................................................56
支持的运行时选项.........................................................................................................56
总结.................................................................................................................................57
十一、 Portlet Context ................................................................................................58
Portlet Context 范围.......................................................................................................58
Portlet Context 功能......................................................................................................58
与Servlet Context 关系.................................................................................................58
总结.................................................................................................................................59
十二、 Portlet Requests ..............................................................................................60
PortletRequest 接口......................................................................................................60
ClientDataRequest 接口.................................................................................................64
ActionRequest 接口.......................................................................................................64
ResourceRequest 接口..................................................................................................64
EventRequest 接口........................................................................................................65
RenderRequest 接口......................................................................................................65
Request 对象的时间范围..............................................................................................65
总结.................................................................................................................................65
十三、 Portlet Response .............................................................................................66
PortletResponse 接口....................................................................................................66
StateAwareResponse 接口............................................................................................68
ActionResponse 接口.....................................................................................................68
EventResponse 接口......................................................................................................68
MimeResponse 接口......................................................................................................69
RenderResponse 接口...................................................................................................69
3
----------------------- Page 4-----------------------
Portlet 开发指南
ResourceResponse 接口................................................................................................70
Response 对象的时间范围...........................................................................................70
十四、 Sessions ...........................................................................................................71
创建Session....................................................................................................................71
Session 范围...................................................................................................................71
Session 中设置属性........................................................................................................71
与Web Application HttpSession 关系............................................................................71
写入Portlet Session........................................................................................................72
Session Timeouts.............................................................................................................73
最后访问时间.................................................................................................................73
重要的Session 语义.....................................................................................................73
总结.................................................................................................................................73
十五、 请求分发给Servlets 和JSPs .......................................................................74
获取 PortletRequestDispatcher.....................................................................................74
使用Dispatcher ..............................................................................................................74
Include 方法...................................................................................................................74
forward 方法..................................................................................................................75
Servlet filters ...................................................................................................................76
改变默认的Included Forwarded Session 范围............................................................76
总结.................................................................................................................................76
十六、 Portlet 标签库................................................................................................77
defineObjects 标签........................................................................................................77
actionURL 标签..............................................................................................................79
renderURL 标签.............................................................................................................79
resourceURL 标签...........................................................................................................80
namespace 标签.............................................................................................................81
param 标签.....................................................................................................................81
总结.................................................................................................................................81
十七、 Portlet 应用....................................................................................................82
与Web Applications 的关系..........................................................................................82
与PortletContext 的关系...............................................................................................82
Portlet Application 中的元素.........................................................................................82
目录结构.........................................................................................................................82
Portlet Application Classloader.......................................................................................82
Portlet Application 存档文件........................................................................................82
Portlet application 部署描述符.....................................................................................83
更新Portlet Application .................................................................................................83
十八、 打包和部署描述符.........................................................................................84
Portlet 和部署描述符.....................................................................................................84
打包.................................................................................................................................84
Portlet 部署描述符元素.................................................................................................84
处理Portlet 部署描述符规则.......................................................................................85
Portlet.xml 中唯一的值..................................................................................................85
第四章节 高级特性.......................................................................................................................86
4
----------------------- Page 5-----------------------
Portlet 开发指南
十九、 资源服务.........................................................................................................87
ResourceServingPortlet 接口.........................................................................................87
访问 Render 参数、 Portlet Mode、Window State.................................................88
访问Request 和 Response Headers.............................................................................88
获取 HTTP 方法............................................................................................................89
访问Resource ID ............................................................................................................89
Resource URLs.................................................................................................................89
Generic Portlet 支持......................................................................................................89
Ajax 请求.........................................................................................................................89
二十、 Portlet 协作.....................................................................................................91
Public Render Parameters...............................................................................................91
Portlet Events..................................................................................................................92
Events 传送复杂对象.....................................................................................................96
总结.................................................................................................................................96
二十一、 Portlet Filter ....................................................................................................98
什么是 Portlet filter.......................................................................................................98
主要概念.........................................................................................................................99
总结...............................................................................................................................101
第五章节可选概念.....................................................................................................................102
二十二、 缓存...............................................................................................................103
缓存过期.......................................................................................................................103
验证缓存.......................................................................................................................103
总结...............................................................................................................................104
二十三、 用户信息.......................................................................................................105
定义用户属性...............................................................................................................105
访问用户属性...............................................................................................................105
重要注意事项...............................................................................................................106
总结...............................................................................................................................106
二十四、 安全性...........................................................................................................107
介绍...............................................................................................................................107
角色...............................................................................................................................107
安全性代码开发...........................................................................................................107
总结...............................................................................................................................107
二十五、 Portal Context................................................................................................108
二十六、 Portlet 容器运行时......................................................................................109
动态修改Portlet 标题..................................................................................................109
二十七、 使用注释的方法...........................................................................................111
GenericPortlet Render Handling ...................................................................................111
二十八、 Setting next possible Portlet Modes .............................................................112
二十九、 Struts2 开发Portlet 实例.............................................................................113
三十、 Spring mvc 开发Portlet 实例.......................................................................114
三十一、 附录...............................................................................................................115
修改记录.......................................................................................................................115
名词解释.......................................................................................................................115
5
----------------------- Page 6-----------------------
Portlet 开发指南
疑问...............................................................................................................................116
6
----------------------- Page 7-----------------------
Portlet 开发指南
第一章节 入门介绍
入门介绍主要包括Portlet 开发中三个基本概念(Portlet、Portlet 容器、Portal)的介绍,
Portlet 与servlet 的关系,以及搭建开发环境,并进行部署。
7
----------------------- Page 8-----------------------
Portlet 开发指南
一、 Portlet 简介
Portlet 与servlet 一样,都是JSR 的规范api 定义,不同的Portlet 还比较“年轻”,目前
版本还只到2.0,而servlet 规范已经相当成熟,发布了多个版本。如果不是十分准确的说,
Portlet 只是另一种开发web 程序的api,从这个方面说,开发Portlet 并没有什么神秘的地方,
但是之所以有Portlet 这个规范,Portlet 适用的场景肯定与servlet 是不同的,比如开发Portlet
不但要与Portlet 容器打交道,还要与Portal 打交道。读者在学习Portlet 开发的过程中,可
以不时的用servlet 的概念与Portlet 相比较,比较两者的异同,可以达到事半功倍的效果。
刚才说到Portlet 规范已经出到2.0,分别是JSR168,JSR286。JSR 168 目前在业界受到广
泛支持,目前我们开发的大部分代码都是基于JSR168 的,JSR168 规范支持基本的开发方式,
虽然提供的功能比较少,但是已经基本可以满足日常需要。JSR168 发布三年之后,大多数
支持Java Portlet Specification V1。0 的门户产品都提供一些附加扩展,以支持更高级的用例,
这些附加的扩展造成了各个门户产品的标准不统一,彼此间的交互协作成了不可避免的问题。
为了更好地规范Portlet 开发,以适应业界发展,并提供适应于最高级别用例的标准解决方
案,从而为这些高级功能提供互操作性,在2005 年 11 月开始了Java Portlet Specification
V2.0 (称为JSR 286)的开发,在2008 年1 月Java Portlet Specification V2.0 目前已经正式发
布。JSR 286 规范兼容了JSR 168,并完善了JSR 168 的部分功能,并提供了诸多JSR 168 所
没有的新特性,例如资源服务、事件、Portlet 过滤器、共享呈现参数及 Portlet 窗口等。与
V1 。0 类似,V2.0 也将基于J2EE 1.4,因此可让Portlet 使用J2EE 1.4 增强(如JSP 2.0)。
下面是该新规范的一些主要功能及特性:
1. 资源服务:一种新的通过Portlet 呈现资源的方式。
2. 事件:通过发送事件和接收事件来实现 Portlet 之间的通信。
3. Portlet 过滤器:与 servlet 过滤器类似,根据 Portlet 请求和响应动态的呈现内容
的变换。存在以下四种类型的Portlet 过滤器:
o Action 过滤器
o Render 过滤器
o Resource 过滤器
o Event 过滤器
4. 共享呈现参数:除了 Portlet 私有的呈现参数之外,新增了可以在 Portlet 之间共享
的呈现参数。
5. Portlet 窗口:提供 Portlet 窗口 ID 供 Portlet 使用
要讲解Portlet,首先要明确三个概念:Portal、Portlet、Portlet 容器。Portlet 与Portlet
容器的关系可以比较servlet 与servlet 容器的关系,两者是完全一致的,开发者按照Portlet
规范开发Portlet,部署在中间件提供商(ibm、oracle、apache)提供的Portlet 容器中运行,
比较难理解的是Portal,首先Portal 是一个JEE 的application,Portal 负责提供页面给客户,
其次Portal 里面的内容是Portlet 生成出来的。一般的过程是,用户通过web 客户端向Portal
发起http 请求,Portal 解析这些请求,把请求“下发”给Portlet 容器,Portlet 容器来调用
Portlet,由Portlet 产生输出返回给Portlet 容器,Portlet 容器再把输出返回给Portal,Portal
负责把这些Portlet 的输出聚集起来,把内容返回给web 客户端。下面来具体描述一下Portal、
Portlet、Portlet 容器三个概念。
8
----------------------- Page 9-----------------------
Portlet 开发指南
什么是Portal
Portlet 规范中是这样定义Portal 的:
A Portal is a web based application that –commonly- provides personalization 、
authentication、content aggregation from different sources and hosts the presentation layer of
Information Systems。
Portal 是一个基于web 的提供个性化、登录授权、从不同的数据源聚集内容基于展现层
的信息系统。具体到J2EE 领域,Portal 大多数情况是一个符合J2EE 标准的ear 包工程。
什么是Portlet
规范中式这样定义Portlet 的:
A Portlet is an application that provides a specific piece of content (information or service) to
be included as part of a Portal page。It is managed by a Portlet container、that processes
requests and generates dynamic content
一个Portlet是一个基于java 技术的被Portlet容器管理的web 组建,它可以处理requests、
生成动态的内容输出,一个Portlet 负责提供Portal 页面中的某个