想使用servlet方式实现web显示饼图的功能,数据从数据库中读取。
java端程序
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException{
res.setContentType("image/jpeg");
DefaultPieDataset data = createDataset();
JFreeChart chart = createChart(data); ChartUtilities.writeChartAsJPEG(res.getOutputStream(),
100,chart,400,300,null);
}
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>/servlet/DisplayChart</url-pattern>   
</servlet-mapping>但是,jsp该怎么实现显示这个饼图呢??

解决方案 »

  1.   

    http://download.csdn.net/source/1667987
    看了这个估计你就知道了
      

  2.   

    我的资源里有个 jfreechart 作的图表源码,下载后即可使用,楼主可以去看看
      

  3.   

    我的csdn资源首页
      

  4.   

    你这种是bean的方式,我的程序可以实现。现在想用servlet方式来实现,java程序都写好了,只是不知道web.xml的映射如何配置,以及jsp怎样写才能展示出来。
      

  5.   

    楼主,我写了一个很精简的代码,是在servlet中写的【既然servlet中可以,那么jsp中也是一样】,配置跟普通的servlet配置一样,并不会多出其他的配置:package com.servlet;import java.awt.Color;
    import java.io.IOException;
    import java.io.OutputStream;import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;import org.jfree.chart.ChartFactory;
    import org.jfree.chart.ChartUtilities;
    import org.jfree.chart.JFreeChart;
    import org.jfree.chart.axis.CategoryAxis;
    import org.jfree.chart.axis.CategoryLabelPositions;
    import org.jfree.chart.plot.CategoryPlot;
    import org.jfree.chart.plot.PlotOrientation;
    import org.jfree.data.category.DefaultCategoryDataset;public class TestServlet2 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    //默认的类别数据集
    DefaultCategoryDataset dataset = new DefaultCategoryDataset();

    int[] cols = new int[]{200,390,550,700,1200};
    String[] rows = new String[]{"2010","2011","2012","2013","2014"};
    //填充数据集
    for(int i=0;i<cols.length;i++){
    dataset.setValue(cols[i], "公司业绩", rows[i]+"");
    }

    //创建图表
    JFreeChart chart = ChartFactory.createBarChart("2010-2014年来公司业绩图", "", "", dataset, PlotOrientation.VERTICAL, true, true, false);
    chart.setBackgroundPaint(Color.white);//图表的背景色(通常为白色)

    //获得plot(此对象通常用于绘制图表区域属性)
    CategoryPlot plot = chart.getCategoryPlot();
    //Axis对象通常用于设置X轴
    CategoryAxis axis = plot.getDomainAxis();
    //axis.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
    axis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
    //设置图表区域属性
    plot.setBackgroundPaint(Color.LIGHT_GRAY);
    plot.setRangeGridlinePaint(Color.white);
    plot.setDomainGridlinePaint(Color.white);
    plot.setDomainGridlinesVisible(true);

    OutputStream out = response.getOutputStream();
    response.setContentType("image/png");
    ChartUtilities.writeChartAsPNG(out, chart, 700, 400);
    } public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    this.doGet(request, response);
    }
    }web.xml配置如下:<?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <servlet>
    <servlet-name>TestServlet2</servlet-name>
    <servlet-class>com.servlet.TestServlet2</servlet-class>
    </servlet>

    <servlet-mapping>
    <servlet-name>TestServlet2</servlet-name>
    <url-pattern>/TestServlet2</url-pattern>
    </servlet-mapping>

      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    运行此程序需要2个jar包,分别为:jcommon.jar、jfreechart.jar,怎么运行不需要我说了吧。
      

  6.   

    回config_man(我只不过路过而已) :
    1楼我没有表达清楚,抱歉。
    就是在servlet方式下,java端后台程序以及web.xml我做那样的设置,jsp那边不知到怎样写来接收servlet过来的那个流。
    简而言之,不知道这个jsp怎么写。