分享
 
 
 

JSR#168 Portlet 说明

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

ch1 序言

许多大型企业的网站, 渐渐采用了 portal server 作为开发的基础. 至于什么是 portal 呢, 中文翻译为 "门户网站"。 有人可能想.. 天杀的.. 门户网站不是就像 yahoo, pchome, yam 等等。不过, 我们现在讨论的 portal server, 不是那么地简单, 基本上 yahoo, pchome, yam 那些只能称为搜索引擎的门户网站。

如果你从来沒有用过 portal server 或是似懂非懂.. 大家可以连结到 MyNetscapeMyYahoo 去 注册一个帐号。因为 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 不尽然相同,所以研究小組決定将 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 想要把光芒射到冥王星都会发光吧 :P

目前 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

这个并没有定义 :P 1) Fonts ( font )portlet-font portlet-font-dim 2) Message ( paragraph .. )portlet-msg-statusportlet-msg-infoportlet-msg-errorportlet-msg-alertportlet-msg-success3) Sections ( table, div, span ... )portlet-section-headerportlet-section-bodyportlet-section-alternateportlet-section-selectedportlet-section-subheaderportlet-section-footerportlet-section-text4) Forms ( form )portlet-form-labelportlet-form-input-fieldportlet-form-buttonportlet-icon-labelportlet-dlg-icon-labelportlet-form-field-labelportlet-form-field5) menus ( popup menu )portlet-menuportlet-menu-itemportlet-menu-item-selectedportlet-menu-item-hoverportlet-menu-item-hover-selectedportlet-menu-cascade-itemportlet-menu-cascade-item-selectedportlet-menu-descriptionportlet-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 及 title ch7 其他细节最后, portlet 需要考虑的还有 security, caching, taglib 等等.. Portal 是连结后端 EAI 处理的信息整合平台,提供了企业完整的解决方案,提供了单一登陆的机制,贴心的个人化页面设置,更可以提供各式各样平台如 pda, 手机等等的统一窗口。因此, 政府与大企业都 *应该* 采用这种解决方案,通过 Webservice 达成信息流/金流/物流 的效果....

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有