`

Liferay Portal的相关总结(二)

 
阅读更多

Portal 与 Portlets

三、开始正题

言归正传,要使用Liferay Portal做开发,首先必不可少的要关顾的网站是其官方网站:

http://www.liferay.com/

到了首页,比较醒目的位置是这本书的购买信息:

关于Liferay <wbr>Portal的相关总结(一)鈥斺擯ortal <wbr>与 <wbr>Portlets

    Liferay in Action 不错,就是这本书,写得不错,我的portal就是看这本书入门的,但是我承认我没花钱,能下载到免费的版本为什么要花钱呢?虽然是这样,请允许我在这里表示一下我对作者的尊敬,真的,谢谢他。这本书写的真的好极了。

    虽然我不是什么大神级的人物,但是我想把我这些日子研究portal的一些成果总结成一篇文章,供大家参考,省得很多刚刚接触portal的童鞋像我刚开始那样迷茫的在互联网海量的数据中穿梭,收获甚微。

    我这个人写东西讲究一个逻辑性,这里我将我写这篇文章的思路解释一下:首先我想用一个小章节介绍一下portalportlet的特点。如果没有这个打底,我相信后面的内容你会看的很晕。后面的内容准备按照传统的SSH分层的结构,自下向上(也就是数据库,DAO,业务逻辑,前台界面),一层一层展示代码,其间也夹杂着我的一些不成熟的看法,水平有限,如有错误还望各位看官多担待。

四、PortalPortlet

          portal的特点在于一个portal,就是一个门户页面中,可以嵌入多个portlet,liferay portal能够对每个portlet进行权限控制,对于多个portlet的页面布局进行调整等等。

    下面就要介绍一下我所了解的portal与众不同的特点了。

    首先portal页面是由很多个portlet构成的,如下图所示,这就是我做的一个portal页面的截图:

关于Liferay <wbr>Portal的相关总结(一)鈥斺擯ortal <wbr>与 <wbr>Portlets

可以看到这个页面由很多小的窗体组成,这些小窗体就是传说中的portlet,这样portal页面与portlet的关系就清楚了,一个或多个portlet组成portal页面。

其实从portlet这个名字我们很容易就想到了跟它名字上很接近的技术——servlet,其实这个portletservlet还真是很相像。

 

相同点:

1>     portlet也同样是java web 技术组件

2>     portlet也是有特定的container在管理

3>     portlet也可以动态的生成各种内容

4>     portlet的生命周期由container进行管理

5>     portlet与客户端的互动也是通过request/response进行的

 

不同点:

1>     portlet只是整个页面中的一个碎片,有时需要多个portlet协同才能将信息进行完整的展现。

2>     portlet不直接与URL发生关系

3>     客户端必须通过portal系统才能和portlet进行交互

4>     portlet默认定义portlet的窗口状态,并指出各个状态对应的功能。

5>     一个网页中可以存在零个到多个portlet

首先来看一个最基本的portlet的例子,编程嘛,最简单的例子嘛,还是从Hello World开始吧,别坏了规矩(其实难的我不太会,呵呵~)。

 

首先从整体来看,其实portlet的整个生命周期与servlet不尽相同,但是可以利用servlet的生命周期来理解它,既然和servlet的周期相似就让我们先来回顾一下servlet的周期。servlet的生命周期应该算是学习Java Web 编程的入门课程了,生命周期更应该是熟得不能再熟了,init()进行初始化,service()函数包含该servlet的功能代码段,doGet()doPost()destroy()摧毁函数?这样翻译是不是显得太村炮了……

在讲述portlet的生命周期前应该说明的是,每个portlet都有几种状态,这个状态可以理解成,每个状态都对应着一个jsp页面,而通过每个窗体的标题栏上的小扳手(wrench)可以进行状态的切换。然而利用这个进行窗体中页面的切换显得确实很麻烦,所以我不推荐这种办法。portlet默认有三种状态,分别是VIEW(查看态)EDIT(编辑态)HELP(帮助态)。当然在高级的portlet编程中可以自定义portlet状态。这些状态也不是所有用户都可见的,管理员是所有状态可见的,其他用户根据所分配权限的不同,看到的内容也不一样。这里已超出我们这片文章的讨论范围。portlet的生命周期也是这样,每个portlet类通过继承GenericPorlet这个基类,这个基类中定义了如下的这些方法:

 

public void init(); public void init(PortalConfig pc);         portlet初始化方法

protected void doView(RenderRequest , RenderRespose );            portlet查看态的处理方法

protected void doEdit(RenderRequest , RenderRespose);             portlet编辑态的处理方法

protected void doHelp(RenderRequest , RenderRespose);             portlet帮助态的处理方法

protected void doDispatcher(RenderRequest , RenderRespose);       portlet的分发方法

protected void processAction(RenderRequest , RenderRespose);      portlet处理action请求

protected void render(RenderRequest , RenderRespose);             portlet处理渲染请求

最后:

public void destroy();                                                  portlet终止方法

 

 

         下面就列表将servlet生命周期与portlet周期进行比较:

 

 

servlet

portlet

初始化阶段

init();

init();

处理逻辑

service(),doGet(),doPost();

portlet中要处理的请求分为两种,一种是action请求,一种是render请求,然后三种状态分别是ViewEditHelp,分别都有各自的处理函数:(省略参数)

action的请求:    processAction();

render的请求:    render();

view状态的请求:  doView();

EditHelp省略……

释放阶段

destroy();

destroy();

 

说了这么半天理论,来看程序结构,其实跟一般的程序也没什么区别:

关于Liferay <wbr>Portal的相关总结(一)鈥斺擯ortal <wbr>与 <wbr>Portlets
    图中可以看到IDE可能是为了清晰,具体为了什么我也不是很清楚,将程序和其他的部分分开,docroot/WEB-INF/src是在上面的,而docroot其他部分在下面。简要分析一下,docroot是默认的根路径,类似于普通ssh程序的WebRoot文件夹,WEB-INF文件夹不用说了,是整个web应用程序的核心文件夹,其中有业务逻辑的源代码src文件夹,不可避免的web.xml文件,整个web应用程序配置描述文件。剩下的这些带有严重liferay色彩的配置文件,从上到下进行解释,liferay-display.xml文件决定这个应用程序被加入到那个分类中去,所谓分类就是在我们向portal中添加portlet时所选择的分类。如下图:

关于Liferay <wbr>Portal的相关总结(一)鈥斺擯ortal <wbr>与 <wbr>Portlets

这个portal-display.xml文件就决定这个我们构建的这个portlet在上图中的哪个分类中出现。liferay-plugin-package.properties这个文件定义了一些信息,供配置文件使用。liferay-portlet.xml中定义了这个portlet使用的icon图片文件,css文件,js文件信息以及用户权限配置,规定了用户对于这个portlet的访问权限。最后要介绍我们这些配置文件中最重要的portlet.xml文件,这个配置文件可以说是整个portlet配置的核心。

来看个portlet.xml文件的例子:

 

<?xml version="1.0"?>

 

<portlet-app

    version="2.0"

    xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"

> 

    <portlet>

       <portlet-name>Demo</portlet-name>

       <display-name>Demo</display-name>

       <portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>

       <init-param>

           <name>view-jsp</name>

           <value>/view.jsp</value>

       </init-param>

       <expiration-cache>0</expiration-cache>

       <supports>

           <mime-type>text/html</mime-type>

       </supports>

       <portlet-info>

           <title>Demo</title>

           <short-title>Demo</short-title>

           <keywords>Demo</keywords>

       </portlet-info>

       <security-role-ref>

           <role-name>administrator</role-name>

       </security-role-ref>

       <security-role-ref>

           <role-name>guest</role-name>

       </security-role-ref>

       <security-role-ref>

           <role-name>power-user</role-name>

       </security-role-ref>

       <security-role-ref>

           <role-name>user</role-name>

       </security-role-ref>

    </portlet>

</portlet-app>

 

上面是一个我写的简单的portletportlet.xml配置文件全文。看着很简单,是因为我的这个portlet很简单。其实高级的portlet编程中,这个portlet中能够配置的信息有很多,比如说像程序中某个控件的默认值,配置验证程序代码所在位置,i18n资源文件位置信息等等。我这篇文档是portal的入门篇,这些内容显然不在我们的讨论范围之内。就上面的这个比较简单的portlet.xml文件为例,我们分析一个这个最简单的portlet.xml中应该配置什么信息?首先是portlet-namedisplay-name毫无疑问,字面意思,不解释。portlet-class就是我们要用哪个类来处理这个portlet中的业务逻辑,要求全路径(所谓全路径就是要带上包名)。接下来是初始化参数,这个貌似servlet中也有吧,这里不废话了。supports,支持嘛,你懂的。再往下就是portlet的信息嘛。最后是权限配置信息。这个可以说是最为简单的一个portletportlet.xml配置信息。

写到这里我突然有种想写一篇中高级的liferay portal编程的文章,也算是预告一下,大家期待一下吧……

下面要讲的是一个很重要的问题,那就是URL的问题,各位看官中不乏Web程序的高手,Java 语言利用其对于String字符串的强大的操纵能力,来个专业点的词汇,就是manipulate the URL string。而这点在portal程序中就会有问题。为什么呢?因为一个portal页面中会集成零个到多个portlet,而每个portlet都是一个单独的jsp页面,这样,如果我只想要其中某个特定的portlet改变其要显示的页面,要怎么实现呢?有人可能提出不是在portlet.xml中配置的了这个portlet的名字嘛?!使用这个啊……我想说这是个办法,但是portal的接口中不是这么干的,它的办法是自己定义一个PortletURL类,利用Response接口下两个子接口,其总体结构图如下:

关于Liferay <wbr>Portal的相关总结(一)鈥斺擯ortal <wbr>与 <wbr>Portlets在处理渲染的函数中利用RenderResponse接口中的createRenderURL这个方法返回一个PorletURL这个类型的返回值,这个就是portal这个系统自动生成的能够定位到这个特定的portlet中特定页面的URL值,伴随整个URL还可以进行传值和取值的操作,并且这个URL还有一个编码过程,这些我在Liferay Portal中高级编程那篇文章中我会介绍,这里就铺垫一下这个portal的特殊的URL机制,钓一下大家胃口。


分享到:
评论

相关推荐

    liferay portal 开发指南

    ### Liferay Portal 开发指南知识点概述 #### 一、简介 **Liferay Portal** 是一款功能强大的企业级门户平台,支持多种应用集成和技术扩展。它不仅提供了丰富的特性满足企业日常需求,同时也支持高度定制化开发。...

    Liferay Portal performance

    ### Liferay Portal 性能分析 #### 执行摘要 Liferay Portal 被 Gartner 命名为领导者,在 Gartner 魔力象限 (MQ) 中因其功能完整性和投资回报率而受到认可,它是领先的开源企业门户解决方案。Liferay Portal 企业...

    Liferay Portal 5.2开发指南

    #### 二、Liferay Portal 5.2 概览 Liferay Portal 5.2是一个功能强大的平台,它提供了丰富的特性用于构建企业级门户应用。这些特性包括但不限于: - **自定义门户页面**:用户可以轻松地定制门户页面布局。 - **多...

    Liferay_Portal_6.1源码导入到eclipse

    Liferay Portal 6.1 源码导入到 Eclipse 需要下载 Liferay Portal 源码、Liferay IDE、JDK 和 Ant,安装并配置相关环境变量。然后,新建文件夹 D:\liferay,解压缩 Liferay IDE 和 Plugin SDK,配置 Eclipse 和 ...

    Liferay Portal 介绍

    **Liferay Portal 详解** Liferay Portal 是一个开源的企业级门户平台,用于构建、管理和部署Web应用程序和服务。它提供了一套全面的工具,使企业能够整合各种内容、应用和社交功能,以创建个性化的用户体验。...

    Liferay Portal数据库读写说明

    ### Liferay Portal数据库读写说明 #### 一、概述 Liferay Portal是一款广泛使用的开源企业级门户系统,它集成了多种功能模块,如文档管理、博客、论坛等,为企业提供了全面的信息管理和协作平台。本文将根据给定...

    liferay portal模板开发文档

    总结而言,Liferay Portal 模板开发涉及到前端设计、后台配置等多个方面,开发者需要具备一定的 HTML、CSS、JavaScript 基础知识,并熟悉 Liferay 的工作原理和配置方法。通过上述步骤,可以实现对 Liferay Portal ...

    Liferay Portal 权限管理

    总结来说,Liferay Portal的权限管理是一个多层次、灵活的系统,它通过企业管理、组织管理、地区管理、用户组管理和Portlet管理等多个维度,确保了企业资源的安全性和访问控制的精确性。通过对角色的定义和分配,...

    Liferay Portal应用之开发 (转)

    总结,Liferay Portal的开发涉及众多方面,从portlet开发到工作流设计,再到安全权限管理,都需要开发者具备扎实的Java基础和良好的问题解决能力。通过学习和实践,开发者可以充分利用Liferay的特性,为企业构建出...

    Liferay Portal 社区

    其中,“社区”(Community)是Liferay Portal 的核心概念之一,用于组织用户并管理与这些用户相关的权限和内容。 **社区(Community)** 是指由具有共同兴趣或爱好的用户组成的一个集合。在 Liferay 中,用户可以...

    liferay环境的搭建

    它包含了Liferay Portal和集成的Tomcat服务器。 - **Liferay Portal Source**: 可选资源,下载地址为[liferay-portal-src-6.2-ce-ga6]...

    liferay经典书籍8本

    以下是对这8本Liferay经典书籍的知识点总结,旨在帮助读者深入理解并掌握Liferay的核心技术和应用场景。 1. 《Liferay Portal 7.x Development》 这本书详细介绍了Liferay Portal 7.x的开发过程,涵盖了portlet开发...

    liferay门户网站管理员指导手册

    #### 二、Liferay的主要特点 ##### 用户友好特性 - **易于使用的AJAX UI**:通过AJAX技术实现了更加流畅的用户体验,减少了页面加载时间。 - **一键式外观更改**:允许用户轻松地更改门户的主题和布局,无需复杂的...

    LiferayPortal二次开发指南ppt

    总结,Liferay Portal的二次开发涉及众多方面,从portlet开发到服务API的利用,再到主题和布局的定制,每个环节都需要开发者具备扎实的Java基础和对Liferay Portal特性的深入了解。通过不断实践和学习,开发者能够...

    quickstart liferay开发文档

    根据提供的信息,我们可以总结出以下关于“Liferay Portal 4.0 QuickStart Guide”的关键知识点: ### Liferay Portal 4.0 QuickStart Guide #### 一、简介 本快速入门指南旨在帮助那些新接触 Liferay Portal 或...

    liferay-portal-5.2.2

    该资料是本人学习liferay的总结报告, 使用的是5.1.1和5.2.2版本,总结了网上和书中的一些有用信息,并且加入个人对于该技术的一些理解. (绝对原创教程,但主要面向开发者,而不是管理员哈.) 欢迎各位一起交流liferay-...

Global site tag (gtag.js) - Google Analytics