•  
Main
About Hippo Portal
Documentation
Community
Other

About Portals, Portlets & Pages

Before discussing what Hippo Portal is all about, it is important to provide an overview of what a Portal is, and in particular a JSR-168 compliant Portal.

The important point here is that Hippo Portal is an addon to the Apache Jetspeed-2 Enterprise Portal and as such also fully compliant to the Portlet API 1.0 (JSR-168).

What is a Portal

A Portal is a web application which aggregates and displays content from diseparate systems using Portlets.
To access these portlets, it uses an standards based, JSR-168 compliant, engine called a Portlet Container.

Besides merely aggregation and displaying content produced by Portlets, a Portal usually adds several other features like:

  • Personalization
  • Advanced security configuration
  • Single Sign On (SSO)
  • Customizable look and feel (also called decorations)

"A picture can say more than a thousand words": (from Portlets and Apache Portals, Manning 2005)

Portlet Container

What is a Portlet

So Portlets are used by the Portal to supply content to be aggregated. But what is a Portlet?

A JSR-168 compliant Portlet is a Java based web component which is managed by the Portlet Container.
It generates (dynamic) content fragments and process requests to do so.
And it is packaged as a standard web application (possibly with other portlets) with an additional deployment descriptor, /WEB-INF/portlet.xml.

Developing a portlet is very similar to developing standard web applications (servlets) as the Portlet API shares many similarities with the Servlet API.
There are some important differences though which needs to be taken into account, and the Portlet 1.0 Specification provides a good reading start for that.

In practice, you can use standard JSP scripting for view development just as with Servlet Applications or use a common web framework which provides native or even transparent Portlet support out of the box like:

Additionally, the Apache Portals Bridges project provides solutions for many other (web) technologies too like:

  • Apache Struts 1.x (transparent)
  • Apache Velocity
  • Groovy
  • PHP
  • Perl

Portlets can be used to display and provide access to any backend system you want, like databases, (content) repositories, webservices, filesystems etc.

What is a Portal Page

One essential difference between a Portlet and a Servlet is that a Portlet only provides a content fragment, not a full (web) page to the Portal.
A Portlet might have to "share" the same web page with additional, sometimes many, other portlets.
Each of the portlets only contributes a section of the overall page content, called a Portlet Window, and it is the Portal which will aggregate these together.
In addition, the Portal might add some nice "look and feel" decorations like a title, icon controls, window borders, headers, footers and the like to the resulting page, but these are not produced by the portlets themselves.

The following picture provides a schematic view of such an aggregated (and dressed up) page:

Portlets

A Portal Page is a Portal controlled definition configured to be accessed through a specific web URL, referencing one or more portlets layed out in a predefined way.
The Portal can use other meta data (like derived from the web URL, or directly from the Page definition itself) to provide additional content like css, headers, footers, menu widgets, and (Portlet) window decorations.

In general, what Portal Pages are available (and under which URL) is configured and managed by the Portal, just as which portlets are show and the content access they provide.
Portlets can be developed and provided separately and usually independent of a Portal to which they are deployed (if properly compliant to the Portlet API).
It is the Portal configuration, and the pages it manages, which brings the portlets together to provide the end user experience.