[转]JSR#168 Portlet 说明
JSR#168 Portlet 说明
全文 (1)-(7) 由 jini (99% jakarta) 所撰写
版权归属于 (c)softleader taiwan ( http://www.softleader.com.tw )
如需转载请信告知 jini@bbs.openfind.com.twch1 序言
许多大型企业的网站, 渐渐采用了 portal server 作为开发的基础. 至于什么是 portal 呢, 中文翻译为 “门户网站”。 有人可能想.. 天杀的.. 门户网站不是就像 yahoo, pchome, yam 等等。不过, 我们现在讨论的 portal server, 不是那么地简单, 基本上 yahoo, pchome, yam 那些只能称为搜索引擎的门户网站。
如果你从来�]有用过 portal server 或是似懂非懂.. 大家可以连结到 MyNetscape 或 MyYahoo 去 注册一个帐号。因为 MyNetscape 的样式比较好看, 所以我接下来就以 MyNetscape 为介绍的范例。
如果你第一次接触到 portal,你会惊讶的发现… 哇.. 为何一个网站里面充满了这么多小窗口. 我们称这些小窗口叫做 “portlet”,而且每个小窗口都存在着独立的信息与内容,可以放到最大化,缩小,还原,关闭等等。当你登陆之后,可以选择及调整自己 portlet 的配置,也可以设置自己喜爱的风格与样式,更可以设置每个 portlet 的资料配置。这种以客户为上帝的系统,就是我们将要介绍的 portal。
ch2 Portal 的组成
Portal 的组成可以分为三部份 (1) Portal Server (2) Portlet Container (3) Portlet
1) Portal Server 的定义是
一个 Portal(门户网站)就是指一个 Web-based 的系统,通常都会提供个人化设置、单一登陆、以及由各种不同来源或不同网站取得各式各样的信息,并且将这些信息放在网页之中组合而成的呈现平台,门户网站会有精巧的个人化设置去提供定制的网页,当不同等级的使用者来浏览该页面将获得不同的信息内容。
2) Portlet Container 的定义是
portlet container 是提供 portlets 执行的环境,包含了许多 portlets 并且管理他们的生命周期,他也会永远保存着 portlets 的喜好设置,一个 portlet container 接收到来自 portal 的请求后,接着将这个请求传递给存在 container 的 portlet 执行。portlet container 没有义务去组合 portlets 产生的信息�热荩�这个工作必须��portal 来处理。portal 和 portlet container 可以放在一起视为同一个系统的组件,或者分开成为两个独立的组件。
3) Portlet 的定义是
一个 Portlet 是以 Java 技术为技术的 Web 组件,由 Portlet Container 所管理,专门处理客户的 request 以及产生各种动态的信息内容。Portlets 为可插式 ( pluggable ) 的客户界面组件,提供呈现层成为一个信息系统。这些由 portlet 产生的内容也被称为片段 (fragment),而片段是具有一些规则的Markup( HTML、XHTML、WML ),而且可以和其他的片段组合而成一个复杂的文件。而 Portlet 中的内容正常来说是与其他 Portlet 的内容聚合而成为一个 Portal 网页。而 Portlet 的生命周期是被 Portlet Container 所管理控制的。客户端和 portlets 的互动是由 portal 通过典型的 request/response 方式实现,正常来说,客户会和 portlets 所产生的内容互动,举例来说,根据下一步的连接或者是确认送出的表单,结果 portal 将会接收到 portlet 的动作,将这个处理状况转向到目标 portlet。这些 portlet 内容的产生可能会因为不同的使用者而有不同的变化,完全是根据客户对于这个 portlet 的设置。
ch3 portlet 与 servlet 的关系
Portlet 和 Servlet 算是兄弟有那么一点点相似却又有那么一点点不同,因为 Servlet 和 Portlet 不尽然相同,所以研究小��Q定将 portlets 定义成为一个新的组件,因此定义了 portlets 一个新的并且明确的界面与行为。为了尽可能与现有的 servlet 结合达到重复使用的目的,portlet 的规范利用了 servlet 的规范,许多观念都很相似的,结合 portlets、servlets 及 jsp 在同一个网站系统中,我们称为 portlet application 。在同一个 portlet application 中,他们将分享同一个 classloader,context 及 session。
1) Portlet 和 Servlet 的相似之处
@ portlets 也是 Java 技术的 web 组件
@ portlets 也是有特定的 container 在管理
@ portlets 可以动态产生各种内容
@ portlets 的生命周期由 container 所管理
@ portlets 和客户端的互动是通过 request/response 的机制2) Portlet 和 Servlet 也有一些不同
@ portlets 只产生 markup 信息片段,不是完整的网页文件。而 Portal 会将所有的 Portlet markup 信息片 段放到一个完整的 Portal 网页。
@ portlets 不会和 URL 有直接的关系
@ 客户端必须通过 portal 系统才能和 portlets 互动
@ portlets 有一些定义好的 request 处理,action request 以及 render request。
@ portlets 默认定义 portlet modes 及窗口状态可以指出在网页中该 portlet 的哪个功能正在执行及现在的 状态。
@ portlets 可以在同一个 portal 网页之中存在多个。3) Portlet 有一些附加的功能是 Servlet 所没有的
@ Portlets 能够存取及储存永久配置文件及定制资料。
@ portlets 可以存取使用者数据
@ portlets 具有 URL 的重写功能在文件中去动态建立连结,允许 portal server 不用去知道如何在网页的片 段之中建立连结及动作。
@ portlets 可以储存临时性的数据在 portlet session 之中,拥有两个不同的范围 :
application-wide scope 及 portlet private scope 。4) Portlet 不具有一些功能, 但是 Servlet 却有提供
@ servlet 具有设置�出的文字编码( character set encoding)方式
@ servlet 可以设置 HTTP 输出的 header
@ servlet 才能�蚪邮湛突Ф杂�portal 发出的 URL 请求ch4 RI – pluto 冥王星计划
JSR 是由 JCP ( www.jcp.org ) 这个 Java 组织所定义出来的规范。几乎每个 JSR 都会产出 TCK* 及 RI**
*TCK ( Technology Compatibility Kit ) 兼容性测试组件
*RI ( Reference Implementation ) 实现参考2003/10/27 JSR#168 Portlet Spec 1.0 已经正式公布。以后, 大家就可以开始根据这个规范开发兼容性的产品。而这个标准规范书的 RI 就是采用 Apache Jakarta Pluto 冥王星计划。至于为何叫做冥王星,我猜是 Sun 想要把光芒射到冥王星都会发光吧
![]()
目前 pluto 尚未有正式的版本释放, 将来有兴趣的人可以从 jakarta 网站下载。不过目前我由 CVS 取得版本已经可以正常运行了。安装的方法十分简单.. 只需要执行 %pluto%/bin/install 就可以安装了,安装过程会询问你 tomcat 的目录,假设你 tomcat 根目录是 c:\tomcat4.1.27 ,你输入 c:\tomcat4.1.27 就可以了。
接着 http://localhost:8080/pluto/portal 就可以看到很漂亮的 portal 界面,至于操作模式与方法非常简单,请多加操控就可以慢慢了解 portlet 的控制方法了。
在 portlet spec 中定义的控制有分为
1) 基本的 Portlet Modes
VIEW – 你没有做任何动作仅仅做内容显示
EDIT – 编辑相关的设置
HELP – 寻求帮助2) 基本的 Window States
NORMAL – 还原 portlet 窗口
MAXIMIZED – 最大化 portlet 窗口
MINMIZED – 最小化 portlet 窗口其实, 这些动作都已经由 portal 所实现,portlet container 将接收与回应相关的动作。真正在程序开发上并不会考虑到这些细节,除非你要做一�� portlet container。而开发上要考虑的是什么人能�蜃鍪裁词虑椤@�如说尚未登陆的人应该只���doView / doHelp,而不能��doEdit 这种权限管控机制的开发。
ch5 css 定义
每个通过认证的使用者,就可以使用相关的 portlet 外观 ( Look&Feel )设置,而这些设置就是通过 css 来 编辑。在没有 portlet spec 之前,各家厂商都自行规定或由 ISV 各自完成,造成了�多 portlet 无法共用同一份 CSS 来实现,移植上将会有许多问题发生。
因此 css 的定义对于具有定制功能的 portal 是相当重要的。
0) Anchor
这个并没有定义![]()
1) Fonts ( font )
portlet-font
portlet-font-dim2) Message ( paragraph .. )
portlet-msg-status
portlet-msg-info
portlet-msg-error
portlet-msg-alert
portlet-msg-success3) Sections ( table, div, span … )
portlet-section-header
portlet-section-body
portlet-section-alternate
portlet-section-selected
portlet-section-subheader
portlet-section-footer
portlet-section-text4) Forms ( form )
portlet-form-label
portlet-form-input-field
portlet-form-button
portlet-icon-label
portlet-dlg-icon-label
portlet-form-field-label
portlet-form-field5) menus ( popup menu )
portlet-menu
portlet-menu-item
portlet-menu-item-selected
portlet-menu-item-hover
portlet-menu-item-hover-selected
portlet-menu-cascade-item
portlet-menu-cascade-item-selected
portlet-menu-description
portlet-menu-caption基本上, 你要了解什么地方该用什么 css,这些 css 名称套用在你开发的 portlet 之中,你就可以移植到其他支持 jsr#168 的系统,不需要在花时间去更改成为他们的 Look&Feel。
ch6 信息片段 ( fragment markup ) 的限制
每个 portlet 输出都是一个信息片段,之前有提到, 这些 markup 有些限制。
如果你是生成 HTML 格式的信息片段,就*不可以*拥有以下这些 tag :
base, body, iframe, frame, frameset, head, html, 及 title如果生成是 XHTML 或 XHTML-basic 格式的信息片段,就*不可以*拥有以下这些 tag :
base, body, iframe, head, html 及 titlech7 其他细节
最后, portlet 需要考虑的还有 security, caching, taglib 等等..
Portal 是连结后端 EAI 处理的信息整合平台,提供了企业完整的解决方案,提供了单一登陆的机制,贴心的个人化页面设置,更可以提供各式各样平台如 pda, 手机等等的统一窗口。因此, 政府与大企业都 *应该* 采用这种解决方案,通过 Webservice 达成信息流/金流/物流 的效果….
图 1. 计算机系统的抽象层次
图 2. 关于从零售商处购买物品的域层次动态视图
图 3. 关于从零售商处购买物品的域层次静态视图
图 4. 关于从零售商处购买物品的业务处理层次动态视图
图 5. 关于从零售商处购买物品的业务处理层次静态视图
图 6. 从零售商处在线购买物品的逻辑层次动态视图









阅读列表