portal技术原理解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

portal技术原理解析(Common Portlet Repository)

一。在看这篇文章之前你可能需要以下知

1.RequestDispatcher.forward()方法

RequestDispatcher接口所定义的forward()方法可以将HTTP请求转送给其他Web资源(例如Servlet、JSP或HTML)进行处理,并产生HTTP回应。

调用forward()方法时必须注意下列三点:

*在HTTP回应被“确认”(committed)以前才能调用forward()方法(这里的“确认”是指将HTTP回应的内容主体送回用户端),否则将拋出IllegalStateException异常。

*调用forward()方法后,原先存放在HttpResponse对象中的内容将会自动被清除

*request.getRequestDispatcher(url).include(request, response)就是转向指定url的意思

2.RequestDispatcher.include()方法

RequestDispatcher接口的include()方法与forward()方法非常类似,惟一的不同在于:利用include()方法将HTTP请求转送给其他Servlet后,被调用的Servlet虽然可以处理这个HTTP 请求,但是最后的主导权仍然是在原来的Servlet。换言之,被调用的Servlet如果产生任何HTTP回应,将会并入原来的HttpResponse对象。

mon Portlet Repository是一个资源库,他包含了很多模块,可以提供个用户选择。每一个Common Portlet Repository中的模块都由Portlet Deployment Discriptor来定义。而用户的选择将会由Personal Portal Config这个文件来保存。在用户下次登录时,系统自动读取Portlet ID ,提取信息显示用户的界面。

二。下面是转载的一篇关于portal原理的文章:(/topic/7005)

1.Portal用例

读者可以在下面三个网站上注册自己的用户,体会Portal的功能。

/

My MSN的功能最灵活强大,用户可以任意拖放操作栏目(column)和内容版块(content)的位置和个数。

My Liferay只能选择固定的栏目(column)布局,但可以在本栏目(column)内移动内容版块(content)的位置。

My Yahoo只能选择固定的栏目(column)布局,而且不能移动内容版块(content)的位置。

Portal的结构分为三层。

(1) Page

(2) Column,或者称为Pane

(3) Content,或者称为Portlet

我们来看看Portal的整个操作流程。

(1) 每个Column的下方都有一个[Add Content]按钮,让用户选择加入自己喜欢的内容。

从这里,我们知道,Portal系统里面有一个公用的Common Portlet Repository,供用户选用。

JSR168 Portlet规范里面定义了Portlet Deployment Discriptor。Common Portlet Repository以这个Portlet Deployment Discriptor的格式存放。

开源项目JetSpeed的XReg文件用来存放Common Portlet Repository的定义。

(2) 加入Content之后,用户的Page和Column里面就多了这个Content。下次用户登陆的时候,就会看到自己订制的Portal版面。

从这里,可以看出,Portal系统会纪录用户的个人Portal配置信息–User Portal Config。开源项目JetSpeed的PSML文件用来存放User Portal Config的定义。

------- 综上。

Add Content的整个流程为:

Common Portlet Repository --> Add Content --> Personal Portal Config

Display Portal的整个流程为:

从Personal Portal Config读取用户配置的Portlet ID --> 根据Portlet ID,从Common Portlet Repository查找详细的Portlet定义--> 根据这个详细的Portlet定义显示这个Portlet。

2.Portal实现

我们考虑如何用Java来实现Portal。

2.1 Dynamic Include

首先,我们采用最简单的思路,我们用100个JSP文件(1.jsp, 2.jsp, 3.jsp, …100.jsp等),代表100个Portlet。

用户页面MyPage.jsp包含用户选定的多个Portlet。

现在,假设用户选取的Portlet为1.jsp, 3.jsp, 7.jsp等3个Portlet,那么我们如何在MyPage.jsp 中显示这些Portlet?最直观的做法是,用jsp:include。比如:

相关文档
最新文档