`

《portal开发指南》第一章

 
阅读更多

一、 Portlet简介

Portlet与servlet一样,都是jcr的规范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 过滤器:
    • Action 过滤器
    • Render 过滤器
    • Resource 过滤器
    • 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容器三个概念。

什么是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 页面中的某个特定部位的展现内容。

与servlet同样,portlet的生命周期是被portlet容器来管理的。Portlet生成的内容也可以称作fragment,这些多个portlet生成的多个fragment会被portal聚集(aggregate)在一起展现。不同用户看到的portlet可能不同,这依赖于不同用户对使用portlet的配置。

什么是portlet容器

规范中式这样定义portlet容器的

A portlet container runs portlets and provides them with the required runtime environment. A portlet container contains portlets and manages their lifecycle. It also provides persistent storage for portlet preferences. A portlet container receives requests from the portal to execute requests on the portlets hosted by it.

 

Portlet容器提供portlet生命周期环境,管理portlet的生命周期,还提供portlet preferences的持久化支持,portlet从portal接受请求,然后分发给运行其上的portlet。

Portlet不负责聚集portlet生成的内容,这是portal责任。根据中间件厂商的实现方式portlet容器与portal可以放在一个application中实现,也可以放在两个不同的application中实现。

三者关系

下面是以一个用户使用web客户端来与portal交互的用力,描述portlet、portlet容器、portal三者关系、责任:

1. web客户端通过http 来对portal发起request请求

2. request请求被portal就收到

3. portal分析这个请求是否需要与portlet进行交互

4. 如果需要,则portal通知portlet容器调用portlet处理交互

5. Portal通过portlet容器得到portlet返回的fragments

6. Portal聚集portlet产生的fragments,生成最终的页面,返回给web客户端

版本兼容性

Jsr286规范是向后兼容的,所以所有基于jsr168写的代码生成的war都可以在jsr286容器里面运行。不过下面罗列出一些特例,这些特例会在具体章节说明。

1. RenderResponse.setContentType已经不再需要在getWriter 或者getOutputstream之前调用了,已经不会产生IllegalStateException

2. 对于在portlet工程中嵌入servlet、jsp调用getProtocol,jsr168中返回时null,jsr286中返回时HTTP/1.1

JSR286的主要新特性

Jsr286对Jsr168是向后兼容的,jsr286主要增加了如下新特性:

Ø 事件Events,可以是portlet可以接受、发送事件

Ø 公共展现参数public render parameters,容许portlet之间共享参数

Ø 资源服务 resource serving ,提供portlet服务资源的能力

Ø Portlet 拦截器 portlet filter,容许在portlet的request、response之间建立拦截器

与J2EE的版本对应

J2EE

servlet

jsp

JSR168

1.3

2.3

1.2

JSR286

1.4

2.4

2.0

分享到:
评论

相关推荐

    liferay+Portal+二次开发指南

    ### Liferay Portal 二次开发指南 #### 一、Liferay Portal 概览 **Liferay Portal** 是一款开源的企业级门户平台,它基于Java技术构建,支持多种标准,包括JSR 168和WSRP等。Liferay Portal 提供了一个高度可定制...

    liferay 6.0 开发指南

    ### Liferay 6.0 开发指南核心知识点详解 #### 一、引言与核心技术 在《Liferay 6.0 开发指南》中,首先介绍了Liferay 6.0的核心技术及其开发策略。Liferay是一款强大的开源门户平台,支持企业级应用的构建与部署...

    websphere portal

    #### 第一部分 开发公共信息相关的PORTLET - **开发要求**:明确开发需求。 - **总体设计**:概述整体设计方案。 #### 第二部分 开发一个工具箱PORTLET - **设计**:设计工具箱PORTLET的布局和功能。 - **实现**...

    WebSphere Portal Self Study Express

    - **第一章:简介**:介绍WebSphere Portal V6的基本概念及其重要性。 - **第二章:架构与规划**:探讨如何构建一个高效的门户架构,包括功能性需求分析、集成策略和技术选型等内容。 - 后续章节将深入讲解具体的...

    JBoss Portal Server Development

    这一章强调,通过消除这些功能的开发工作,门户开发者现在可以把时间和精力集中在开发业务功能上。 第2章详细介绍了JBoss Portal Server的安装过程。这部分内容将引导读者逐步完成JBoss Portal Server的下载、配置...

    iOS_Cookbook_第一章_基础入门_2012_05_02.pdf

    综上所述,《iOS Programming Cookbook》第一章的内容覆盖了iOS开发的基础知识,从创建第一个项目到发布应用程序,再到掌握Objective-C的基本语法,都是初学者不可或缺的学习资源。通过实践这些基础知识,开发者可以...

    portal best practice

    #### 第二章 规划 WebSphere Portal 6.0 的高可用性部署 ##### 2.1 系统要求 - **硬件要求:** 包括 CPU、内存、存储空间等方面的最低配置要求。 - **软件要求:** 列出了操作系统、中间件以及其他必要的软件版本。 ...

    liferay_4_portlet_development_guide

    ### Liferay Portal 4 开发指南:扩展环境开发详解 #### 概述 《Liferay Portal 4-扩展环境开发》是一本专为希望在Liferay Portal基础上进行深入定制的开发者们编写的实用指南。本书提供了基于Ant的一系列工具,...

    ArcGIS for Android开发教程

    #### 第一章:基本概念 ##### 1. Android简介 2007年11月,Google推出了移动操作系统Android,这是一款专为移动终端设计的开放且完整的操作系统。自那时起,基于Android的手机和平板电脑迅速占据了市场份额。...

    ArcGIS for android最全的开发帮助文档

    第十一章介绍了地理处理,开发者可以通过ArcGIS Runtime执行地理分析任务,例如空间分析和网络分析。 第十二章介绍了Portal API,这是Esri的一套API,允许开发者访问和管理Portal for ArcGIS中的内容,例如组织、...

    NCV5-Portlal技术红皮书

    在第一章中,文档对Portal的概念进行了概述,并对NC Portal做了简介,强调了其在企业信息化建设中的重要地位。 第二章主要探讨了NC Portal的架构和功能。NC Portal容器是整个系统的基础,它为Portlets(portlet是...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版) 1/2

    这是2个压缩包中的第二个,请一并将第一个下载后,随便解压其中一个即可。 如果只希望下载其中一部分即可阅读,可下载另一个pdf: http://download.csdn.net/detail/oqqsun12345678/5215337 内容简介 出版日期: ...

    JBoss in Action.pdf

    本书第一章“VoteforJBoss”可能寓意着对JBoss应用服务器的支持与推崇,通过介绍其历史背景、架构设计与核心特性,帮助读者理解为何JBoss能够在众多应用服务器中脱颖而出。 ### 二、管理与部署JBoss应用 第二章...

    JBoss in Action

    - **第1章**:首先介绍了一个简单的 Web 应用程序如何在 JBoss AS 上运行。这一章节还深入探讨了 JBoss AS 分发包中的目录结构和文件组成。 - **目录结构**:包括服务器的配置文件、日志文件、部署的应用程序文件等...

    JavaServer Faces 2.0完全参考手册(JSF2.0中文版).part1

    这是2个压缩包中的第一个,请与第二个一并下载,然后随便解压其中一个即可。如果只想下载其中一部分,可下载pdf: http://download.csdn.net/detail/oqqsun12345678/5215337 这个pdf是665页中的前404页,后面200多页...

    Manning Portlets and Apache Portals

    ### 第一章:我的第一个Portlet #### 1.1 当前Java Portlet规范的状态 - **Java Portlet Specification**:介绍了当前版本的Java Portlet规范(如JSR 168、JSR 286等),包括其发展历程、特点和优势。 - **Portlet...

    JBoss in Action: Configuring the JBoss Application Server

    1. **第5章: 配置JBoss Web Server** - **重点内容**:该章节主要讲解了如何配置JBoss Web Server以适应不同的应用需求。 - **实践价值**:通过学习本章内容,读者可以掌握如何调整服务器参数以提高Web应用的性能...

    cognos安装文档

    #### 第1章:IBM Cognos Business Intelligence 组件介绍 ##### 服务器组件 IBM Cognos BI 的服务器端主要由以下几个部分组成: - **Web 通信 - 网关**:负责处理客户端与服务器之间的网络通信,确保数据安全传输...

Global site tag (gtag.js) - Google Analytics