Graph Servlet:用于门户频道的动态图像生成器

本文介绍了Graph Servlet,一个用于Sun ONE Portal Server的动态图像生成器,用于创建门户频道的饼形图和条形图。文章详细阐述了其体系结构、主要组件,包括Singleton结构、JSP页面和Java servlet,以及如何处理数据和显示图形。Graph Servlet通过Servlet解决Sun ONE Portal Server不能聚合Java servlet和JSP无法生成动态图像的问题。
摘要由CSDN通过智能技术生成

Graph Servlet:用于门户频道的动态图像生成器

作者:Paul Lovvik 和 Beverly Sum

使用 Java Servlet API,可以为门户构建多种简单实用的实用程序。例如,Graph Servlet 在 Sun ONE Portal Server 6 的自定义频道中动态地图形化数据。

本文档描述了 Graph Servlet 的体系结构,并重点讲述其组件和实现。同时讨论了安装和部署过程、主要实现方面的优缺点以及故障诊断技巧。

目录

体系结构
主要组件
安装与部署
动态图像
高速缓存
体系结构的优点与缺点
故障诊断
参考资料
关于作者

体系结构

该程序包含三个主要组件:

  • 驻留在系统类加载器 (java.awt.ClassLoader) 中的 Singleton 结构类,它在 Sun ONE Portal Server 和 Graph Servlet 之间共享数据。

  • 使用 HTML 和 Java 技术中的 JavaServerPages (JSP) 创建的页面,用以生成频道内容。

  • 动态呈现饼形图或条形图的 Java servlet。

图1阐释了体系结构中的请求流。

图1:请求流程

图1:请求流

图2展示了体系结构的层次。

图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. 请求频道名称、将要图形化的活动以及图像的维度。请参见代码示例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,这样便可以将每个请求仅应用于一个频道,而不是多个频道。

  1. 将活动数据置入 HashMap 以便修改。

  2. 将数据置入 ActivityElement 数组以进行排序和颜色指定。

  3. 将数据放入会话和 Singleton 中使之可以存取。

  4. 适时地添加和删除活动数据。
请参见代码示例 4 和代码示例 5。

代码示例 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 执行以下任务:

  1. 根据用户的输入确定是显示条形图还是显示饼形图。

  2. 为 HTML 表示方法将颜色对象转换为红-绿-蓝 (RGB) 十六进制字符串。

  3. 显示以下内容:

    • 根据用户输入 (在 main.jsp 的两个缩略图中单击任意一个) 显示较大的图形视图。

    • 活动的颜色编码表。

    • 一个标签为 Back to Main P
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值