liferay官网:https://www.liferay.com/

中文官网:   https://www.liferay.com/zh/downloads-community

                     https://liferay.dev/projects

什么是Portal?

Portal(门户):原意是指正门、入口,现多用于互联网的门户网站和企业应用系统的门户系统。

公共门户(Public Portal)主要指腾讯、新浪、网易等这样的门户网站,他们可服务于广泛的社会群体,为用户提供了检索、分类的个性化定制服务,这类门户被称为Public Portal。

垂直门户(Vertical Portal)针对某一行业构建的门户网站,包括这个行业的产、供、销等供应链以及周边相关行业的企业、产品、商机、咨询类信息的聚合平台。例如:专注于IT领域的“中关村在线”,专注于财经的“和讯网”,专注汽车的“汽车之家”等等都是典型的垂直门户。

企业信息门户(Enterprise Information Portal)企业信息门户是帮助企业用户及员工能够通过统一的入口找到分布于企业内外部的各类信息资源。

另外,也有人这样分:个人门户、学术门户、政府/区域门户、垂直门户、协作门户、B2B门户、C2C门户。

 

Portal是基于Web的,以“应用整合”和“消除信息孤岛”为最终目的,提供单点登录、内容聚合、个性化门户定制等功能的综合信息系统。

Portal由PortletPortlet容器Portal服务器三部分组成。如下图所示:

liferay架构 liferay官网_服务器

Portal服务器

Portal服务器是容纳Portlet容器,支持Portlet呈现的普通或者特殊Web服务器。Portal服务器通常会提供个性化设置、单点登录内容管理信息发布权限管理等功能,支持各种信息数据来源,并将这些数据信息放在网页中组合而成,提供个性化的内容定制,不同权限的浏览者能够浏览不同的信息内容。如下图所示:

liferay架构 liferay官网_服务器_02

什么是Portlet

一个Portlet是以Java技术为基础的Web组件,由Portlet容器所管理,专门处理用户的信息请求以及产生各种动态的信息内容

Portlet为可插拔式的客户界面组件,通过组合Portlet,可以呈现为一个信息系统。

这些由Portlet产生的内容也被称为片段,而片段是具有一些规则的标记(HTML、XHTML、WML),而且可以和其他的片段组合而成一个复杂的文件。一个或多个Portlet的内容聚合而成为一个Portal网页。而Portlet的生命周期由Portlet容器管理控制。

liferay架构 liferay官网_下载地址_03

 

liferay架构 liferay官网_liferay架构_04

 

客户端和Portlet的互动是由Portal通过典型的请求/响应方式实现,用户会和Portlet所产生的内容互动,比如,用户提交一个表单,Portal将会收到Portlet的请求,将这个请求处理转向到目标Portlet。这些Portlet产生的内容可能会因为不同的使用者而有不同的变化,完全是根据用户对于这个Portlet的设置。

Portlet与Portal的关系:

 

liferay架构 liferay官网_html_05

Portlet容器:

 提供执行环境

 Portlet容器提供Portlet运行的上下文环境,包含很多Portlet并管理它们的生命周期,并持久化portlet的定制信息(preference)。

 

 从Portal接受请求,传递给容器中的Portlet

 Portlet容器接收到来自Portal的请求后,传递给容器中的Portlet执行。Portlet容器不负责组合Portlet产生的信息内容,此工作由Portal处理。Portal和Portlet容器可以放在一起视为同一个系统的组件,或分开为两个独立的组件。

 

 普通Servlet容器的扩展

 Portlet窗口是普通Servlet容器的扩展,所以一个Portlet容器可以构建于一个已经存在的Servlet容器之上,或者实现Servlet容器的全部功能。无论Portlet怎么实现,它的运行环境总是假定它支持Servlet规范。

Portlet与Servlet的关系:

相似之处:

  √ portlets也是Java技术的web组件

  √ portlets也是有特定的container在管理

  √ portlets可以动态产生各种内容

  √ portlets的生命周期由container所管理

  √ portlets和客户端的互动是通过request/response的机制

差别:

  √ Portlet只产生markup信息片段,不是完整的网页文件。而Portal会将所有的Portlet markup信息片段放到一个完整的Portal网页。

  √ Portlet不会和URL有直接的关系,客户端必须通过portal系统才能和Portlet互动。

  √ Portlet有一些定好的request处理,action request以及render request。

  √ Portlet默认定义Portlet modes及窗口状态可以指出在网页中该Portlet的哪个功能正在执行及现在的状态

  √ Portlet可以在同一个portal网页之中存在多个

Portlet拥有而Servlet没有的功能:

  √ Portlet能够存取及存储永久配置文件及定制资料

  √ Portlet可以存取使用者数据

  √ Portlet具有URL的重写功能,连接在文件中动态合建允许portal server不用去知道网页中片段如何在建立连结及动作。

  √ Portlet可以存储临时性的数据在Portlet session之中,拥有两个不同的范围:application-wide scope及Portlet private scope。

