作者:林海滨 (dev2dev ID:linhibin) 摘要 本文着重于从理论与应用的角度,对Bea WebLogic Portal8.1做一个介绍和分析,详细介绍JSR168标准,并对Portal基本原理及经常碰到的问题进行讨论。 PortletSession与HttpSession的关系... Portal简介什么是Portal?Portal是一个基于web的应用程序,它主要提供个性化、单点登录、不同来源的内容整合以及存放信息系统的表示层。 什么是Portlet?Portlet是基于java技术的web组件,它由portlet容器管理、并处理请求,并动态生成输出内容。 Portlet的输出是一个片段,即不是一个完整的页面。 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的字符集编码 设置http header 获取客户端的request Portlets实例如果是在普通的场合下使用,即不是在分布式场合,则每个portal应用就会生成一个portlet实例。而如果是在分布式场合下使用的话,则每个jvm只有一个实例。 Portlet生命周期Portlet接口的四个方法构成一个完整的生命周期:init, processAction,render,destroy public void init(PortletConfig config) throws PortletException; 由portlet容器调用,在将portlet放入服务区前调用。portlet容器在初始化portlet后,直接调用这个方法。 public void processAction (ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException; 由portlet容器调用,用来处理action request。 public void render (RenderRequest request, RenderResponse response) throws PortletException, java.io.IOException; 由portlet容器调用,用来生成输出。 public void destroy(); 将portlet从服务区中删除。 Portlet URLs如何生成Portlet URLRenderResponse.createActionURL RenderResponse.createRenderURL 调用setParameter、setParameters可以用来设置参数. 如何使用Portlet URL开发者不可以对参数进行任何编码,它(编码)是由portlet容器进行的。见下面例子: PortletURL url = response.createRenderURL(); url.setParameter(“customer”,”foo.com”); url.setParameter(“show”,”summary”); writer.print(“Summary”); portlet URL可以包含portlet的模式及窗口的状态,见下面例子: PortletURL url = response.createActionURL(); url.setParameter(“paymentMethod”,”creditCardInProfile”); url.setWindowState(WindowState.MAXIMIZED); writer.print(“ |
|
来自: smoking_boy > 《Portal》