ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:92.23KB ,
资源ID:10955400      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10955400.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(JSP中生成数据统计图表的源码.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

JSP中生成数据统计图表的源码.docx

1、JSP中生成数据统计图表的源码JSP中生成数据统计图表的源码马建成日常我们在做一个项目的时候都会遇到这样的需求,根据用户在eb页面上向服务器提交的数据,根据条件从数据库中取出相应的一系列数据后,要能在web浏览器上以图表的形式显示结果,形成直观的对比,于是就要我们实现饼图、柱图、折线图的动态生成。我在学习JSP的过程中使用了JFreeChart这么一个东西。JFreeChart 是一个开源的 JAVA 项目,它主要用来开发各种各样的图表,这些图表包括:饼图、柱状图 ( 普通柱状图以及堆栈柱状图 ) 、线图、区域图、分布图、混合图、甘特图以及一些仪表盘等等。在这些不同式样的图表上可以满足目前商业

2、系统的要求。JFreeChart 是一种基于JAVA语言的图表开发技术。JFreeChart可用于Servlet、JSP、Applet、Java Appication环境中,通过JDBC可动态显示任何数据库数据。在使用和学习的过程中获得了一些测试心得,同时展示几个例子同大家共同交流学习。为方便简化实例,我门所有的数据使用静态的数据测试。一、服务配制首先我们必须有一个Jsp能够运行的环境,本此采用的开发环境是:Tomcat5.5+Jdk1.5。在要发布W程序目录的WEB-INFlib下拷入jfreechart-1.0.1.jar的jar包(根据的版本的不同文件名会有差异),对WEB-INFWeb

3、.xml做如下配置。 DisplayChart org.jfree.chart.servlet.DisplayChart DisplayChart /servlet/DisplayChart在做好以上工作后我们可以动手做第一个实例了。二、需要使用的JavaBean在Jsp页面生成之前,需要写一个JavaBean,当然也可以直接将代码写在Jsp文件里。源码如下:/* * Title 统计分析实例 * author: * * Copyright: Copyright (c) 2008 */package com.test.chart;import java.awt.BasicStroke;impo

4、rt java.awt.Color;import java.awt.Font;import java.awt.Polygon;import java.awt.Shape;import java.awt.geom.Rectangle2D;import java.io.*;import javax.servlet.http.HttpSession;import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartRenderingInfo;import org.jfree.chart.ChartUtilities;import org

5、.jfree.chart.JFreeChart;import org.jfree.chart.axis.AxisLocation;import org.jfree.chart.axis.NumberAxis;import org.jfree.chart.entity.StandardEntityCollection;import org.jfree.chart.labels.ItemLabelPosition;import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;import org.jfree.chart.plot.

6、CategoryPlot;import org.jfree.chart.plot.DefaultDrawingSupplier;import org.jfree.chart.plot.DrawingSupplier;import org.jfree.chart.plot.PiePlot3D;import org.jfree.chart.plot.PlotOrientation;import org.jfree.chart.renderer.category.BarRenderer3D;import org.jfree.chart.renderer.category.LineAndShapeRe

7、nderer;import org.jfree.chart.servlet.ServletUtilities;import org.jfree.chart.title.TextTitle;import org.jfree.data.category.*;import org.jfree.data.general.DefaultPieDataset;import org.jfree.chart.labels.StandardPieToolTipGenerator;public class TestChart /* * 人员构成的分析饼图 * return */ public String Ryg

8、cPieChart(HttpSession session,PrintWriter pw,int picwidth,int picheight) String filename = ; try DefaultPieDataset dataset=new DefaultPieDataset(); /初始化数据 dataset.setValue(接触网工,400); dataset.setValue(变电工,300); dataset.setValue(电力工,200); dataset.setValue(其它,100); PiePlot3D plot = new PiePlot3D(datase

9、t);/生成一个3D饼图 /plot.setURLGenerator(new StandardPieURLGenerator(DegreedView.jsp);/设定图片链接 JFreeChart chart = new JFreeChart(,JFreeChart.DEFAULT_TITLE_FONT, plot, true); chart.setBackgroundPaint(java.awt.Color.white);/可选,设置图片背景色 chart.setTitle(单位人员构成统计);/可选,设置图片标题 plot.setToolTipGenerator(new StandardP

10、ieToolTipGenerator(); StandardEntityCollection sec = new StandardEntityCollection(); ChartRenderingInfo info = new ChartRenderingInfo(sec); /picwidth是图片长度,picheight是图片高度 filename = ServletUtilities.saveChartAsPNG(chart,picwidth,picheight,info,session); ChartUtilities.writeImageMap(pw,filename,info,f

11、alse); pw.flush(); catch(Exception e) filename = error.png; return filename; /* * 人员车间分布的分析柱图 * return */ public String RyfbBarChart(HttpSession session,PrintWriter pw, int picwidth,int picheight) String title = 车间人员分布分析图; String htitle = 车间名称; String vtitle = 人员数量; String filename = null; try /数据初始

12、化 DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue( 150 , 接触网工 , 车间1 ); dataset.addValue( 530 , 变电工 , 车间1 ); dataset.addValue( 160 , 电力工 , 车间1 ); dataset.addValue( 120 , 接触网工 , 车间2 ); dataset.addValue( 230 , 变电工 , 车间2 ); dataset.addValue( 360 , 电力工 , 车间2 ); dataset.add

13、Value( 600 , 接触网工 , 车间3 ); dataset.addValue( 430 , 变电工 , 车间3 ); dataset.addValue( 560 , 电力工 , 车间3 ); JFreeChart chart = ChartFactory.createBarChart3D(title,htitle,vtitle, dataset,PlotOrientation.VERTICAL,true,true,true); /title标题,htitle水平标题,vtitle垂直标题 chart.setBackgroundPaint(java.awt.Color.white);/

14、可选,设置图片背景色 Font font = new Font(黑体,Font.CENTER_BASELINE,20); /设置图片标题的字体和大小 TextTitle _title = new TextTitle(title); _title.setFont(font); chart.setTitle(_title); CategoryPlot plot = chart.getCategoryPlot(); BarRenderer3D renderer = new BarRenderer3D(); plot.setRangeAxisLocation(AxisLocation.BOTTOM_O

15、R_LEFT); final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setRange(0.0, 1000.0);/垂直坐标的数据上下限 rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits(); renderer.setSeriesPaint(0, Color.GREEN); /设置每种结果代表的柱的 Outline 颜色 renderer.setSeriesOutlinePaint(0, Color.BLACK); /设置

16、每个地区所包含的平行柱的之间距离 renderer.setItemMargin(0.1); /显示每个柱的数值,并修改该数值的字体属性 renderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator(); renderer.setItemLabelFont(new Font(黑体,Font.PLAIN,12); renderer.setItemLabelsVisible(true); ItemLabelPosition itemlabelposition = new ItemLabelPosition(); rende

17、rer.setPositiveItemLabelPosition(itemlabelposition); plot.setRenderer(renderer); plot.setForegroundAlpha(0.4f);/设置柱的透明度 /把生成的图片放到临时目录 ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection(); filename = ServletUtilities.saveChartAsPNG(chart,picwidth,picheight,info,session); Ch

18、artUtilities.writeImageMap(pw,filename,info,true); pw.flush(); catch(Exception e) filename = error.png; return filename; /* * 上半年生产任务分析图 * return */ public String RyqsSLineChart(HttpSession session,PrintWriter pw,int picwidth,int picheight) String title = 上半年生产任务分析图; String htitle = 月份; String vtitl

19、e = 生产数量; String filename = null; try DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.setValue(50,变电所,一月); dataset.setValue(70,变电所,二月); dataset.setValue(60,变电所,三月); dataset.setValue(80,变电所,四月); dataset.setValue(55,变电所,五月); dataset.setValue(50,变电所,六月); dataset.setValue(70,接触网,一

20、月); dataset.setValue(90,接触网,二月); dataset.setValue(65,接触网,三月); dataset.setValue(100,接触网,四月); dataset.setValue(60,接触网,五月); dataset.setValue(80,接触网,六月); JFreeChart chart = ChartFactory.createLineChart(title,htitle,vtitle, dataset,PlotOrientation.VERTICAL,true,true,true); chart.setBackgroundPaint(java.a

21、wt.Color.white);/可选,设置图片背景色 Font font = new Font(黑体,Font.CENTER_BASELINE,20); /设置图片标题的字体和大小 TextTitle _title = new TextTitle(title); _title.setFont(font); chart.setTitle(_title); final Shape shapes = new Shape3; int xpoints; int ypoints; xpoints = new int -3, 3, -3; ypoints = new int -3, 0, 3; shape

22、s0 = new Polygon(xpoints, ypoints, 3); shapes1 = new Rectangle2D.Double(-2, -3, 3, 6); xpoints = new int -3, 3, 3; ypoints = new int 0, -3, 3; shapes2 = new Polygon(xpoints, ypoints, 3); final DrawingSupplier supplier = new DefaultDrawingSupplier( DefaultDrawingSupplier.DEFAULT_PAINT_SEQUENCE, Defau

23、ltDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE, DefaultDrawingSupplier.DEFAULT_STROKE_SEQUENCE, DefaultDrawingSupplier.DEFAULT_OUTLINE_STROKE_SEQUENCE, shapes ); final CategoryPlot plot = chart.getCategoryPlot(); plot.setDrawingSupplier(supplier); plot.getRenderer().setSeriesStroke( 0, new BasicSt

24、roke( 2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f, new float 10.0f, 6.0f, 0.0f ) ); plot.getRenderer().setSeriesStroke( 1, new BasicStroke( 2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f, new float 6.0f, 6.0f, 0.0f ) ); plot.getRenderer().setSeriesStroke( 2, new BasicStroke(

25、 2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 1.0f, new float 2.0f, 6.0f, 0.0f ) ); final LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer(); /renderer.setDrawShapes(true); renderer.setItemLabelsVisible(true); /renderer.setLabelGenerator(new StandardCategoryLabelGenera

26、tor(); final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits(); rangeAxis.setAutoRangeIncludesZero(false); rangeAxis.setUpperMargin(0.12); /显示每个柱的数值,并修改该数值的字体属性 renderer.setItemLabelGenerator(new StandardCategoryItemLabelGener

27、ator(); renderer.setItemLabelFont(new Font(黑体,Font.PLAIN,12); renderer.setItemLabelsVisible(true); ItemLabelPosition itemlabelposition = new ItemLabelPosition(); renderer.setPositiveItemLabelPosition(itemlabelposition); plot.setRenderer(renderer); /把生成的图片放到临时目录 ChartRenderingInfo info = new ChartRen

28、deringInfo(new StandardEntityCollection(); filename = ServletUtilities.saveChartAsPNG(chart,picwidth,picheight,info,session); ChartUtilities.writeImageMap(pw,filename,info,true); pw.flush(); catch (Exception e) filename = error.png; return filename; 三、Jsp页面上一步写好了JavaBean,在jsp页面可以这样使用,见源码: % TestChart webchart = new TestChart(); String filename,graphURL; /*饼图 filename = webchart.RygcP

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1