没有合适的资源?快使用搜索试试~ 我知道了~
Web图表生成引擎 的设计思路与实现
需积分: 10 3 下载量 104 浏览量
2018-10-31
21:22:24
上传
评论
收藏 782KB DOC 举报
温馨提示
试读
25页
本章提供了一个简单的、被封装成JavaBean的、实现了Web动态图表生成引擎的最基本功能的设计思路及其实现方式。它具有使用和开发都很简单、易于发布/部署、扩展性强(虽然仅仅演示了普通/3D线段图、普通/3D直方图、普通
资源推荐
资源详情
资源评论
第9章 Web图表生成引擎
的设计思路与实现
到目前为止,我们对JFreeChart图表生成引擎已经很熟悉了,感受到了JFreeChart在使
用上的复杂性以及性能上的强大性。那么,我们是否能够设计一个跨平台的、具有类似
JFreeChart的基本功能,但使用简单的Web图表生成引擎呢?对于跨平台,Java当然是最佳
的选择。但是,如何实现Web图表生成引擎呢?想必这是很多读者都非常感兴趣的一个领
域。
本章提供了一个简单的、被封装成JavaBean的、实现了Web动态图表生成引擎的最基
本功能的设计思路及其实现方式。它具有使用和开发都很简单、易于发布/部署、扩展性
强(虽然仅仅演示了普通/3D线段图、普通/3D直方图、普通/3D饼图的生成方法,但可以
轻易地扩展其他风格图表的生成方法)、高性能(最终被转换成Servlet在Web应用服务器
中驻留,不在Web服务器中生成图像文件)、模块化(数据与图表绘制部分的代码分离,
以及可以通过多个生成不同图表的引擎,相互合作而创建更复杂的图表)、跨平台(本图
表生成引擎可以运行于Linux/Unix/Windows/FreeBSD等主流操作系统)等 特点。
9.1 Web动态图表生成引擎的设计思路
通过JFreeChart的学习,相信读者对Web动态图表生成引擎有了非常直观的认识。为
了更简单、直接、清晰地演示图表生成引擎最核心的设计思路,本章我们将以第
7章讲解的线段图、直方图和饼图等相关例程为蓝本,与此同时,我们约定此图表生
成引擎正常工作的前提是:
(1)图表绘制区域(plot)的大小和位置都固定不变,不因整个图表的大小改变而
自动调整图表绘制区域(plot)的大小和位置。
(2)绘制图表所需的数据集结构与第7章的相关例程相同。
我们关注以下几个方面:
图表生成引擎在上述两个前提下可以正常工作。
通过该引擎可以生成不同类型的图表(线段图、直方图、饼图并可任意扩展)。
精通 Java Web 动态图表编程
如何实现模块化,即数据与图表绘制部分的代码分离。
这三点是图表生成引擎的核心问题。
其实,我们在第5章学习了一些如何编写及调用Servlet来生成Web图表的方法,例如
编写了生成三角形(chap05/Fig5.2/Fig.5.2_02/)、水平直方图( chap05/Fig5.2/Fig.5.2
_04/)、登录认证码 1(/chap05/Fig5.6/Fig.5.6_01/)以及登录认证码2(/chap05/Fig5.6/F
ig.5.6 _02/)等Servlet。实际上,这些Servlet可以被看做是一种特殊的图表生成引擎,只
是每一个Servlet只能生成一种特定类型的图表而已。
我们在第6章、第7章,也多次调用绘制三角形的TriangleServlet来生成坐标轴上的箭
头 , 也 多 次 调 用 绘 制 平 行 四 边 形 的 S e r v l e t( \ c h a p 0 5 \ F i g 5 . 9 \
DrawParallelogram.java)来绘制具有3D立方体及3D坐标的横轴与纵轴。可见,如果编写
了一个可以生成某种类型图表的Servlet,就可以在其他程序或图表生成引擎中进行调用,
从而达到编写图表生成引擎的目的。也就是说,可以通过编写Servlet的途径来达到编写图
表生成引擎的目的。
Servlet部署比较麻烦,如果要部署Servlet,我们必须修改WEB-INF\web.xml文档,将
该Servlet注册在Web服务器中。如果改写的web.xml文档有错误,则可能导致整个Web服务
器瘫痪或无法启动。基于上述原因,最好将实现上述图表生成功能的Servlet改写成
JavaBean的形式来实现图表引擎设计。JavaBean的编写具有比Servlet简单、性能相同,而
且不需要改写web.xml等优点。
提示:本章建议读者使用Resin作为JSP/Servlet的容器。在修改了Java Bean的源代码
后,Resin不需要重新启动,一旦源代码更新,将自动进行编译,便于我们调试程序。如
果读者使用Tomcat,在测试或运行本章例程的过程中,无法获得正确的运行结果,也请换
用Resin服务器。
下面,我们编写一个绘制矩形的JavaBean,了解基于JavaBean的Web图表引擎的实现
方法。先请看程序的运行结果。首先在WEB-INF/classes目录下,新创建一个目录,该新
建目录名为chart。然后把源程序WebChartBean1.java(\chap09\Fig9.1)复制到WEB- INF\
c l a s s e s \ c h a r t下 。 启 动 R e s i n服 务 器 运 行 I E, 在 地 址 栏 中 输 入 : h t t p : / / l o c a l h o s t : 8 8 8 8 /
chap09/Fig9.1/beanChart1.htm,程序运行结果如图9.1所示。
或 者 , 在 I E地 址 栏 中 输 入 : h t t p : / / l o c a l h o s t : 8 8 8 8 / c h a p 0 9 / F i g 9 . 1 /
beanChart1.jsp,运行结果如图9.2所示。
两者只是调用图表的方式不同。
WebChartBean1.java的源程序与前面学过的Servlet很相似。
程序第4行:
package chart;
476
第 9 章 Web 图表生成引擎的设计思路与实现
图9.1 JavaBeans生成Web图表1
图9.2 JavaBeans生成Web图表2
限定将本程序放置在WEB-INF/classes/chart目录下。这也是为什么要先创建一个
“chart”子目录的原因。
程序第15行:
public class WebChartBean1 extends HttpServlet
477
精通 Java Web 动态图表编程
注意,WebChartBean1类继承了HttpServlet类,因此程序第11行~第12行:
import javax.servlet.*;
import javax.servlet.http.*;
将相关的Servlet类引入。
程序第17行:
protected HttpServletResponse response;
定义了一个HttpServletResponse类对象response,表示向客户端返回的数据对象。
程序第19行~第20行:
static int width = 500, height = 400;
static int plotWidth = 400, plotHeight = 300;
整型变量width表示整个图表的宽度为500像素,height表示整个图表的高度像素。
plotWidth表示图表绘图区域的宽度,plotHeight表示图表绘图区域的高度为300像素。本章
例程绘制图表的相关数据是固定不变的。
程序第28行:
public WebChartBean1(){}
声明了本JavaBean的默认构造器,默认的构造器是不进行任何工作的。
程序第30行~第34行:
public WebChartBean1(HttpServletResponse response)
{
this.response = response;
this.initialize();
}
声明了另一个版本的构造器,该构造器接收一个Servlet类的对象response。首先将参
数提供的res ponse赋值给JavaBean程序第17行定义的系统变量response,然后,调用
JavaBean中程序第37行~第62行的initialize方法,对图表进行处理,包括获取Graphics2D
对象、初始化背景、绘制图表标题等。
程序第64行~第83行:
public void getChart()
{
// 部署图形环境
g2d.dispose();
// 输出图像到 WEB 页面
try
{
this.response.reset();
this.response.setContentType("image/png");
OutputStream sos = response.getOutputStream();
478
剩余24页未读,继续阅读
资源评论
tj071629
- 粉丝: 4
- 资源: 86
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功