Portlet简述
一、Portlet是什么?
Portlet是基于java的web组件,由portlet容器管理,并由容器处理请求,生产动态内容。Portals使用portlets作为可插拔用户接口组件,提供信息系统的表示层。作为利用servlets进行web应用编程的下一步,portlets实现了web应用的模块化和用户中心化。 portlet规范,即jsr(Java Standardization Request )168/268,是为了实现portal和portlet的互操作。它定义了portlet和portlet容器之间的和约,让portlet实现个性化、表示和安全的api集。规范还定义了怎样在portlets应用中打包portlets。(引自百度百科:http://baike.baidu.com/view/58961.htm)
Liferay是portlet规范的实现,对于portlet规范实现的主流产品还有IBM、Oracle等的Portal产品,主流产品的详细可以参看:http://www.huqiwen.com/2012/06/11/what-is-liferay/ 此篇文章中关于Liferay市场地位处的图片。很以很多时候我们将Liferay称为一个Portal容器,也就是一个提供Portlet运行的环境。
二、创建一个Portlet
1、基于上一节的Study这个portlet工程的基础。点击Liferay IDE上的liferay工具栏,有三个按钮,点击中间按钮,New Liferay Portlet。如下图,点击下一步。

Portlet plugin project:这里选择要创建的portlet属于哪个插件工程。
Source folder:类的放置位置,一般默认。
Portlet Class:要创建的Portlet的控制类的名称,可以将此类看作Struts中的Action类。
Java package:包名。
Superclass:选择要继承哪个类。一般默认,也就是MVCPortlet。下面这几个类的关系如下:MVCPortlet是LiferayPortlet的子类,LiferayPortlet是GenericPortlet的子类。在MVCPortlet中封装了一些方便开发的方法,所以一般使用MVCPortlet,如果有特殊需求可以使用他们的父类。
2、在此步骤看到的是Portlet的相关信息,如模式,JSP位置等,此步骤是portlet.xml文件的可视化编辑,此步骤的所有选项都可以通过编辑portlet.xml完成。点击下一步。

Porltet Info:这里显示的是Porltet的名称,显示名称,标题等。一般默认,不需要修改。
Portlet Modes:这里是portlet的模式,View、Edit、Help这三种模式,是portlet规范里面定义的。
Liferay Portlet Modes:看名知义,Liferay Portlet模式。一般默认即可。Portlet默认的三种模式,Liferay认为不能满足实际的需求,所以又新增了这几种模式。如果选择多个模式,就可以在portlet的设置里面看到,可以通过设置进行切换,方便进行一些特殊需求,如:config可以用来开发可配置Porltet,管理员可以为指定的Portlet定制相关的参数等。
JSP folder:JSP的存放位置,一般默认的命名是html/porltet名称,一般默认即可。html是相对于docroot的,完整路径是docroot/html/demo/view.jsp。
Create resource bundle file:绑定资源文件,主要是国际化。如果想要porltet的名称是中文的,测必须使用资源文件,liferay推荐工程中的所有文字描述类的内容都使用资源文件来定义,这样方便国际化,也能避免出现一些可能的乱码问题。这里先不选,后面详讲国际化。
3、此步骤是Liferay-portlet.xml和liferay-display.xml的可视化编辑。点击完成即可。

Icon:此portlet的图标。
Allow mutiple instaces:是否允许在同一个页面中有多个porltet的实例,默认为否。
CSS:当前porltet的自定义CSS。一般默认。
JavaScript:当前portlet自定义JS。一般默认。
CSS classname:当前portlet的命名空间,防止CSS和其他porltet冲突。
Category:当前的portlet,显示在哪个分类下面,这里是Liferay-display.xml文件的可视化编辑。
三、MVCPortlet的简单使用
可以看到在工程的com.huqiwen.study包下面生成了一个Demo的java文件,如果只是让portlet显示/html/demo/view.jsp里面的内容,则不需要在Demo.java文件里面添加内容。如果需要让view.jsp后从台初始化一些信息,则需要重写doView文法。view模式显示时调用doView方法,edite模式显示时调用doEdite方法,config模式显示时调用doConfig方法,依此类推。
在此大部分情况下可以将renderRequest当然HttpServletRequest使用。如果要转换可以通过PortalUtil.getHttpServletResponse(portletResponse)来进行转换。
可以使用renderRequest.setAttribute(arg0, arg1)方法,在前台页面通过JSTL等进行取值。
这里不详述,和普通的WEB程序基本一样。
四、其他
在二里面创建的内容都可以通过修改portlet.xml,liferay-portlet.xml,liferay-display.xml等来进行修改调整。创建向导包含的只是一些最通用的内容,一些高级的参数还需要通过修改porltet.xml和liferay-portlet.xml来完成。
通过向导默认porltet的view展现的JSP命名为view.jsp。此名称可以在docroot下面修改成相应的内容,实际开发中建议命名中和业务相关的,方便后期查找识别,如用户的可以命名成userView等,修改名称的同时需要修改Porltet.xml里面init-param对应的名称,否则会出现找不到页面的情况。
Portlet简述的更多相关文章
- 简述 OAuth 2.0 的运作流程
本文将以用户使用 github 登录网站留言为例,简述 OAuth 2.0 的运作流程. 假如我有一个网站,你是我网站上的访客,看了文章想留言表示「朕已阅」,留言时发现有这个网站的帐号才能够留言,此时 ...
- JavaScript单线程和浏览器事件循环简述
JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...
- Design Patterns Simplified - Part 3 (Simple Factory)【设计模式简述--第三部分(简单工厂)】
原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part3-factory/ Design ...
- Android网络定位服务定制简述
Android 添加高德或百度网络定位服务 Android的网络定位服务以第三方的APK方式提供服务,由于在国内Android原生自带的com.google.android.gms服务几乎处于不可用状 ...
- 《Entity Framework 6 Recipes》翻译系列 (1) -----第一章 开始使用实体框架之历史和框架简述
微软的Entity Framework 受到越来越多人的关注和使用,Entity Framework7.0版本也即将发行.虽然已经开源,可遗憾的是,国内没有关于它的书籍,更不用说好书了,可能是因为EF ...
- 简述ASP.NET MVC原理
1.为什么ASP.NET需要MVC? 因为随着网站的的数量级越来越大,原始的网站方式,这里指的是WebForm,在运行速度和维护性方面,以及代码量上面,越来越难以满足日益庞大的网站维护成本.代码的重构 ...
- Design Patterns Simplified - Part 2 (Singleton)【设计模式简述--第二部分(单例模式)】
原文链接: http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part-2-singleton/ De ...
- 【翻译】设计模式学习系列1---【Design Patterns Simplified: Part 1【设计模式简述:第一部分】】
原文链接:http://www.c-sharpcorner.com/UploadFile/19b1bd/design-patterns-simplified-part1/ Design Pattern ...
- Android开发3:Intent、Bundle的使用和ListView的应用 、RelativeLayout(相对布局)简述(简单通讯录的实现)
前言 啦啦啦~博主又来骚扰大家啦~大家是不是感觉上次的Android开发博文有点长呢~主要是因为博主也是小白,在做实验的过程中查询了很多很多概念,努力去理解每一个知识点,才完成了最终的实验.还有就是随 ...
随机推荐
- css 自动换行 [英文、数字、中文]
white-space:normal;overflow: auto;table-layout:fixed; word-break: break-all;
- autolayout autoresizing
WWDC 2012 Session笔记——202, 228, 232 AutoLayout(自动布局)入门 这是博主的WWDC2012笔记系列中的一篇,完整的笔记列表可以参看这里.如果您是首次来到本站 ...
- java判断身份证有效性
import java.util.Calendar; public class CertNoUtil { public static boolean vIDNumByRegex(String idNu ...
- Oracle、SQL Server、MySQL分页方法
测试用例:查询TEST_TABLE表中TEST_COLUMN列的第10-20条数据 1,Oracle分页方法 SELECT A.* FROM ( SELECT ROWNUM ROWNO, B.* FR ...
- asp.net 防止按钮重复提交
1.将按钮属性设置如下: <asp:Button ID="btConfirm" runat="server" Text="Confirm&quo ...
- 靶形数独(codevs 1174)
1174 靶形数独 2009年NOIP全国联赛提高组 时间限制: 4 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Descri ...
- Runtime.getRuntime().exec()
Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象 的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实 ...
- localStorage的使用
HTML5中提供了localStorage对象可以将数据长期保存在客户端,直到人为清除. localStorage提供了几个方法: 1.存储:localStorage.setItem(key,valu ...
- Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建
1.开发工具使用: MyEclipse或Eclipse,数据库使用Oracle.需要用到的软件有Zookeeper(注册中心),Tomcat(Web容器)和Maven(包管理). 2.初始环境配置: ...
- mysql TIME_WAIT
http://www.th7.cn/system/lin/201404/53762.shtml http://kerry.blog.51cto.com/172631/105233/ http://ww ...