Graph Servlet:用于门户频道的动态图像生成器
作者:Paul Lovvik 和 Beverly Sum
本文档描述了 Graph Servlet 的体系结构,并重点讲述其组件和实现。同时讨论了安装和部署过程、主要实现方面的优缺点以及故障诊断技巧。
目录
- | 体系结构 |
- | 主要组件 |
- | 安装与部署 |
- | 动态图像 |
- | 高速缓存 |
- | 体系结构的优点与缺点 |
- | 故障诊断 |
- | 参考资料 |
- | 关于作者 |
体系结构
该程序包含三个主要组件:
- 驻留在系统类加载器 (
java.awt.ClassLoader
) 中的 Singleton 结构类,它在 Sun ONE Portal Server 和 Graph Servlet 之间共享数据。
- 使用 HTML 和 Java 技术中的 JavaServerPages (JSP) 创建的页面,用以生成频道内容。
- 动态呈现饼形图或条形图的 Java servlet。
图1阐释了体系结构中的请求流。
图1:请求流
图2展示了体系结构的层次。
图2:体系结构
用户与包含控制器的频道通信。视图将动态图像与标准 HTML <img>
标签合并在一起。这个设计围绕以下两个主要难点:
- Sun ONE Portal Server 不能聚合 Java servlet。
- JSP 页面不能生成动态图像,而这些图像正是图形实用程序所必需的。(使用 HTML 是惟一可行的选择) 比如 Time-sheet数据经常地变化并需要不断地升级。
主要组件
本节描述了 Graph Servlet 中的主要组件 —— JSP 页面和 Java 类的组合。
controller.jsp
controller.jsp
是控制器,用于从请求、频道的类 (JSPProvider
) 和用户配置文件 (用于存储任务数据) 中收集信息。收集数据后,controller.jsp
将对这些数据进行处理、排序和调度,以便生成图形。具体来说,controller.jsp
执行以下任务:
- 请求频道名称、将要图形化的活动以及图像的维度。请参见代码示例1-3。
代码示例1:引用 JSPProvider
JSPProvider provider = (JSPProvider)pageContext.getAttribute "JSPProvider"); ProviderContext providerContext = provider.getProviderContext();
代码示例2:从用户配置文件中检索 Collection
属性
newNamesAndTimes = providerContext.getCollectionProperty(channelName, "activities");
代码示例3:从 HttpServletRequest
中检索参数
String activityName = (String)request.getParameter(channelName + "-activity");
注意:Sun ONE Portal Server 6 会将一个频道名称的请求参数传送给当前显示的所有频道。因此,命名时一定要采用 channel_name-parameter_name命名约定,例如,ActivityChannel-activity
,这样便可以将每个请求仅应用于一个频道,而不是多个频道。
- 将活动数据置入
HashMap
以便修改。
- 将数据置入
ActivityElement
数组以进行排序和颜色指定。
- 将数据放入会话和
Singleton
中使之可以存取。
- 适时地添加和删除活动数据。
代码示例 4:将数据置入 HttpSession
session = request.getSession(true); session.putValue("timesheet",elements);
代码示例 5:将数据置入 Singleton
DataFactory.setData(request, elements);
最后,controller.jsp
将按照用户输入确定是显示主视图还是显示图形视图,并将 <img>
标签插入到生成的 HTML 内容中。
main.jsp
main.jsp
显示以下数据,即输出经 controller.jsp
处理和排序后的数据:
- 以表格形式显示活动名称和持续时间。
- 用以选择和删除活动的复选框。
- 用于输入或修改当前活动数据的表单。
- 条形图或饼形图的缩略图;请参见代码示例 6。
代码示例 6:为饼形图添加缩略图
<a href="<dtpc:getDesktopURL/>?<%=channelName%>- view=graph.jsp&<%=channelName%>-style=Pie"><img src="/graph/graphController?width=100&height=100&style=Pie"></a>
- 两个按钮,标签分别为 Add 和 Delete
- 一个 HTML 链接,标签为 Refresh,用于重新载入主视图
graph.jsp
graph.jsp
执行以下任务:
- 根据用户的输入确定是显示条形图还是显示饼形图。
- 为 HTML 表示方法将颜色对象转换为红-绿-蓝 (RGB) 十六进制字符串。
- 显示以下内容:
- 根据用户输入 (在
main.jsp
的两个缩略图中单击任意一个) 显示较大的图形视图。
- 活动的颜色编码表。
- 一个标签为 Back to Main P
- 根据用户输入 (在