【转】什么是Portal?
什么是Portal?Portal是一个基于web的应用程序,它主要提供个性化、单点登录、不同来源的内容整合以及存放信息系统的表示层。
什么是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,SUN于2003年底制定了JSR168,它定义了portlet标准,并给出了一个实现接口。
Portlets与Servlet的异同?
相同点
基于web应用的java技术
由特定的容器管理
动态生成内容
生命周期由容器进行管理
通过request/reponse进行交互
不同点
portlet只生成片段
portlet并不直接绑定到某一个URL上
portlet通过portal进行交互
portlet可以多次在同一个portal页面上同时出现
portlet优点
能访问到用户配置信息
能在不同的域中存储会话:应用程序级到私有级。
portlet与servlet的关系
前者能调用后者,并且能共享信息,包括:Attributes
portlet容器是servlet容器的扩展
portlet无法做到的事情
设置response的字符集编码
设置httpheader
获取客户端的request
Portlets实例
如果是在普通的场合下使用,即不是在分布式场合,则每个portal应用就会生成一个portlet实例。而如果是在分布式场合下使用的话,则每个jvm只有一个实例。
Portlet生命周期
Portlet接口的四个方法构成一个完整的生命周期:init,processAction,render,destroy
publicvoidinit(PortletConfigconfig)throwsPortletException;
由portlet容器调用,在将portlet放入服务区前调用。portlet容器在初始化portlet后,直接调用这个方法。
publicvoidprocessAction(ActionRequestrequest,ActionResponseresponse)
throwsPortletException,java.io.IOException;
由portlet容器调用,用来处理actionrequest。
publicvoidrender(RenderRequestrequest,RenderResponseresponse)
throwsPortletException,java.io.IOException;
由portlet容器调用,用来生成输出。
publicvoiddestroy();
将portlet从服务区中删除。
PortletURLs
如何生成PortletURL
RenderResponse.createActionURL
RenderResponse.createRenderURL
调用setParameter、setParameters可以用来设置参数.
如何使用PortletURL
开发者不可以对参数进行任何编码,它(编码)是由portlet容器进行的。见下面例子:
PortletURLurl=response.createRenderURL();
url.setParameter(“customer”,”foo.com”);
url.setParameter(“show”,”summary”);
writer.print(“Summary”);
portletURL可以包含portlet的模式及窗口的状态,见下面例子:
PortletURLurl=response.createActionURL();
url.setParameter(“paymentMethod”,”creditCardInProfile”);
url.setWindowState(WindowState.MAXIMIZED);
writer.print(“”);
setSecure方法用来设置是否是https。开源的portal工具:http://www.liferay.com/web/guest/home