JSR168 PORLET标准手册汉化整理Word文档下载推荐.docx
《JSR168 PORLET标准手册汉化整理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《JSR168 PORLET标准手册汉化整理Word文档下载推荐.docx(45页珍藏版)》请在冰豆网上搜索。
许多大型企业的网站,渐渐采用了portalserver作为开发的基础.至于什么是portal呢,中文翻译为"
门户网站"
。
有人可能想..天杀的..门户网站不是就像yahoo,pchome,yam等等。
不过,我们现在讨论的portalserver,不是那么地简单,基本上yahoo,pchome,yam那些只能称为搜索引擎的门户网站。
如果你从来沒有用过portalserver或是似懂非懂..大家可以连结到MyNetscape或MyYahoo去注册一个帐号。
因为MyNetscape的样式比较好看,所以我接下来就以MyNetscape为介绍的范例。
如果你第一次接触到portal,你会惊讶的发现...哇..为何一个网站里面充满了这么多小窗口.我们称这些小窗口叫做"
portlet"
,而且每个小窗口都存在着独立的信息与内容,可以放到最大化,缩小,还原,关闭等等。
当你登陆之后,可以选择及调整自己portlet的配置,也可以设置自己喜爱的风格与样式,更可以设置每个portlet的资料配置。
这种以客户为上帝的系统,就是我们将要介绍的portal。
PLT.2.1什么是Portal(门户)?
Portal的组成可以分为三部份
(1)PortalServer
(2)PortletContainer(3)Portlet
1)PortalServer的定义是
一个Portal(门户网站)就是指一个Web-based的系统,通常都会提供个人化设置、单一登陆、以及由各种不同来源或不同网站取得各式各样的信息,并且将这些信息放在网页之中组合而成的呈现平台,门户网站会有精巧的个人化设置去提供定制的网页,当不同等级的使用者来浏览该页面将获得不同的信息内容。
2)PortletContainer的定义是
portletcontainer是提供portlets执行的环境,包含了许多portlets并且管理他们的生命周期,他也会永远保存着portlets的喜好设置,一个portletcontainer接收到来自portal的请求后,接着将这个请求传递给存在container的portlet执行。
portletcontainer没有义务去组合portlets产生的信息內容,这个工作必须由portal来处理。
portal和portletcontainer可以放在一起视为同一个系统的组件,或者分开成为两个独立的组件。
PLT.2.2什么是Portlet?
一个Portlet是以Java技术为技术的Web组件,由PortletContainer所管理,专门处理客户的request以及产生各种动态的信息内容。
Portlets为可插式(pluggable)的客户界面组件,提供呈现层成为一个信息系统。
这些由portlet产生的内容也被称为片段(fragment),而片段是具有一些规则的Markup(HTML、XHTML、WML),而且可以和其他的片段组合而成一个复杂的文件。
而Portlet中的内容正常来说是与其他Portlet的内容聚合而成为一个Portal网页。
而Portlet的生命周期是被PortletContainer所管理控制的。
客户端和portlets的互动是由portal通过典型的request/response方式实现,正常来说,客户会和portlets所产生的内容互动,举例来说,根据下一步的连接或者是确认送出的表单,结果portal将会接收到portlet的动作,将这个处理状况转向到目标portlet。
这些portlet内容的产生可能会因为不同的使用者而有不同的变化,完全是根据客户对于这个portlet的设置。
PLT.2.3portlet与servlet的关系?
Portlet和Servlet算是兄弟有那么一点点相似却又有那么一点点不同,因为Servlet和Portlet不尽然相同,所以研究小組決定将portlets定义成为一个新的组件,因此定义了portlets一个新的并且明确的界面与行为。
为了尽可能与现有的servlet结合达到重复使用的目的,portlet的规范利用了servlet的规范,许多观念都很相似的,结合portlets、servlets及jsp在同一个网站系统中,我们称为portletapplication。
在同一个portletapplication中,他们将分享同一个classloader,context及session。
1)Portlet和Servlet的相似之处
@portlets也是Java技术的web组件
@portlets也是有特定的container在管理
@portlets可以动态产生各种内容
@portlets的生命周期由container所管理
@portlets和客户端的互动是通过request/response的机制
2)Portlet和Servlet也有一些不同
@portlets只产生markup信息片段,不是完整的网页文件。
而Portal会将所有的Portletmarkup信息片段放到一个完整的Portal网页。
@portlets不会和URL有直接的关系
@客户端必须通过portal系统才能和portlets互动
@portlets有一些定义好的request处理,actionrequest以及renderrequest。
@portlets默认定义portletmodes及窗口状态可以指出在网页中该portlet的哪个功能正在执行及现在的状态。
@portlets可以在同一个portal网页之中存在多个。
3)Portlet有一些附加的功能是Servlet所没有的
@Portlets能够存取及储存永久配置文件及定制资料。
@portlets可以存取使用者数据
@portlets具有URL的重写功能在文件中去动态建立连结,允许portalserver不用去知道如何在网页的片段之中建立连结及动作。
@portlets可以储存临时性的数据在portletsession之中,拥有两个不同的范围:
application-widescope及portletprivatescope。
4)Portlet不具有一些功能,但是Servlet却有提供
@servlet具有设置输出的文字编码(charactersetencoding)方式
@servlet可以设置HTTP输出的header
@servlet才能够接收客户对于portal发出的URL请求
PLT.3.1从Portlets到Servlets/JSPs的关联
Portlets可以调用servlets,JSPs和JSPs标签库来产生内容。
一个portlet可以使用请求发送者来调用servlets和JSPs,就像servlet使用调用其它servlets和JSPs一样。
为了使portlets和servlets之间整合得天衣无缝,Portlet规范允许调用更多的servlet对象。
当servlet或JSP在portlet中被调用时,传给servlet或JSP的request是以portletrequest为基础的。
同样,传给servlet或JSP的response是以portletresponse为基础的。
被包括的servletrequest可使用portletrequest的Attributes设置。
portlet和被包括的servle或JSP分享同一个的输出流。
portlet会话中的Attributes设置可以来自于servlet会话,反之亦然。
PLT.3.2Servlet容器和Portlet容器的关系
portlet容器是servlet容器的扩展,所以一个portlet容器可以构建于一个已存在的servlet容器之上或者可能实现servlet容器的全部功能。
无论portlet容器如何实现,它的运行环境总是假定它支持Servlet2.3规范。
PLT.4.1ElementsofaPortalPage(Portal页面的结构)
一个portlet能产生标记片段。
portal通常在portlet产生的标记片段中加上标题,控制按钮及其它修饰。
这个新的标记片段称为portlet窗口。
然后portal合并这些portlet窗口为一个完整的文档,即portal页面
修饰和控件
标题portlet片段
portlet窗口
<
Portlet内容>
portal页面
PLT.4.2PortalPageCreation参考kojilin
portlets在portletcontainer内执行,portletcontainer接收portlets产生的内容。
通常portletcontainer将这些内容提交给portalserver,portalserver从这些内容建立portalpage然后将它传给客户端。
(参考SpecFigure4-2)
PLT.4.3PortalPageRequestSequence
使用者经由客户端设备(例如浏览器)存取portal,portal根据接收到的request决定哪些portlets需要被执行以满足需求。
portal通过portletcontainer呼叫portlets,然后由portlets产生的片段建立portalpage,再传回客户端呈现给使用者。
PLT.5ThePortletInterface
Portletinterface是PortletAPI中主要的抽象接口,所有的portlet不是直接操作这个接口,就是继承了
这个接口类。
PortletAPI包含GenericPortlet类,此类提供了一些预设的功能;
开发人员应该继承、直接或间接地拓展
GenericPortlet类,以写出自己的portlet。
PLT.5.1NumberofPortletInstances
PortletContainer如何产生portletinstances是被布署描述(deploymentdescriptor)中portlet的
定义所控制的。
在没有分布式的环境中(默认情况),portletcontainer必须实例化一个并且只能使用一个portlet