ITPub博客

首页 > 架构设计 > 软件结构 > 百宝箱:几乎所有项目都会用到的Portlet开发

百宝箱:几乎所有项目都会用到的Portlet开发

原创 软件结构 作者:zhengwenping 时间:2018-11-23 17:58:20 0 删除 编辑

1    百宝箱:几乎所有项目都会用到的 Portlet 开发

“常用 Portlet ”指的是,在我做过的超过 50 家的企业门户实施中,几乎每个客户都要求开发的几个 Portlet 。这些 Portlet 有的是公共信息,有的是工具箱,有的是车次查询,有的是天气预报,总之是用户在日常办公生活中最常使用的一些小功能。它们本身涉及的开发量不大,但却依赖于 Portal 开发的一些技巧。

读者掌握了这些 Portlet 的开发,一是为本文 的学习尝试实践,二是你在接手一个 Portal 项目时,可以直接拿这些 Portlet 来用。依据我的经验,这些 Portlet 都是大众客户所喜欢和需要的,所以本文的题目又叫“百宝箱”。

1 .1   开发公共信息相关的 Portlet

1 .1.1   要旨

Portal 系统在用户不登录的前提下,就是一个展现公共信息的网站,唯一不同的是,这个网站的内容是以组件的形式构成的。用专业术语来说,就是整个 Portal 网站是由无数个 Portlet 组成的,每个 Portlet 是一个方面的内容。在现实的开发中,由于已经将自己的公共信息数据化,所以我们只要从数据库中提取这些信息就可以了。下面举了一些例子,这些例子都是在企业门户系统开发中经常碰到的。

这是 IT 应用的一个例子,如图 1-1 所示。

1-1    开发常用的 Portelt (一)

这是 “为您服务”的几个小例子,如图 1-2 所示。

1-2    开发常用的 Portelt (二)

要提取这些公共信息,通常有两种方法。

—  编写 Portlet ,在 Portlet 的数据部分直接读取后台数据库。这样做比较独立,且风格统一,但是会带来巨大的系统开销,所以不建议使用。

—  编写读取公共信息的页面,该页面可以运行在具体的应用服务器上,如 WebSphere WebLogic Tomcat 等。 我们只要编写一个 Portlet ,在 Portlet 中嵌入一个 Iframe ,用来显示这个页面就可以了。

本节主要针对第二种方法来讨论公共信息 Portlet 的开发方法。本节按照开发的步骤一步步介绍,没有主次之分。

1 .1.2   开发步骤

1 .新建地址列表的属性文件

JspURL .properties 的内容是结构化数据,用来存储各新闻页面的 URL 。例如:

2 .在 Portlet 数据 层读取属性文件

GetUrl 用于从 JspURL.properties 属性文件中读取各个新闻页面所在的 URL 。该类的大致内容如下:

我们在 View 页面中嵌入一个 Iframe 并指定它的 URL 属性为从这个类中读到的地址。

OK ,这个公共信息的 Portlet 就算开发完成了,我们把它打包并发布到 Portal 门户系统,完成权限分配,就可以定制并显示在你的门户网站了。

1 .2   开发一个工具箱 Portlet

车次查询、天气预报等公共小工具,是当前门户网站中比较受欢迎的小组件。这里我们以在 Portlet 页面上放置三个小图标,点击时分别进入列车车次查询、航班信息和计算器为例,简单介绍它们的开发方法:

开发这个 Portlet 请遵循以下步骤进行操作。

1 .2.1   使用表格引入图片

1 .2.2   在图片上绘制热点用作链接

1 .2.3   对链接给出事件处理

例如,我们可以对 “天气预报”做如下处理。

通过天气预报 Portlet 可以查看到公司下属单位所在地市以及全国几个主要城市的当天天气情况,如图 1-3 所示。

1-3    开发天气预报的 Portlet

击右侧的 按钮进入编辑页面,如图 1-3a 所示,这个 Portlet 允许每个用户设置预报地点。

1-3a   天气预报 Portlet 允许每个用户设置预报地点

OK ,这个 Portlet View 部分就算处理完成了,至于 Model Controller 部分,可以添加这些事件的处理方法,用来读取实际数据。比如,从指定的 URL 处读取天气预报信息,并存储到一个对象里,写入 Session ,然后在 View 里面显示出来。

1 .3   开发个人日程的 Portlet

1 .3.1   开发要旨

