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文件)里控制逻辑。
下面是该文件的部分源代码,仅供参考。
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/193666.html