1. Liferay简介: 

官方网站(http://www.liferay.com/)

  1.1 Liferay是什么:   

Liferay是一个开源公司,我们一般谈Liferay是指的Liferay Portal。Liferay Portal始创于2000年的洛杉机,当时是一个非营利性组织。于2004年建立Liferay公司,今天Liferay的办事    处和子公司遍及北美、德国、中国、西班牙和印度等,在全球30多个国家有建立合作伙伴帮助其扩展全球业务。

  EE版和SE版
    EE版是企业版,SE版是社区版。关于企业版和社区版的差异,在Liferay的官方网站上有详细的介绍。
    简单的说就是企业版是更稳定、更可靠、有服务支持、收费的版本;
    社区版是免费的、没有服务支持的、代码是最新的、对稳定必及可靠性不做提供保障的。
    社区版可以在Liferay的官方网站上下载到源码和编译后的运行环境等,
    企业版可以有30天的试用,需要付费后获取源码。

  1.2 Liferay与web: 

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

    完整的Portal通常由Portal服务器、Portlet容器、Portlet组件构成。

    Portlet容器提供Portlet的执行环境, 包含很多Portlet并管理它们的生命周期, 保存Portlet的定制信息。
    Portlet是Java的web组件, 和servlet类似, 是Portal中最重要的组件, 负责在Portal中呈现信息内容,有相应的生命周期。
    一个Portal系统可以由一个或多个Portal页面组成, 一个Portal页面则由一个或多个Portlet小窗口组成

  1.3 Liferay的优点: 

   1. liferay有很多开箱即用的功能:博客、wiki、论坛、日历、内容管理等,并且还有提供完善的用户管理、
        组织管理、权限管理、页面管理等,在没有特殊需求的情况下,可以在不编码或做少量二次开发的情况下构建完整的内部系统
     2. 容易安装和使用,和普通web程序相同。
     3. 开源免费:不需要支付任何费用,是一个开源的Portal框架,如果发现一些功能不能满足自己的需求,
       想要调整部分功能,我们可以自己调整。
     4. 基于标准技术构建:使用的是基于标准的技术,可以最大程度的复用之前学到的技术
     5. 易于与其他系统集成:与其他的portal等
     6. 持续更新:可以持续使用
 

1.4 Liferay的用途: 

  企业内部的信息化系统。可以用来做知识管理系统、企业信息门户系统、信息协作平台、政府电子政务平台、
    企业电子商务平台、各种信息管理系统


2. 开发都需要什么工具(上篇文章有详细的安装文档) 

Eclipse和Tomcat,具体为:
  Eclipse插件
    liferay-ide-updatesite-3.1.0-m2-201702090100.zip
  Liferay SDK
    liferay-plugins-sdk-6.2-ce-ga5-20151118111117117.zip
  Liferay portal和Tomcat
    liferay-portal-tomcat-6.2-ce-ga5-20151119152357409.zip
  Eclipse Noen2
    eclipse-jee-neon-2-win32-x86_64.zip
  JDK 7
    JDK 7
  oracle 11g express和java jdbc驱动包
    OracleXE112_Win64.zip, ojdbc6_g.jar

3. Liferay开发模式:

  在Liferay IDE 2.0中我们创建Liferay插件工程的时候,有以下几个选项:
    Portlet
    Service Builder Portlet
    Hook
    Layout Template
    Theme
    Ext

    1. Portlet:这个是一般做Liferay开发选择的项目,一般说Liferay插件工程,通常都是指的Portlet工程。 它的结构和内容和普通的WEB工程区别不大。
    2. Service Builder Portlet
      这个模式是在Liferay IDE 2.0里面才新加的,其实也不是一个新东西,和第一个Portlet模式基本无差异,差异地方就在于使用此模式建立Portlet插件工程时,会在WEB-INF         生成一      个Service.xml的文件。在第一种Portlet里面,我们也可以加入这个文件。
    3. Hook:这个单词中文可以翻译成钩子。是用于重写或覆盖Liferay的一些默认方法或页面。
      为开发提供了一种在不直修改Liferay核心源码的情况下修改Liferay核心功能的方法。
      http://www.huqiwen.com/2012/10/15/liferay-6-1-development-study-9-hook-brief/

     4. Layout:布局模板,Liferay的布局是可以定制的,如一个页面中是两栏式还是三栏式,每个栏里面又有几行等等,
      可以使用此模式进行快速开发。
      http://www.huqiwen.com/2012/09/25/liferay-6-1-development-study-7-layout/

    5. Theme:主题包。Liferay IDE提供的可以帮助开发人员、设计人员快速开发Liferay主题包的功能,
     通过此模式提供的向导工具等,为主题包的开发大大的提供了便利。
     http://www.huqiwen.com/2012/09/25/liferay-6-1-development-study-8-theme/

    6. Ext:扩展工程的开发方法是Liferay早期版本推荐的开发方法,在6.x版本之后对ext开发模式逐渐不再推荐,
     主要使用Portlet的开发方法。扩展开发可以继承Liferay的Portal的大部分接口方法,
     而Portlet里面可以使用的接口方法均是Services包里面暴露的API。
     但是和Liferay的核心工程耦合太大,当Liferay的版本升级时对Ext工程的影响太大,
     基本需要重新修改。所以一般不推荐使用Ext模式。

    在这些开发模式中,前5种基本上是平级的,一般考虑的顺序为Portlet=Theme=Hook>Ext>基于源码的开发。在实际的项目中,
    一个稍大点的项目上面的开发模式,除了基于源码的开发,其他的一般都会用到。
    比如在我们的项目中一般会存在:
1、多个Portlet工程:按大的模块拆分工程,一个Portlet工程下面包含多个portlet。
2、两个theme工程:一个前台主题、一个后台主题。
3、一个Hook工程:用来对一些内容进行Hook,比如登录、引入JS、一些业务逻辑调整、翻译调整等。
4、一个Ext工程(根据实际情况而言,此工程也不是必须的):对一些Liferay本身的功能进行调整,以更方便项目的进行;

4. 目录结构,都包括哪些

Portlet项目的目录结构:
1、src:这里存储Java相关文件包,
2、service是Service Builder 生成的文件包。
3、web.xml:此web.xml和普通的web工程的web.xml文件一样。
4、build.xml,此文件为ant的构建文件,一般不需要修改继承自SDK。
5、Liferay-plugin-package.properties,此文件为包工程的元数据信息文件,一般开发不需要关注。
6、portlet.xml:portlet定义描述文件,这个文件是标准的portlet 2.0(JSR 268)规范的文件。
在这里定义的信息为portlet的名称、初始化参数、模式类型、portlet的相关信息、权限等。
7、Liferay-portlet.xml:此文件是liferay扩展的portlet的内容,portlet.xml文件里面是标准的Portlet内容,
所有的Portal容器的portlet.xml文件描述、结构都是一样的。
但liferay基于自身平台的需求,又添加了一个Liferay-portlet.xml来扩展portlet的信息。在这里可以看到角色映射,以及Liferay的一些个性化信息
8、liferay-display.xml:此文件是定义相关的portlet是放置在哪个目录下面显示的。
说明:
在Liferay里面,portlet的名称一般不要重复,portlet.xml,liferay-portlet.xml,lifray-display.xml这三个文件之间的关联就是通过portlet 名称做标识进行关联。

 

5. 关于liferay的代码生成器 ServiceBuilder

5.1 ServiceBuilder是什么?

Service Builder是Liferay提供的一种代码生成方案,开发人员只需要编辑一个数据库的实体描述文件(XML),
即可根据此XML文件生成Spring层代码、Hibernate层代码、SQL、SQL索引创建文件、Spring和hibernate的配置文件等,
可以大提高开发人员的效率。简单说就是根据数据库描述文件,生成service层和持久化层的代码,开发人员只需要关注控制层即可。

5.2 ServiceBuilder有什么好处?

1、ServiceBuilder不是必须的,只是Liferay提供的一个代码生成方案,用来和数据库打交道,
自己写JDBC连接、使用JPA、hibernate等都是可以的。
2、即使自己开发不使用ServiceBuilder,还是有必要进行学习的。
因为Liferay源码里面和数据库打交道的业务层、持久层的代码都是基于ServiceBuilder进行的,
学习后有助于理解并掌握Liferay的源码和相关API。
3、Liferay的ServiceBuilder能够加快开发效果。
4、Liferay本身的一些UI标签等,必须要配合ServiceBuilder使用。
5、使用ServiceBuilder可以方便的生成远程访问接口。

5.3 ServiceBuilder生成方法

项目右键-->New-->Liferay Service Builder 就会为项目生成service.xml,在service.xml的overview模式下,可以一一定义下面信息;
a. 定义entities
b. 定义entity的列
c. 定义entities关系
d. 定义排序
e. 定义FINDER方法
定义完成后,项目右键-->Liferay-->Build Services 则会自动生成实体类、数据持久化、服务相关的代码,此时需要将WEB-INF下生成的service
文件夹 设为源文件。

6. 成品展示(demo)

1. 配页面
2. 添加portlet
3. 布局模板
4. 页面类型:嵌入页面