轻松使用JSP生成饼图

2016-01-29 12:08 192 1 收藏

轻松使用JSP生成饼图,轻松使用JSP生成饼图

【 tulaoshi.com - Java 】

 

作者: BUILDER.COM

JSP提供了很多简单实用的工具,其中包括从数据库中读出数据,发送数据,并能够把结果显示在一个饼状图形。现在让我们看看这一简单而实用的方法。

你所需要的东西
 

转自:动态网制作指南 www.knowsky.com

为了能正确运行这一文章相关的范例,你必须需要JDK 1.2或更高的版本、一个关系数据库管理系统、一个JSP网络服务器。我都是在Tomcat调试这些例子,同时我也使用了Sun Java 2 SDK发布的com.sun.image.codec.jpegclasses。

数据库设计
假设你在一家从事销售新鲜水果的公司上班,公司出售的水果包括:苹果、桔子、葡萄。现在你的老板想用一个饼状图形显示每一种水果的总出售量,饼状图形能使每一种产品的销售情况一目了然,老板可以迅速掌握公司的产品成交情况。

表A使用了本文中的两种数据库列表。第一种列表(Products)包含所有销售产品的名称;第二种列表(Sales)包含每一种产品对应的销售量。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/java/)

产品(Products)列表包含productID和productname两个域。销售(Sales)列表包含saleID, productID,以及总额。销售列表中的productID提供了这两个列表之间的关联。销售列表中的总额包含了每一次出售的现金数额,这些数额以浮点型数据出现。

转自:动态网制作指南 www.knowsky.com

表B中的getProducts()方法连接了两个数据库,并把所有的产品名称保存在数组中,我设置以下的数据库规则:

ProductID在产品列表中最独特,也是最关键;
ProductID对于第一个记录的值为0;
所有之后的连续的记录都是累加的,所以第二个记录的productID为1,第三个记录的productID为2,以此类推。
这些数据库规则允许在product数组中存储数据,如下所示:

arr[rs.getInt("productID")] = rs.getString("productname");

一些数据库管理系统在缺省情况下就允许数据的自动累加或者自动排序。当你在设计数据库时,一定先查明你的数据库管理系统遵循哪些规则,比如自动累加,自动排序等。
 

获取总额销售量
 

在多数情况下,销售列表中会有很多个记录,所以访问数据库的快捷性和高效性显得非常重要。现在我们只需要访问数据库中每一种产品的总额销售量。

表C中的getSales()方法与数据库连接并返回一个数组,这个数组包含每一种产品的总额出售量。当getSales()遍历所有的记录后,它只存储的是每一种产品新的出售量:

转自:动态网制作指南 www.knowsky.com

int product = rs.getInt("productID");
arr[product] += rs.getFloat("amount");

 

pieColor对象
饼状图形上的每一种产品应该以不同的颜色显示。为了达到这一目的,我们建立一个pieColor对象(如表D)所示,这一对象包含有关颜色的数组:

Color pieColorArray[] = {new Color(210,60,60), new Color(60,210,60)…}

pieColor类定义了一个setNewColor()的方法,这一方法能够使curPieColor和索引递增,同时它可以检查索引不要超过边界范围,即采用的方法是:如果curPieColor过大即赋0值。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/java/)

更有效的是,setNewColor()循环每一种颜色后,并在第一种颜色下执行以下的代码:

curPieColor++;
if(curPieColor = pieColorArray.length)
{curPieColor = 0;}

 

RenderingHints和antialiasing类
java.awt.RenderingHints类定义了很多方法以显示二维图形,包括alpha_interpolation, 抖动,以及antialiasing方法。RenderingHints有助于决定图形如何显示以及图形如何达到最佳处理。

转自:动态网制作指南 www.knowsky.com

为了能以平滑显示,可以使用antialiasing方法来处理饼状图形。Antialiasing是一种图形的平滑处理方法。其算法是选择一个特殊象素的颜色值并取代交叉处的象素,从而能够使线条交叉处得到平滑化。

图A说明了antialiasing方法的效果。可以看出使用antialiasing方法的饼状图形的线条交叉处变得很平滑。

图A

转自:动态网制作指南 www.knowsky.com

同时,还可以建立一个RenderingHints对象,并传递到Graphics2D setRenderingHints()方法,如下所示:

RenderingHints renderHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
    Re

来源:https://www.tulaoshi.com/n/20160129/1484773.html

延伸阅读
标签: Java JAVA基础
  问题的由来 前不久做了一个通过JSP生成PDF报表的小项目,算得上开了一次眼界。企业的一些信息通过网络形成Html报表,虽然IE可以直接打印显示在其中的内容,但是从界面上来看,如果直接将Html的显示结果打印出来,显得不太美观。如果将它转成PDF文件再打印,则打印效果会好很多。 iText简介 iText是一个开放源码的Java类...
标签: Java JAVA基础
JSP actions 使用您可以动态的插入一个文件,重用JavaBeans组件,前进到另一个页面,或为Java 插件生成一个HTML。可以使用的action 有: (1) jsp:include --在页面被请求时包含进一个文件。 (2) jsp:useBean--找到或实例化一个JavaBean。 (3) jsp:setProperty--设置一个JavaBean属性。 (4) jsp:getProperty...
标签: Java JAVA基础
  前言     凡是有JSP编写经验的人都有JSP调试困难的体会。由于自动化调试工具的缺乏使得在调试JSP时不得不在文件中大量的使用打印语句。这种做法对于定位JSP范围内的错误是一个简单有效的手段,但如何快速有效的定位在JSP中调用的对象的内部错误就显得有点力不从心了。因为这样将不得不频繁地编译、发布、启停服务器,给...
标签: Java JAVA基础
  Eclipse作为一个java应用的IDE,使用非常方便,但是对于Jsp的开发支持还显得不够,在这里向大家推荐一个eclipse的plugins来协助JSP开发。这个名称叫lomboz,不但支持JSP语法高亮显示,还有Code Assist功能,可以与Jbuilder媲美。下面简要介绍一下eclipse2.1结合Tomcat开发Jsp的过程。 开发环境 软件 名称安装路径下载网站j2sdk1.4.1...
标签: Java JAVA基础
  jsp:useBean Action 的使用 一、 语法: <jsp:useBean id="beanInstanceName" scope="page|request|session|application" { class="package.class" | type="package.class" | class="package.class" type="package.class" | beanName="{package.class | <...