Portal开发总结.doc_第1页
Portal开发总结.doc_第2页
Portal开发总结.doc_第3页
Portal开发总结.doc_第4页
Portal开发总结.doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Portal介绍什么是Portal?英文字面是“入口”,国内有叫“门户”技术的,但我觉得“集成”技术更能表达它的意思。Portal是一个基于web的应用程序,它主要提供个性化、单点登录、不同来源的内容整合以及存放信息系统的表示层。Portal有什么标准?为规范Portal,SUN于2003年底制定了JSR168,它定义了Portlet标准,并给出了一个实现接口。什么是Portlet?Portlet是基于java技术的web组件,它由Portlet容器管理、并处理请求,并动态生成输出内容。Portlet是基于java的web组件,由Portlet容器管理,并由容器处理请求,生产动态内容。Portals使用Portlets作为可插拔用户接口组件,提供信息系统的表示层。作为利用servlets进行web应用编程的下一步,Portlets实现了web应用的模块化和用户中心化。Portlet规范,即jsr(java specification request)168,是为了实现portal和Portlet的互操作。它定义了Portlet和Portlet容器之间的和约,让Portlet实现个性化、表示和安全的api集。规范还定义了怎样在Portlets应用中打包Portlets。Portal有什么特色?低成本的集成技术。如果你的网站或企业已经有了很多信息系统,Portal可以很容易的将这些系统集成起来,并以统一的方式提供给用户,统一可以有流程的统一,如:登陆、定制、浏览;界面的统一,如:显示风格登高度的模块化。通过Portal技术提供的plugin技术,可以根据企业,网友的需求编制标准的模块,并嵌入Portal系统,供企业、网友使用。高度的扩展性,已经有了很多产品和标准来制定Portal,作为这些产品和标准,如:jsr- 168,通过Portlet的概念来对Portal的功能进行扩展。Portal有什么用?个人认为从两个方面。一是针对跟人(网友)的应用。由于Portal的特色,企业和网站可以很容易的将自己的服务进行标准封装,插入Portal系统,提供跟用户使用。现在很多门户网站和专业网站有很多服务,但是很多服务用户根本就没有使用过、发现过,通过Portal的形式给用户一个集中体验的场所。二是针对企业,企业可以将现有的信息系统,资源通过Portal来进行封装,提供给用户使用。比如:有些公司有报销系统,考核系统,会议系统,但这些系统都是彼此分离的,使用和界面并不统一,通过Portal可以很容易地将这些系统提供的服务封装并呈给用户使用。了解portal在Portlet规范里是这样讲的:“portal是一种web应用,通常用来提供个性化、单次登录、聚集各个信息源的内容,并作为信息系统表现层的宿主。聚集是指将来自各个信息源的内容集成到一个web页面里的活动”。Portal的功能Portal的功能可以分为三个主要方面:1. Portlet容器:Portlet容器与servlet容器非常类似,所有的portlet都部署在portlet容器里,portlet容器控制portlet的生命周期并为其提供必要的资源和环境信息。Portlet容器负责初始化和销毁portlets,向portlets传送用户请求并合成响应。2. 内容聚集:Portlet规范中规定portal的主要工作之一是聚集由各种portlet应用生成的内容,我们将在“如何创建Portal页面”部分对此做进一步讨论。3. 公共服务:portlet服务器的一个强项是它所提供的一套公共服务。这些服务并不是portlet规范所要求的,但portal的商业实现版本提供了丰富的公共服务以有别于它们的竞争者。在大部分实现中都有望找到的几个公共服务有:单次登录只需登录portal服务器一次就可以访问所有其它的应用,这意味着你无需再分别登录每一个应用。例如一旦我登录了我的intranet网站,我就能访问mail应用、IM消息应用和其它的intranet应用,不必再分别登录这些应用。Portal服务器会为你分配一个通行证库。你只需要在mail应用里设定一次用户名和密码,这些信息将以加密的方式存储在通行证库中。在你已登录到intranet网站并要访问mail应用的时候,portal服务器会从通行证库中读取你的通行证替你登录到mail服务器上。你对其它应用的访问也将照此处理。个性化个性化服务的基本实现使用户能从两方面个性化她的页面:第一,用户可以根据她的自身喜好决定标题条的颜色和控制图标。第二,用户可以决定在她的页面上有哪些portlets。例如,如果我是个体育迷,我可能会用一个能提供我钟爱球队最新信息的portlet来取代股票和新闻portlets。 一些在个性化服务方面领先的商业实现版本允许你建立为用户显示什么样的应用所依据的标准(如收入和兴趣)。在这种情况下,可以设定一些像“对任何收入为X的用户显示馈赠商品的portlet”和“对任何收入为X的用户显示打折商品的portlet”这样的商业规则。 其他 此外还有一些公共服务,比如机器翻译,是由portal服务器将portlet生成的内容翻译为用户要求的语言。大部分的商业portal服务器都支持手持设备访问并具有针对不同的浏览终端生成不同内容的能力。Portlets是什么?与servlets类似,portlets是部署在容器内用来生成动态内容的web组件。从技术角度讲portlet是一个实现了javax.portlet.Portlet接口的类,它被打包成war文件格式部署到portlet容器里。Portlets与servlets对比Portlets在以下方面与servlets相似1. portlets由特定的容器管理。2. portlets生成动态内容。3. portlet的生命周期由容器管理。4. portlets通过请求/响应模式与web客户端交互。Portlets在以下方面与servlets相异1. portlets只能生成标记段,而不是整个文档。2.portlets没有可供直接访问的URL地址。不过你还是能够让别人通过URL访问到portlet,你可以把包含该portlet的页面的URL发给他。3.portlets不能随意地生成内容,这是因为portlet生成的内容最终要成为portal页面的一部分。如果portal服务器要求的是html/text类型,那么所有的portlets都应生成html/text类型的内容。再比方说,如果portal服务器要求的是WML类型,那么所有的portlets都应生成WML类型的内容。Portlets提供的附加功能1.设置参数的持久化存储portlets提供了一个PortletPreferences对象用来保存用户的设置参数。这些参数被存入一个持久化数据库,这样服务器重启后数据依然有效。开发者不必关心这些数据存储的具体实现机制。2.请求处理portlets提供了更为细粒度的请求处理。对于用户在portlet上动作时向该portlet发出的请求(一种称为活跃期的状态),或者因用户在其它portlet上动作而引发的刷新页面请求,Portal服务器提供了两种不同的回调方法来处理。3. Portlet模式portlets用模式的概念来表示用户在做什么。在使用mail应用的时候,你可能会用它来读信、写信或检查信件这些都是mail应用的预定功能,Portlets通常以VIEW模式提供这些功能。但还有一些活动,像指定刷新时间或(重新)设置用户名和密码,这些活动允许用户定制应用的行为,因此它们用的是EDIT模式。Mail应用的帮助功能用的是HELP模式。如果仔细想想其实这里面并没有什么新东西,它们反而大部分都是普通的业务需求。Portlet规范的作用在于它提供了一个抽象层,这才是它对所有与之相关的人最终用户、开发者和管理员的价值所在。作为一个开发者,我会将所有与VIEW模式有关的业务逻辑放入doView()方法,将与应用配置有关的业务逻辑放入doEdit()方法,将与帮助有关的逻辑放入doHelp()方法这就简化了管理员对portlet应用的访问控制管理,因为他只需改变portlet的访问权限就能决定用户能做什么。例如,如果mail应用的一个用户能够在EDIT模式下设定用户名和密码,那么就可以断定他具有EDIT模式访问权限。不妨考虑这样一种情形:我是一个intranet网站的管理员,我的公司买了一个能显示新闻信息的第三方portlet应用,该应用允许用户指定跟踪新闻更新的URL地址,我想借助它为用户显示公司的内部新闻。另一个需求是我不想让用户通过该应用来跟踪任何其它的新闻信息来源。作为管理员,我可以为所有的用户指定一个用于内部新闻更新的URL地址,同时通过改变portlet应用的部署描述符来取消其它人修改该地址的权限。由于所有的portlet应用都具有相似的UI界面,因此采用portlets可使网站对最终用户更具吸引力。如果她想阅读任何一个应用的帮助信息,她可以点击帮助按钮;她也知道点击编辑按钮能让她进入应用的配置屏。标准化的用户界面使你的portlet应用更引人。4. 窗口状态窗口状态决定了portal页面上留给portlet生成内容的空间。如果点击最大化按钮,portlet将占据整个屏幕,成为用户唯一可用的portlet;而在最小化状态,portlet只显示为标题条。作为开发者应当根据可用空间的大小来定做内容。5.用户信息通常portlets向发出请求的用户提供个性化的内容,为了能更加行之有效,portlets需要访问用户的属性信息,如姓名、email、电话等。Portlet API为此提供了用户属性的概念,开发者能够用标准的方式访问这些属性,并由管理员负责在这些属性与真实的用户信息数据库(通常是LDAP服务器)之间建立映射关系。Portal入门及Pluto1.0.1的安装1. Pluto1.0.1的安装首先从/pluto/下载pluto-1.0.1-rc1.zip,新建一目录,如D:Portal把刚下载的pluto-1.0.1-rc1.zip文件解压在其下,展开目录为pluto-1.0.1-rc1执行D:Portalpluto-1.0.1-rc1binstartup.bat启动Pluto,现在可以通过地址http:/localhost:8080/pluto/portal访问Pluto服务器。2.编写并部署HelloPortlet在D:Portal目录下新建一目录,如works,作为工作目录,在其下新建一子目录myapp1建立如下目录结构:myapp1 |-src |-lib |-web |-WEB-INF |-build.xml |-perties其中build.xml的内容如下: !- This target builds the war file for the application by first building the directory structure of the application in $build.home and then creating the war file using the ant task - !- Create the file - perties内容如下tomcat.home=D:/Portal/pluto-1.0.1-rc1webapps.home=D:/Portal/pluto-1.0.1-rc1/webapps 编写HelloPortlets代码如下:/*/* * HelloPortlet2.java * * Created on 2006年8月14日, 上午9:52 */package com.ceun.app;import javax.portlet.*;import java.io.*;import java.util.logging.*;/* */* * * author avk */public class HelloPortlet2 extends javax.portlet.GenericPortlet . public void init() . System.out.println(Portlet2 in myapp1:init); public void render() . System.out.println(Portlet2 in myapp1:render); public void processAction(ActionRequest request, ActionResponse actionResponse) throws PortletException, java.io.IOException . System.out.println(Portlet2 in myapp1:processRequest); public void doView(RenderRequest req, RenderResponse res) throws PortletException, IOException . System.out.println(Portlet2 in myapp1:doView); req.setAttribute(test, String set by SamplePortlet:processAction); res.setContentType(text/html); String jspName = /jsp/hello.jsp; PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(jspName); rd.include(req, res); public void doEdit(RenderRequest req, RenderResponse res) throws PortletException, IOException . System.out.println(Portlet2 in myapp1:doEdit); /*/* res.setContentType(text/html); String jspName = blah.jsp; PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(blah.jsp); rd.include(req, res); */ public void doHelp(RenderRequest req, RenderResponse res) . System.out.println(Portlet2 in myapp1:doHelp); /*/* res.setContentType(text/html); String jspName = blah.jsp; PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(blah.jsp); rd.include(req, res); */ 在web/WEB-INF目录下新建一portlet.xml文件内容如下: My Portlet App HelloPortlet2 My Portlet com.ceun.app.HelloPortlet2 !- TestParameter TestValue

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论