• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JavaWeb实现图形报表折线图的方法

    本文实例讲述了JavaWeb实现图形报表折线图的方法。分享给大家供大家参考,具体如下:

    步骤说明:

    1. 导入log4j.jar,jfreechart-0.9.18.jar,jdom.jar,jcommon-0.9.3.jar四个jar包

    2. 在某个包中写入Tuxin.Java类

    package com.mengya.util;
    import java.awt.Color;
    import java.awt.Font;
    import java.io.PrintWriter;
    import javax.servlet.http.HttpSession;
    import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartRenderingInfo;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.StandardLegend;
    import org.jfree.chart.axis.NumberAxis;
    import org.jfree.chart.entity.StandardEntityCollection;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.chart.renderer.LineAndShapeRenderer;
    import org.jfree.chart.servlet.ServletUtilities;
    import org.jfree.data.DefaultCategoryDataset;
    public class Line
    {
      private DefaultCategoryDataset dataset = new DefaultCategoryDataset();
      public void setValue(int sum, String line, String wfield)
      {
       dataset.addValue(sum, line, wfield);
      }
      public String generateLineChart(String title,String wfield, String hfield, HttpSession session, PrintWriter pw,int wPhoto,int hPhoto)
      {
       String filename = null;
      try
       {
         final JFreeChart chart = ChartFactory.createLineChart
          (
           title, // 图表标题
           wfield, // 横轴的显示标签
           hfield, // 纵轴的显示标签
           dataset, //数据集
           PlotOrientation.VERTICAL, // 图表方向:水平、垂直
           true, // 是否显示图例
           true, // 是否生成提示工具 tooltips
           false // 是否生成URL链接
         );
         StandardLegend legend = (StandardLegend) chart.getLegend();//生成图例
         legend.setDisplaySeriesShapes(true);//显示图例形状
         legend.setShapeScaleX(1.5);//设置图例X轴的大小
         legend.setShapeScaleY(1.5);//设置图例Y轴的大小
         legend.setDisplaySeriesLines(true);//显示图示项的横线
         //设置图片的背景色
         chart.setBackgroundPaint(new java.awt.Color(189,235,255));
         CategoryPlot plot = (CategoryPlot) chart.getPlot();
         plot.setBackgroundPaint(new Color(239,251,255));//生成图片中墙体的背景色
         plot.setRangeGridlinePaint(Color.black);//生成图片中格子线的颜色
         // 没有数据时显示的消息
         plot.setNoDataMessage("没有相关统计数据");
         plot.setNoDataMessageFont(new Font("黑体", Font.CENTER_BASELINE, 16));
         plot.setNoDataMessagePaint(Color.RED);
         NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
         rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());//设置图中的刻度线的单位
         rangeAxis.setAutoRangeIncludesZero(true);//强制在自动选择的数据范围中包含0
         LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
         renderer.setDrawShapes(true);//折线的数据点根据分类使用不同的形状
         renderer.setItemLabelsVisible(true);//显示每个点上的数据值的提示工具,数据标签是否可见
         ChartRenderingInfo info = new ChartRenderingInfo(new
           StandardEntityCollection());
         //500是图片长度,300是图片高度
         filename = ServletUtilities.saveChartAsPNG(chart, wPhoto, hPhoto, info, session);
         ChartUtilities.writeImageMap(pw, filename, info);
         pw.flush();
       }
       catch(Exception e)
       {
       e.printStackTrace();
       }
       return filename;
      }
    }
    
    

    3. 配置web.xml,在web.xml中添加如下内空:

    servlet>
     servlet-name>DisplayChart/servlet-name>
     servlet-class>
      org.jfree.chart.servlet.DisplayChart
     /servlet-class>
    /servlet>
    servlet-mapping>
     servlet-name>DisplayChart/servlet-name>
     url-pattern>/DisplayChart/url-pattern>
    /servlet-mapping>
    
    

    4. 在要显示图片的jsp中添加内容:

    %@ page language="java" import="java.util.*,com.mengya.util.Line,com.mengya.bean.StuBean" pageEncoding="gbk"%>
    %@page import="java.io.PrintWriter;"%>
    !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    html>
     head>
     title>折线图/title>
     /head>
     body>
     %
      Line tt = new Line();
      //第一条折线
      List ar = (ArrayList) request.getAttribute("arr1");
      for (int i = 0; i  ar.size(); i++) {
      StuBean bean = (StuBean) ar.get(i);
      tt.setValue((int) bean.getS_money(), "张明学个人消费比例图", bean.getS_month()+ "");
      }
      //条二条折线
      ar = (ArrayList) request.getAttribute("arr2");
      for (int i = 0; i  ar.size(); i++) {
      StuBean bean = (StuBean) ar.get(i);
      tt.setValue((int) bean.getS_money(), "梦娅个人消费比例图", bean.getS_month()+ "");
      }
      //说明:tt.setValue(int a,String b,String c)
      //其中的第二个参数b是该条折线的名字,每条折线的名字最好不要一样.
      String filename = tt.generateLineChart("个人消费比例图", "月   份",
       "费   用", session, new PrintWriter(out), 800, 550);
      String graphURL = request.getContextPath()
       + "/DisplayChart?filename=" + filename;
     %>
     P ALIGN="CENTER">
     img src="%=graphURL %>" width=800 height=550 border=1 usemap="#%=filename%>">
     /body>
    /html>
    
    

    希望本文所述对大家JSP程序设计有所帮助。

    您可能感兴趣的文章:
    • 水晶报表asp.net的webform下基本用法实例
    • Web打印解决方案之证件套打的实现思路
    • 基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
    • 网页WEB打印控件制作
    • 利用javascript实现web页面中指定区域打印
    • js控制web打印(局部打印)方法整理
    • web的各种前端打印方法之jquery打印插件jqprint实现网页打印
    • web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
    • Web打印解决方案之普通报表打印功能
    上一篇:jsp页面中两种方法显示当前时间的简单实例
    下一篇:JSP导出Excel文件的方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JavaWeb实现图形报表折线图的方法 JavaWeb,实现,图形,报表,折,