匿名用户打开 Portal 页面时看到的是一个日历, Portal 用户登录后,多出一个“添加日程 / 日程管理”按钮,用户可以在这里添加、管理自己的日程。

1 .3.2   数据库设计

个人日程管理字段比较简单,数据并发处理很少,对数据库要求不高,所以我们选用 Access 。具体的字段设置不再赘述。

1 .3.3   业务流程设计

Portlet 首先试图获取用户 id ,如果 id 为空,则说明用户未登录,此时显示一个日历;如果 id 非空,则显示个人日程。 Portlet 会从数据库中检索此用户 id 的日程条目,然后将有日程的日期变为红色,用户点击该日期时弹出此日程条目。在日程条目上,用户可以编辑自己的日程;用户添加日程时,以 Portal 取得的用户 id 为主键,加入数据库。

具体的业务流程如下。

  通过个人日程的 Portlet 可以了解当前日期及日程安排,如图 1-4 所示。

1-4    个人日程的 Portlet 允许每个人定义自己的备忘录

通过调整年、月可以看到相应的日期。如果该日期有日程安排活动,则会显示不同的颜色,点击该日期就可以看到日程安排情况,如图 1-5 所示。

单击 “新建日程”,会出现如图 1-6 所示的界面,可以添加自己的个人日程。


1-5    有消息提醒的日期会在个人日程上以不同的颜色显示

1-6    可以添加自己的个人日程

用户可以添加日程安排,包括日程标题、起始 / 结束时间、提醒设置、日程内容等。

其中的起始 / 结束时间都可以精确到分钟。“提醒设置”中的“循环提醒”用于设置该信息是以天还是周、月、年等进行循环来显示;“开始时间前 x 分钟弹出提醒 ”是根据用户的设置,在该日程开始前多长时间给用户提醒;“短信提醒”则是通过短信的方式来提醒用户(目前因为短信平台还没有建成,所以此功能暂时不能使用)。当设置完成并保存后,安排日程的日期就会变成浅蓝色,且会在“今日提醒”中显示出来。

日程提醒有三种方式:一是以列表显示;二是滚动提醒,在 “我的工作”页面的“今日提醒”模块中进行滚动提醒;三是弹出窗口提醒,在“开始前 x 分钟弹出提醒 ”设定的时间点(服务器时间),在“我的工作”页面中弹出窗口进行提醒。

1 .3.4   代码实现

1 .显示页面

这里只显示比较重要的部分。

2 .显示日程条目

用户点击有日程提示的日期时,会弹出该日程。

具体编码略,我采用的显示格式如下。

3 .增加日程

单击 “增加日程”,可以为登录用户添加日程。

4 .修改日程

在显示的日程条目上,单击 “编辑日程”,可以修改此日程条目。

1 .3.5   界面美化

为了使日程显示界面清晰、美观,还需要进一步美化,美化的过程本书不再介绍。

1 .4   开发一个 Excel 文件转 txt 的工具 Portlet

这个工具 Portlet 的用途是,很多时候应用系统的一些数据存储在 Excel 表格里,我们需要导出这些数据,例如:用户与用户组信息。

1 .4.1   使用说明

1 )本工具使用了 jxl.jar 包,所以请先将此包加入到 Porltet 类库。当然,你也可以直接在 Tomcat 中调试,那么目标容器是 Tomcat ,则需要将此文件手工复制到 Tomcat 的类库文件夹里。

2 )将主文件 reansfer.jsp 复制到容器目录下,在浏览器里直接访问该页面,程序即执行。

3 )在默认情况下,需要将源文件 *.xls 复制到 C:\ 下,生成的文件名称为: qas_1.txt

4 )如果需要批量转换,或者需要自己选择文件、文件夹,则请自行修改代码。

1 .4.2   代码详解

要开发这个 Portlet ,首先需要到网上下载一个 Excel txt 的控件,然后新建一个 Portlet ,在 Portlet 的显示层( PortletView.jsp 文件)里控制逻辑。

 

下面是该文件的部分源代码,仅供参考。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9116427/viewspace-2221471/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
郑文平,专职从事企业门户(Portal)的咨询、实施、管理、问题诊断、性能调优等超过15年时间,拥有50多个门户项目经验。著有全球唯一一本辅导企业门户项目实施的书籍 《企业门户(Portal)项目实施方略与开发指南》(电子工业出版社,2013年),亦擅长互联网产品的规划设计。

注册时间:2018-11-07

  • 博文量
    24
  • 访问量
    38812