一、优点
(1)以应用整合和消除信息孤岛为最终目的
(2)单点登录
(3)内容聚集
(4)个性化门户聚集
二、组成
(1) Portal 容器
(2)Portal服务器
(3)Portlet
三、Portlet和Servlet比较
相同之处
(1)都是Java组件
(2)都有特定的container
(3)可以动态产生各种内容
(4)生命周期由container管理
(5)和客户端通信是通过request/response机制
不同之处
(1)Portlet只产生markup信息片段,不是完整的网页文件,而portal会将所有的Portlet markup信息片段放到一个完整的Portal网页
(2)Portlet不会和URL有直接的关系
(3)客户端必须通过portal系统才能和Portlet互动
(4)Portlet有一些预定义的request处理。action request以及render request
(5)Portlet默认定义Portlet modes及窗口状态可以指出在网页中该Portlet的哪个功能正在执行及现在的状态。
(6)Portlet可以在同一个portal网页之中存在多个。
(7)Portlet能够存取及储存永久配置文件及定制资料
(8)Portlet可以存取使用者数据
(9)Portlet具有URL的重写功能在文件中去动态建立连结,允许portal server不用去知道如何在网页的片段中建立连结及动作。
(10)Portlet可以存储临时性的数据在Portlet session之中,拥有两个不同的范围:
application-wide scope 及 Portlet private scope
(11)Servlet具有设置输出的文字编码
(12)Servlet可以设置HTTP输出的header
(13)Servlet才能够接受客户对portal发出的URL请求
四、安装
1、简单安装
(1)安装JDK
(2)安装Liferay/Tomcat bundle
(3)Login: test@liferay.com password: test
2、扩展安装
(1)安装Jikes
(2)安装Ant
(3)解压Liferay source code到{portal}
(4)添加一个配置文件release.{username}.properties到{portal}目录下依次执行
ant clean start build-ext
(5)在ext下添加
app.server.{username}.properties
五、二次开发
HelloWorldPortlet
web.xml
Portlet.xml
liferay-portal.xml
liferay-display
部署已经编译好的portlet
(1)继承GenericPortlet
(2)重写doview()和doEdit()方法
res.setContentType("text/html");
res.getWritter().println("HelloWorld!");
(3)Portlet配置
<listener>
<listener-class>com.liferay.portal.servlet.PortletServlet</listener-class>
</listener>
<servlet>
<servlet-name>HelloWorldPortlet</servlet-name>
<servlet-class>com.liferay.portal.servlet.PortletServlet</servlet-class>
<init-param>
<param-name>portlet-class</param-name>
<param-name>com.educhina.portal.HelloWorldPortlet</param-name>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldPortlet</servlet-name>
<url-pattern>/HelloWorldPortlet/*</url-pattern>
</servlet-mapping>
配置portlet独有的
(1) Portlet.xml
主要定义了portlet的初始化信息
portlet-name
display-name
portlet-class
init-param
expiration-cache
supports
portlet-info
security-role-ref
(2) Liferay-portlet.xml
主要定义portlet的模版实例总数是否允许重复定义等功能。
portlet-name
struts-path
use-default-template
instanceable
(3) Portlet-display
主要定义portlet的所属类别
<category name="category.test">
<portlet id="EXT_1"/>
<portlet id="HelloworldPortlet"/>
</category>
JSPPortlet开发流程
(1) 创建目录myjspportlet
(2) 配置Portlet
(3) 配置Portlet实例属性
(4) 定义Portlet名称
(5) 归类Portlet
(6) 创建JSP页面
(7) demo
StrutsPortlet开发流程
(1)配置Portlet
(2)配置Portlet实例属性
(3)定义Portlet名称
(4)归类Portlet
(5)定义Struts页面流
(6)定义tiles页面布局
(7)创建目录library
(8)创建init.jsp
(9)创建view.jsp
(10)创建成功错误页面
(11)创建Action类
(12)测试框架部署