Java Portlet 规范概述
首先,解释几个基本的术语。
1)Portal
Portal 是一种 web 应用,通常具有个性化、单点登录、来自不同源的内容聚合(aggregation)并提供信息系统表现层等特点。所谓聚合,是指将不同来源的内容整合到一个 web 页面的操作。一个 Portal 应用可通过复杂的个性化配置为用户提供定制的内容,而 Portal 页面也可含有不同的 portlet 为不同的用户生成内容。
互联网流行之初,用户与 web 的交互通常是一个 URL 访问一个单一的静态 web 站点。随着 applet、JSP 等技术的使用,出现了更多动态 web 内容的展示。但对 web 开发人员而言,缺乏跨浏览器的应用实现标准依然是困扰他们的大难题。 Portal 的出现解决了动态内容的聚合问题,并向用户提供了一个面向协作的聚合平台。
IBM 将 Portal 门户网站视为下一代的基于 Web 的桌面系统,它通过 Web 把电子商务应用程序传送到各类客户机设备。门户网站为站点用户提供了到多种类型的信息和应用程序的单点访问。不管这些信息驻留在哪里,也不管它们是什么格式的,门户网站都以一种令人满意的、适应用户的方式聚集所有的信息。一个完整的门户网站解决方案应当使用户方便地访问他们完成任务所需的每一样工作。
IBM WebSphere Portal 的可扩展的框架允许最终用户与企业应用程序、人员、内容和流程交互。他们可以个性化和组织他们自己的门户网站视图、管理他们自己的概要文件并发布和共享文档。 WebSphere Portal 提供了附加的服务,如单点登录(single sign-on)、安全性、内容管理、搜索和分类学(taxonomy)、对移动设备的支持以及站点分析。
2)Portlet
Portlet 是基于 Java 技术的 web 组件,由 portlet 容器负责管理,portlet 的生命周期也由 porlet 容器管理。 Portal 使用 portlet 作为可插拔的用户接口组件,从而为信息系统提供表现层。 Web 客户端通过请求 / 响应机制和 portlet 交互。因用户对 portlet 的配置不同,portlet 生成的内容也各有所异。
IBM WebSphere Portal 是一个可以让用户插入新功能或者扩展(portlet)的框架。 Portlet 是 WebSphere Portal 中的应用程序。在一个起到用户通往信息和任务的窗口作用的门户网站中,开发 portlet 是最重要的任务。
3)Porlet 容器
Portlet 容器负责运行 portlet,并为 portlet 提供必要的运行环境。 Portlet 容器包含 portlet 并管理其生命周期,同时持久存储 portlet 的参数。 Portlet 容器接收并处理来自 portal 的请求,运行 portlet,最后生成动态的内容。需要注意的是,portlet 容器并不聚合多个 portlet 生成的内容,而是由 portal 来完成聚合的工作。
回页首
3.1.2 与 Servlet 的关系
按照 Servlet 规范 v2.3 的定义,servlet 也是一种基于 Java 技术的 web 组件,由容器管理,可生成动态的内容。那么,servlet 和 portlet 有什么区别呢?表 3-1 列出了 servlet 和 portlet 的异同点。
表 3-1. Servlet 和 Portlet 比较
相 同 点 | 不 同 点 |
都是基于 Java 技术的 web 组件 | Portlet 只生成标记片段(markup fragment),由 portal 来聚合所有的 portlet 标记片段得到完整的 portal 页面 |
都由专门的容器管理 | Portlet 并不直接和 URL 绑定 |
都能动态生成内容 | Web 客户端需要通过 portal 系统和 porlet 交互 |
两者的生命周期都有专门的容器维护 | Portlet 具有更精细的请求处理、动作请求和显示请求 |
都通过请求 / 响应模式与 web 客户端交互 | Portlet 有预定义的 portlet 模式(portlet mode)和窗口状态(window state),指明了 portlet 的操作功能和 portal 页面实际状态的数量 |
Portlet 可多处存在于同一 portal 页面中 |
表 3-2 列出了 portlet 和 servlet 各自独有的特点。
表 3-2. Portlet 和 Servlet 独有的特点
Portlet | Servlet |
Portlet 能够访问和存储持久化的配置信息和定制数据 | Servlet 能设置响应的字符集编码 |
Portlet 能够访问用户 profile 信息 | Servlet 能在响应中设置 HTTP 报头 |
Portlet 具有 URL override 功能,从而能在其内容中创建超链接。这样,portal 服务器无需知道页面片段中的链接和动作的创建。 | Servlet 能和 URL 对应 |
Portlet 能将瞬时数据以两种域方式存储在 portlet session 中:应用级域和 portlet 私有域 |
由于以上的不同,portlet 和 servlet 是两种不同的组件。但 portlet 在配置、类装载、web 应用、web 应用生命周期管理、session 管理和请求分发等方面和 servlet 有着相似之处。 Portlet、servlet 和 JSP 可捆绑在一个扩展的 web 应用中,称为 portlet 应用。此时,portlet、servlet 和 JSP 共享类装载器、应用上下文(context)和 session 。 Portlet 可通过请求分发器来调用 servlet 和 JSP,就如同 servlet 可调用其他 servlet 和 JSP 一样,这样,portlet 和 servlet 可实现无缝的集成。
Portlet 容器是 servlet 容器的扩展,因此,不论 portlet 容器如何实现,其运行环境都假定支持 servlet 规范 2.3 。
回页首
3.1.3 Portal 页面
如 图 3-1 所示,portlet 生成片段(fragment),而 portal 通常要添加上标题、控制按钮和其他装饰性元素,而得到 portlet 窗口。最后 portal 将多个 portlet 窗口聚合而成一个完整的文档,即 portal 页面。
图 3-1. Portal 页面的组成元素
Portlet 在 portlet 容器中运行,容器接收 porlet 生成的内容,并传递给 portal 。由 portal 服务器组织成 portal 页面,并送交客户端设备(如浏览器)显示。 Portal 页面的生成过程如 图 3-2 所示。
图 3-2. Portal 页面生成过程
Java Portlet 规范概述的更多相关文章
- JAVA编程规范(下)
JAVA编程规范(下) 2016-03-27 6. 代码的格式化 6.1 对代码进行格式化时,要达到的目的 1. 通过代码分割成功能块和便于理解的代码段,使代码更容易阅读和理解: 2. ...
- Java代码规范
Java代码规范 本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改.本文档中没有说明的地方,请参看SUN Java标准代码规范.如果两边有冲突,以SU ...
- 标准的Java编码规范手册
编码规范体现出一个开发者的基本素质,良好的编码规范可以提高团队编码的效率,避免很多不必要的问题.今天分享一个标准的Java编码规范给大家,希望对于大家今后的开发工作带来帮助. 编码规范的意义 ...
- JAVA代码规范笔记(上)
本文为<code conventions-150003>(JAVA代码规范)笔记. 文件组织 1.超过2000行代码的源文件将会比较难以阅读,应该避免. 2.每个Java源文件都包含单一的 ...
- Notes 20180506 : Java程序设计语言概述
2.Java程序设计语言概述 如果对于开发语言的排行榜有所关注的话,那么会发现很长一段时间以来Java都是位居榜首的高级开发语言,作为一个Java开发者,为此感到骄傲的同时也深感忧虑,骄傲的是自己接触 ...
- java虚拟机规范(se8)——java虚拟机结构(六)
2.11 指令集简介 java虚拟机指令由一个字节的操作码,接着时0个或多个操作数组成,操作码描述了执行的操作,操作数提供了操作所需的参数或者数据.许多指令没有操作数只包含一个操作码. 如果忽略异常处 ...
- Java模块化规范之争(转载)
经过近20年的发展,Java语言已成为今日世界上最成功.使用的开发者人数最多的语言之一,Java世界中无数商业的或开源的组织.技术和产品共同构成了一个无比庞大的生态系统. 与大多数开发人员的普遍认知不 ...
- JAVA语言规范-线程和锁章节之同步、等待和通知
JAVA语言规范:线程和锁 1 同步 java编程语言提供了线程间通信的多种机制.这些方法中最基本的是同步化,此方法是使用监视器实现的.JAVA中每个对象与一个监视器相关联,一个线程可以加锁和解锁监视 ...
- Java Reference简要概述
@(Java)[Reference] Java Reference简要概述 Reference对象封装了其它对象的引用,可以和普通的对象一样操作. Java提供了四种不同类型的引用,引用级别从高到低分 ...
随机推荐
- Django request 常用属性
一.request属性 path 获取url全路径(出去域名外) 用法: request.path GET 用户所有的get内容以字典的形式存储 例:{'name':'alan'} 用法: data ...
- 我的第一篇——nginx+naxsi总结篇1
今天是我正式在Linux下安装nginx的第一天吧,搜索,查看,安装,这之间肯定是或多或少的遇到了很多的问题,不管是大的还是小的,都应该记录下来,或许以后还会用到,或许会帮到其他人. 首先,先说一下, ...
- Cookie的属性(cookie的设置、获取和删除)
每个cookie都有四个可选的属性,他们分别控制cookie的生存周期.可见性.安全性等. Cookies最初设计时,是为了CGI编程.但是,我们也可以使用Javascript脚本来操纵cookies ...
- PV信号量的一些理解
进程通常分为就绪.运行和阻塞三个工作状态.三种状态在某些条件下可以转换,三者之间的转换关系如下: 进程三个状态之间的转换就是靠PV操作来控制的.PV操作主要就是P操作.V操作和信号量.其中信号量起 ...
- 那些好用的iOS开发工具
版权说明 本文首发于<程序员>杂志 2014 年 6 月刊,未经允许,请勿转载. 前言 从 苹果发明 iPhone 起,AppStore 上的一个又一个类似 flappy bird 的一夜 ...
- 如何提高jQuery的性能
缓存变量DOM遍历是昂贵的,所以尽量将会重用的元素缓存. // 糟糕 h = $('#element').height(); $('#element').css('height',h-20); // ...
- JavaGUI实现点名系统
有一个名字数组,根据线程知识是框中的数据依次修改 package Week1008; import java.awt.Font; import java.awt.event.ActionEvent; ...
- 解决DropDownList 有一个无效 SelectedValue,因为它不在项目列表中。这是怎么回事?
产生错误原因: 绑定在DropDownList的时候 DropDownList没有对应的值 查了一下MSDN:DropDownList.SelectedValue 属性: 此属性返回选定的 ListI ...
- ora 32021 设置参数时参数值长度超过255处理办法
alter system set db_file_name_convert='AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA-.' scope=spfi ...
- EasyUI的DataGrid 分页栏英文改中文解决方案
(一)分页栏英文改中文解决方案 这个问题其实很简单,就是引入文件jquery-easyui-1.3/locale/easyui-lang-zh_CN.js . 注意这个文件要放在本页js的后面,放在最 ...