版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Portlet 学习笔记1. Portal 基础1.1. 什么是 Portal s-e r d3S&j:h OPortal 一词是在 Internet 的发展中提出来的,原意为 “门户网站 ”即是人们上网后想要 访问的第一个网站,例如雅虎、搜狐这类网站。在这个阶段, Portal 还是作为一个面向广 泛群体的信息平台, 把人们所需要的各种信息 (或者访问这类信息的途径) 聚合在一起,是 一个信息集中平台。很快企业应用中也开始采用 Portal 这个概念,根据 Portal 在企业应 用中的不同作用,业界对 Portal 有着不同的定义如企业信息门户、知识门户、专业门户、 应用门户等等。随着时间
2、的推移,业界对 Portal 的定义趋向一致,也就是在 JSR168 种对 Portal 的定义: y I S-| portal 爱好者 _ H | p.N F J hA portal is a web based application that ?commonly- provides personalization, single sign on, content aggregation from different sources and hosts the presentation layer of Information Systems. Aggregation is the act
3、ion of integrating content from different sources within a web page. A portal may have sophisticated personalization features to provide customized content to users. Portal pages may have different set of portlets creating content for different users. T1Z(_1Gr o c,l从上述定义中我们可以知道 Por
4、tal 是企业用户访问各种企业信息、应用的入口,如下 图:ooM.| T*U1.2. 什么是 Portlet作为企业信息、应用的入口, Portal 的每个页面( Page )包含了多种不同的信息,一般 来说 Portal 的显示如下: K w+ h l,z9+Ss *An(v YQ h d _61U5D上图中你可以看到有多个小窗口,每个窗口是一个独立的应用,这些窗口称之为 Portlet,一个 Portal可以看作是 Portlet的集合。1.3. Portal 的组成一个Portal可以看作是 Portlet的集合, 称之为 Portlet Container 。Portlet Conta
5、iner 接受Portal服务器的请求并将请求转发给相应的Portal需要提供一个Portlet的运行环境,负责创建Portlet,管理它们的生命周期;Portlet ,同时返回 Portlet生成的内容。而Portal服务器负责将每个Portlet生成的内容聚合起来展现给用户,同时负责与用户交互。如下图:R:E 1Bwportal 爱好者 C A3bl w s W9z&1.4. Portlet 规范 6_eg#t F S因此在开发Portal应用时,应用开发商主要是在开发实现各个功能的Portlet ;同样为了让用户通过Po
6、rtal访问自己的产品,产品开发商也为自己的产品提供Portlet实现。然而不同Portal服务器各自Portlet实现的细节有所不同,导致Portlet无法在不同的Portal服务器上兼容,对于同一个应用在不同的Portal服务器上展现需要实现不同的Portlet。OJ%j U MG G,P3$q D4F s4v-F C !S为了解决这种情况,Portal服务器厂商开始制定Portlet规范,目前最重要的规范是:Java Portlet Specification禾口 Web Services for Remote Portlets 。c-#X7cdF$p
7、e其中 Java Portlet Specification 由 JCP(Java Community Process)组织维护,属于其中的JSR168,已经在 2003年10月27日完成1.0的最终版本;Web Services forRemote Portlets 由OASIS组织维护,在2003年8月其1.0版本被正式通过为OASIS标准。portal 爱好者 0X/v6J0q |&Y5q8k Q m/x- n9E m3ti5m在接下的章节将着重讲述Java Portlet Specificatio n,并简要介绍 Web Services forRem
8、ote Portlets (简称 WSRP )。Y q u h F;C 2. Java Portlet Specificatio n2.1. 一个例子-n7Q&|/v mB AJava Portlet Specification 中对 Portlet 的定义是:A portlet is a Java tech no logy based web comp onent, man aged by a portlet container that processes requests and gen erates dyn amic content. Portlets are used by port
9、als as pluggable user in terface comp onents that provide a prese ntati on layer to In formati onSystems.portal 爱好者 J;P7f w M+_到底一个 Portlet 是怎么样的,首先让我们来看看这个例子:)VKO;n Y*X/ Hello.java import java.io.IOException;import javax.portlet.*;public class Hello extends GenericPortlet portal 爱好者 /O N m D | g P8
10、q*v t E a U e)K m,Z1Ypublic void doView(RenderRequest request, RenderResponse response) throws PortletException, IOExceptionresponse.setContentType(text/html);response.getWriter().write(Hello, this is my first JSR168 portlet!); ) X2O _9l dc E:w#d2B M)x%I3i Qportlet.xml W;_% S%| m*M
11、Description goes here G* c;c*g+8J HelloHello.A w-t6t C Y e$z4v4HHello$_ W q2m-p Z0p D n B*%Z ? tr4v | portal 爱好者 h)u$cd a&cA运行结果: ( a#Pi C D-|8Stz A -RI4R Qa c&-p NZ/sW到目前看来 Portlet和Servlet很类似,同样都是 Java语言编写的 Web组件,例子中doView()方法与Servlet的doPost()等方法也很类似,那么为什么不直接使用Servlet技术来实现而需要另外定义一个Portlet规范呢?8K h.X
12、 N5 C ? Sz L(N事实上Portlet规范是在 Servlet规范基础上实现的,但是 Portlet还拥有许多Servlet所没有的特性,在接下的小节中将详细介绍这些特性。FV i(O F&qF(Q%na4 T5O F1N vOf2.2. 生命周期首先看看 Portlet 的接口定义: package javax.portletpublic in terface Portlet U f1W xH H H l W!U ,Vpublic void in it(PortletC onfig con fig) throws PortletExcepti on;portal 爱好者 LA i
13、a M X SS T4ipublic void processAct ion( Action Request request, Action Resp onse resp on se) throwsPortletException, IOException;%z Bpublic void ren der(Re nderRequest request, Ren derResp onse resp on se) throwsPortletExceptio n, I OExcepti on;public void destroy(); r9A6M6 h n*z _
14、portal 爱好者 2u8H:V D0n c我们可以看到熟悉的init()和destroy()方法,当 Portal服务器启动时,PortalCon tai ner将相应的Portlet实现类载入、实例化,然后调用init()方法,开发人员通过该方法实现所需的初始化工作;在服务器退出运行之前,Portal Con tai ner调用每个Portlet的destroy()方法,开发人员在这个方法中释放资源。 另外的processAction()和render()两个方法则是用于处理用户请求,整个周期如下图:portal 爱好者,zj3A o Q m-X j d2.3. Portlet Requ
15、est & URL portal 爱好者-n3H X 2TT7O Z在一个Portal页面中,通常都包含了多个Portlet,在一个时刻用户只能与一个Portlet交互,当用户向一个 Portlet发出请求(例如点击了 “ submit按钮”,整个 Portal 页面将会重新构成。在这个过程中,是否有与用户交互的Portlet处理方式显然是不同的,而且用户没有与之交互的Portlet显然不应该受到用户的请求参数。因此JSR168规范中将对 Portlet的请求分为 Action 和 Render两种。Portlet在收 到Action请求,获取用户所提交的信息,进行相应的处理;受到Render
16、请求后,则生成页面代码。当用户向一个 Portlet发出请求,该请求被 Portlet容器接受,Portlet容器再调用相应 Portlet的processAction() 方法;等到 processAction() 方法执行完毕后,Portlet容器再调用所有Portlet的render()方法,并将这些方法所返回的内容组合形成一个页面返回给客户端。如下图:*.y7qv.u,s S A G在上述过程中,所有Portlet的render()方法的调用次序在规范中没有规定,既可能是有顺序的串行调用,也可能是多线程的同步调用,依赖于厂商的具体实现。y e+P g v m7z为了接受用户请求,一个P
17、ortlet需要有一个指向其自身的URL,例如用在 HTTPFORM的ACTION 字段。但是与 Servlet不同的是, Portlet不是一个完整的页面而只是 页面的一部分,一个Portlet可以出现在多个页面中,所以Portlet无法绑定具体的URL 。在JSR168规范中定义了 PortletURL接口,通过该接口可以得到指向Portlet自身的URL,对应两种用户请求有两种产生URL的方法:& u b F3Ee X 0Fa gfor render(): PortletURL url = response.createRenderURL();:K Z8V L6summaryurl.se
18、tParameter(“ customer ” , ” ” ); url.setParameter(“ show/e9gr+writer.print(“ Summary ” );portal爱好者R!Q F M Rportal 爱好者 d t t8O-w B b a Jfor processAct ion():PortletURL url = respo nse.createActio nURL();url.setParameter(“ paymentMethod” , ” creditCardInProfile” );url.setWindowState(WindowStat
19、e.MAXIMIZED); portal 爱好者 V9i$n% E(O B V W-T writer.print(“ ” );”0_1D K 人5。3人 L(S!a上面的代码我们可以看到, 除了得到 URL夕卜,还可以在其中加入参数。 另外由于 Portal 服务器厂商通常都会利用 URL增加一些产品相关的参数,因此强烈建议在Portlet中提交用户请求采用 POST方式。2.4. Portlet Modes & Win dow States在Portal应用中,用户通常需要设置、调整Portlet的显示方式,对此JSR168同样做出了规定。分别有 Portlet Modes 和 Window
20、 States 。s%p7r-c.Portlet Modes说明Portlet目前所执行的功能模式,规范要求Portal服务器必须支持以下三种模式: 6o p j&? p n KVIEW 内容显示,通常为缺省模式EDIT 编辑相关的设置 5i R s T i o P VHELP 显示帮助信息 N1Q D&Y%c 除此之外可以 Portal 服务器可以实现自定义的模式。*i ;Q a#_ -l y n%d v B0 R5P49He e#V每个 Portlet 在 Portal 页面中就是一个
21、“窗口 ”,类似于 MS Windows 、 XWindo 等 窗口系统 Portlet 也有自己的窗口状态 ( Window States ),规范要求 Portal 服务器必须 支持以下三种窗口状态 :NORMAL 普通 portlet 窗口,在这个状态下通常是与其它 Portlet 共享 Portal 页面; MAXIMIZED 最大化 portlet 窗口,独占 Portal 页面;MINMIZED 最小化 portlet 窗口 除此之外可以 Portal 服务器可以实现自定义的窗口状态2m t !T Q |在规范中对这些特性进行定义, 使得 Port
22、let 开发者无需关心这方面实现细节, 另外在 processAction() 和 render() 方法中开发者都可以通过 getPortletMode() 和 getWindowState() 等方法获得当前 Portlet 的情况从而决定相关操作。 portal 爱好者 6R4g6M O4T Z :k k5E DP 8O u2.5. Preferences & User Information+B G3Y r4F I7g&Mv,X portal 爱好者 v4Y-m o3D bPortal 应用一个重要功能就是 “个性化 ”,一方面 Portal 服务器需
23、要根据用户的不同显 示不同的 Portlet ,另一方面同一个 Portlet 也会根据用户的偏好显示不同的内容。这就要 求 Portlet 需要保存一些用户的相关信息, 例如一个股票实时信息的 Portlet 会根据用户所 关注的股票显示相应的信息。 *Q e-Fz$o7c W l)g #T每个 Portlet 都可能有自己相应的个性化信息, JSR168 规范提供了 PortletPreferences 接口来操纵这些信息。 PortletPreferences 接口提供读取、设置属 性的方法,如下:PortletPreferences prefs = req.getPreferences
24、();String symbols = prefs.getValues( ” preferredStockSymbols ” ,new String” ACME , ” pFOOO” 爱好者)E E%w l*Yoportal 爱好者 b1G、$l6p RF9B&?3D&VK在 JSR168 规范中 PortletPreferences 是用户相关的,也就是通过 getPreferences() 获得的对象是与当前登录用户绑定的, PortletPreferences 不会在用户之间共享属性。Z ?,v2?T YPortletPreferences 提供了一个基本的读取、设置个性化属性的途径,使
25、得Portlet 无需依赖具体的数据储存环境 (例如数据库联接、 表结构等等) 就可以实现个性化并能够在不 同的 Portal 服务器之间移植。但是不应该使用 PortletPreferences 来替代一般的数据库功 能。Q i2U:Z)j-P 在实现个性化功能中经常需要获取各种用户信息,例如用户姓名、地址等等。因此JSR168 也提供了一个获取用户信息的途径,如下: h9p g3FrGI V$C/_k D &J ?Map userInfo = (Map) request.getAttribute(PortletRequest.USER_INFO); StringgivenName = (u
26、serInfo!=null) ? (String) userInfo.get(“ user.inaEmte.gKivebn?L5LStri ng lastName = (userI nfo!=n ull) ? (Stri ng) userI nfo.get( “” $X T b#Ai p j“ .family”)所获得的Map对象是一个只读对象,JSR168规范的范围,事实上目前还没有关于访问用户信息的 以后形成访问用户信息的Javaportal 爱好者 N*R+Q T8W)A2.6. Sessi ons标准时,不能更改。但是用户信息应该包含什么内容不在Java标准,JSR1
27、68提到在 当前的机制就会被取代。作为一个Web应用组件,与一般的Web应用所不同的是者;K 3O A Y3?&G7Qportal 爱好者 h U I G C v Z-YPORTLET_SCOPE:属性只能被设置它的K q XAPPLICATION_SCOPE :属性可以被同一个Portal应用中的所有 Portlet访问 Bb8D3X-?2q f PortletSessi on sessi on www.portalfa :Q OURL url = new URL(sessi on. setAttribute(sessi on. setAttribute(t6Q m R5Aportal 爱好者 w)A L )Aw c9J t g2.7. Request Dispatch & Portlet TagPortletPortlet同样有Sessi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业抵押借款合同范本
- 物业临时供水合同范本
- 运输集装箱合同协议书
- 继承老宅修缮合同范本
- 直播授课合作合同范本
- 辽宁柜门采购合同范本
- 衣柜安装外包合同范本
- 湛江绿化养护合同范本
- 监理无偿服务合同范本
- 续签合作合同协议范本
- 胰岛素抵抗综合管理方案与减重训练
- 环境消毒效果评估方案制度规定
- 《红岩》第03章+带读课(课件)
- 2025浙江宁波华润兴光燃气有限公司招聘3人笔试历年参考题库附带答案详解
- 2025北京房山初三上学期期中数学试卷和答案
- 2025安徽合肥市大数据资产运营有限公司招聘14人笔试历年参考题库附带答案详解
- 润心育德-“七彩少年”小学德育品牌建设实施方案
- 2026届新课标全国Ⅰ卷高三语文9、10月份各地模考好题汇编(古代诗歌鉴赏篇)
- 消防安全重点单位消防档案
- 《装配式超高性能混凝土市政桥梁结构技术规程DBJT 15-244-2022》知识培训
- 人工智能赋能美妆行业消费升级下的市场趋势研究报告
评论
0/150
提交评论