Portlet不具有一些功能,但是Servlet却有提供:

  √ Servlet具有设置输出的文字编码(character set encoding)方式

  √ Servlet可以设置HTTP输出的header

  √ Servlet才能够接受客户对portal发出的URL请求

 Portlet的生命周期

 

liferay架构 liferay官网_html_06

 

 

liferay架构 liferay官网_liferay架构_07

Portlet规范中定义的相关对象:

■ GenericPortlet

  ☞ 实现了Portlet和PortletConfig接口,提供了doView、doEdit、doHelp三个方法用于响应三种标准portlet状态的RenderRequest,并提供一些方法可以方便获取其他信息。

■ PortletConfig

  ☞ 可以用于获取Portlet.xml定义的初始化参数和资源绑定

■ PortletURL

  ☞ 用于产生Portal中的URL,包括actionURL和renderURL,由RenderResponse.createActionURL()和RenderResponse.createRenderURL()方法生成。

■ PortletMode

  ☞ 包括VIEW、EDIT、HELP三个预定义常量,可以通过PortletRequest对象获得当前Portlet的模式,并可以通过ActionResponse对象更改当前Portlet的模式

■ WindowState

  ☞ 包括MAXIMIZED、MINIMIZED、NORMAL三种状态,可以通过PortletRequest对象获得当前窗口的状态,并可以通过ActonRequest对象更改当前窗口的状态

■ PortletContext

  ☞ 提供当前Portlet的上下文信息,并可以获得PortletRequestDispatcher来进行分发

■ PortletRequest

  ☞ 包括ActionRequest和RenderRequest两个实现,提供客户端请求的信息

■ PortletResponse

  ☞ 包括ActionResponse和RenderResponse两个实现,可以对请求的相应进行设置,需要注意的是,ActionResponse和RenderResponse两个实现的差别还是比较大的,参考API文档

■ PortalContext

  ☞ 可以获得当前PortletContainer的一些信息

■ PortletPreferences

  ☞ Preference对象被设计用来实现用户的个性化设置,可以针对用户持久化一些数据,非常有用的特性

■ PortletSession

  ☞ 具有APPLICATION_SCOPE和PORTLET_SCOPE两种范围

 

Liferay介绍

liferay架构 liferay官网_服务器_08

 

 

liferay架构 liferay官网_服务器_09

 

 

liferay架构 liferay官网_下载地址_10

 

 

liferay架构 liferay官网_liferay架构_11

 

 

liferay架构 liferay官网_下载地址_12

 

 

liferay架构 liferay官网_liferay架构_13

 

 

其他相关资源

  1. 官方文档《liferay-administrator-guide》和《liferay-developer-guide》,英文,下载地址http://www.liferay.com/documentation/liferay-portal/6.1/user-guide
  2. 《PortletSpec_20.pdf》英文版,Portal2.0 的标准,即JSR286标准,深入研究的话建议仔细看,很多Liferay官方文档中没有得到解答的问题在这里都可以得到答案。
  3. 《Liferay Themes 主题开发》英文,做二次开发避免不了要了解主题开发的,下载地址http://ishare.iask.sina.com.cn/f/23494101.html
  4. 如果你觉得上述文档是天书或者太厚,可以尝试本人整理的《Liferay 6.0.5开发指南综合版 v1.0.1》中文,个人觉得用于快速了解挺不错,下载地址http://ishare.iask.sina.com.cn/f/23606997.html
  5. 《Liferay Portal CE 6.0.6 安装教程文档》中文,下载地址http://ishare.iask.sina.com.cn/f/23616349.html
  6. 《Liferay Portal CE 6.0.6 安装教程录像》,下载地址http://ishare.iask.sina.com.cn/f/23616270.html,觉得看文档太没意思的,看以看下这个。请使用《屏幕录像专家》的LXE播放器播放,下载地址http://ishare.iask.sina.com.cn/f/33356633.html
  7. 《Liferay 数据结构 中文》下载地址http://ishare.iask.sina.com.cn/f/33355474.html
  8. 《Liferay 权限结构 中文》下载地址http://ishare.iask.sina.com.cn/f/33356702.html
  9. 《Portlets in Action》官方推荐的教程,请自行搜索。

 

LiferayWorkspace-202009231346-windows-installer.exe

附:安装过程如下:

第1步:

liferay架构 liferay官网_下载地址_14

 

 

 

 第2步:

liferay架构 liferay官网_html_15

 

 

 

 第3步:

liferay架构 liferay官网_liferay架构_16

 

 

 

第4步:

liferay架构 liferay官网_服务器_17

 

 

 

第5步:

liferay架构 liferay官网_html_18

 

第6步:

liferay架构 liferay官网_html_19

 

 

 

第7步:

liferay架构 liferay官网_服务器_20

 

 

第8步:

 

 

liferay架构 liferay官网_服务器_21

 

 

 

第9步:

liferay架构 liferay官网_下载地址_22

 

 

 

第10步:

liferay架构 liferay官网_liferay架构_23

 

 

 

最后,安装完毕,看到工作区目录:

liferay架构 liferay官网_liferay架构_24